diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4bd6f8c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +allievi + diff --git a/assets/tmux/journalctl.conf b/assets/tmux/journalctl.conf new file mode 100644 index 0000000..d8a9d0d --- /dev/null +++ b/assets/tmux/journalctl.conf @@ -0,0 +1,4 @@ +splitw -h +send-keys "journalctl -f -u sshd" Enter +selectp -t 0 + diff --git a/dispensa/cybersecurity_linux.md b/dispensa/cybersecurity_linux.md index cb8574a..88efd5e 100644 --- a/dispensa/cybersecurity_linux.md +++ b/dispensa/cybersecurity_linux.md @@ -701,7 +701,10 @@ Ecco alcuni esempi di come utilizzare `OnCalendar`: ```ini OnCalendar=*-01-01 00:00:00 ``` -- Puoi anche combinare questi campi per specificare eventi più precisi. Ad esempio, per eseguire un evento ogni mercoledì alle 17:48:00, puoi usare: +- Puoi anche combinare questi campi per specificare eventi più + precisi. Ad esempio, per eseguire un evento ogni mercoledì alle + 17:48:00, puoi usare: + ```ini OnCalendar=Wed *-*-* 17:48:00 ``` @@ -884,3 +887,185 @@ anche se il PC è spento al momento previsto per il backup [1]. - [13] https://blog.devgenius.io/devops-in-linux-systemd-timer-4e95f57b6d71 - [14] https://dashdash.io/5/systemd.timer - [15] https://techviewleo.com/configuring-cron-jobs-in-linux-using-systemd-timers/ + +# Linux hardening + +Il "Linux Hardening" è un processo fondamentale per migliorare la +sicurezza dei sistemi Linux, riducendo la superficie di attacco e +limitando i danni che possono essere causati da attacchi +informatici. Questo processo coinvolge l'ottimizzazione della +configurazione del sistema per operazioni sicure e la protezione dei +dati, seguendo tre regole principali: rimuovere funzionalità non +necessarie, applicare patch e aggiornamenti tempestivamente e +mantenere impostazioni di configurazione sicure [2]. + +Linux Hardening è essenziale perché i sistemi Linux, specialmente +quelli preinstallati, spesso vengono forniti con configurazioni +predefinite che potrebbero non essere ottimizzate per la +sicurezza. Questo include credenziali predefinite, configurazioni non +ottimizzate e software non aggiornato, che rappresentano potenziali +punti di ingresso per gli attaccanti [3]. + +Il processo di hardening richiede un'attenta considerazione delle +componenti del sistema, comprese le impostazioni di sicurezza +specifiche per ciascuna, e l'implementazione di misure proattive per +prevenire attività malevole. Questo può includere l'uso di benchmark +dell'industria, come quelli forniti dal Center for Internet Security +(CIS) e dal Security Technical Implementation Guide (STIG), per +guidare le configurazioni sicure [1][2]. + +## Riferimenti + +- [1] https://github.com/trimstray/the-practical-linux-hardening-guide#:~:text=Simply%20speaking%2C%20hardening%20is%20the,suspicious%20activity%20in%20the%20future. +- [2] https://www.netwrix.com/linux_hardening_security_best_practices.html +- [3] https://cleverism.com/linux-hardening-how-its-done/ +- [4] https://ubuntu.com/blog/what-is-system-hardening-definition-and-best-practices +- [5] https://mattiazignale.medium.com/introduction-to-linux-security-hardening-635af8e6e885 +- [6] https://intezer.com/blog/cloud-security/top-10-linux-server-hardening-and-security-best-practices/ +- [7] https://dev.to/terceranexus6/introduction-to-linux-hardening-5aj1 +- [8] https://tuxcare.com/blog/linux-system-hardening-top-10-security-tips/ +- [9] https://www.pluralsight.com/blog/it-ops/linux-hardening-secure-server-checklist +- [10] https://documentation.sas.com/doc/en/bimtag/9.4/p0xodkl4216thhn1g935xtu06bl2.htm + +## Crittografia dei dischi + +Il comando `cryptsetup` è uno strumento utilizzato per gestire la +crittografia dei dischi in Linux. Si utilizza principalmente per la +creazione, la gestione e l'accesso a volumi crittografati, come quelli +creati con LUKS (Linux Unified Key Setup). Questo strumento è +fondamentale per l'implementazione della crittografia a livello di +disco, consentendo agli utenti di proteggere i dati sensibili +memorizzati sui loro dispositivi di archiviazione. + +Ecco alcuni esempi di utilizzo del comando `cryptsetup`: + +1. **Creazione di un volume crittografato LUKS**: ```bash sudo + cryptsetup luksFormat /dev/sdX ``` Questo comando inizializza un + volume crittografato LUKS sul dispositivo specificato + (`/dev/sdX`). Dopo l'esecuzione, verrà richiesta una passphrase che + sarà necessaria per accedere al volume crittografato. + +2. **Apertura di un volume crittografato LUKS**: ```bash sudo + cryptsetup luksOpen /dev/sdX my_encrypted_volume ``` Questo comando + apre il volume crittografato LUKS e lo rende accessibile tramite un + nome di dispositivo mappato, in questo caso + `my_encrypted_volume`. Dopo l'apertura, verrà richiesta la + passphrase precedentemente impostata. + +3. **Chiusura di un volume crittografato LUKS**: ```bash sudo + cryptsetup luksClose my_encrypted_volume ``` Questo comando chiude + il volume crittografato LUKS, rendendolo non più accessibile. + +4. **Decrittografia di un disco crittografato LUKS**: + ```bash + sudo cryptsetup luksOpen /dev/sdX tmpData + sudo mount /dev/mapper/tmpData /mnt + ``` + Questo esempio mostra come decrittografare un disco crittografato LUKS e montarlo in un punto di montaggio specificato (`/mnt`). Dopo aver terminato l'uso del disco, è possibile smontarlo e chiudere il volume crittografato con i seguenti comandi: + ```bash + sudo umount /mnt + sudo cryptsetup luksClose tmpData + ``` + +Il comando `cryptsetup` è uno strumento potente e versatile che offre +una vasta gamma di opzioni per la gestione della crittografia dei +dischi in Linux. È particolarmente utile per chi desidera proteggere i +dati sensibili memorizzati sui propri dispositivi di archiviazione, +garantendo che siano accessibili solo a chi conosce la passphrase +corretta. + +### Riferimenti + +- [1] https://stackoverflow.com/questions/22617725/cryptsetup-offline-attack-with-list-of-known-keys-possible +- [2] https://askubuntu.com/questions/316486/problems-with-cryptsetup-during-update +- [3] https://www.reddit.com/r/pop_os/comments/n7qsqb/how_to_fix_cryptsetup_waiting_for_encrypted/ +- [4] https://unix.stackexchange.com/questions/399620/how-to-decrypt-a-hard-drive-with-luks-encryption +- [5] https://oldforum.puppylinux.com/viewtopic.php?t=117274 +- [6] https://forum.openwrt.org/t/cryptsetup-block-info-problem/70161 +- [7] https://superuser.com/questions/431820/how-to-change-pass-phrase-of-full-disk-encryption +- [8] https://xo.tc/full-disk-encryption-on-linux.html +- [9] https://wiki.archlinux.org/title/Dm-crypt/Device_encryption + +## Uncomplicated firewall (`ufw`) + +UFW (Uncomplicated Firewall) è uno strumento di configurazione del +firewall che funziona sopra `iptables`. Fornisce un'interfaccia +semplificata per configurare casi d'uso comuni del firewall tramite la +riga di comando. UFW è progettato per rendere la configurazione del +firewall più semplice e intuitiva, rendendolo adatto anche per utenti +meno esperti. + +### Come configurare un firewall con UFW + +1. **Installazione di UFW**: + - Su Arch Linux, UFW può essere installato con il comando: + ```bash + sudo pacman -S ufw + ``` + - Dopo l'installazione, è necessario avviare e abilitare il + servizio UFW: ```bash sudo systemctl start ufw sudo systemctl + enable ufw ``` Questo passaggio è particolarmente importante su + Arch Linux, dove UFW non viene avviato automaticamente [2]. + +2. **Abilitazione di UFW**: + - Per abilitare UFW e applicare le regole del firewall, esegui: + ```bash + sudo ufw enable + ``` + - Se stai connettendoti tramite SSH, assicurati di consentire + l'accesso alla porta SSH (di solito la porta 22) per evitare di + bloccarti fuori dal server [4]. + +3. **Configurazione delle regole di default**: + - UFW blocca tutte le connessioni in entrata e consente tutte le connessioni in uscita di default. Puoi modificare queste regole di default con: + ```bash + sudo ufw default deny incoming + sudo ufw default allow outgoing + ``` + - Questo significa che chiunque tenti di raggiungere il tuo server + non sarà in grado di connettersi, mentre qualsiasi applicazione + all'interno del server sarà in grado di connettersi esternamente + [4]. + +4. **Aggiunta di regole specifiche**: + - Puoi consentire o bloccare servizi specifici per porta, interfaccia di rete e indirizzo IP sorgente. Ad esempio, per consentire l'accesso SSH (porta 22) da qualsiasi luogo, usa: + ```bash + sudo ufw allow 22 + ``` + - Per bloccare l'accesso a una porta specifica, ad esempio la porta 80, usa: + ```bash + sudo ufw deny 80 + ``` + +5. **Verifica dello stato di UFW**: + - Per vedere quali regole sono attualmente bloccate o consentite, puoi usare il parametro `verbose` con `ufw status`: + ```bash + sudo ufw status verbose + ``` + +6. **Disabilitazione di UFW**: + - Se per qualche motivo devi disabilitare UFW, puoi farlo con il comando: + ```bash + sudo ufw disable + ``` + - Questo comando disabiliterà completamente il servizio del firewall sul tuo sistema [1]. + +UFW è uno strumento potente che può migliorare notevolmente la +sicurezza dei tuoi server quando configurato correttamente. La maggior +parte dei comandi in questa guida può essere adattata per adattarsi a +diversi casi d'uso e scenari, modificando parametri come l'indirizzo +IP sorgente e/o la porta di destinazione [1]. + +### Riferimenti + +- [1] https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands +- [2] https://www.linode.com/docs/guides/configure-firewall-with-ufw/ +- [3] https://www.youtube.com/watch?v=XtRXm4FFK7Q +- [4] https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server +- [5] https://www.cloud.it/tutorial/come-installare-e-configurare-ufw-firewall-su-ubuntu-18-04.aspx +- [6] https://www.cherryservers.com/blog/how-to-configure-ubuntu-firewall-with-ufw +- [7] https://www.zenarmor.com/docs/network-security-tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu +- [8] https://gmadv.it/it/sistemi-operativi/come-installare-e-configurare-ufw-su-ubuntu-20-04/ +- [9] https://ioflood.com/blog/ufw-linux-command/ +- [10] https://phoenixnap.com/kb/configure-firewall-with-ufw-on-ubuntu +- [11] https://wiki.archlinux.org/title/Uncomplicated_Firewall diff --git a/dispensa/pdf/cybersecurity_linux.pdf b/dispensa/pdf/cybersecurity_linux.pdf index cdc4a18..f4762c3 100644 Binary files a/dispensa/pdf/cybersecurity_linux.pdf and b/dispensa/pdf/cybersecurity_linux.pdf differ