title: Cybersecurity con sistemi GNU/Linux subtitle: Dispensa del corso author: Andrea Fazzi data: 13.03.2024
In questa sezione verranno discussi gli utilizzi più avanzati del terminale. In particolare, ci si soffermerà sui cosidetti terminal multiplexer.
I terminal multiplexer in Linux sono strumenti potenti che consentono agli utenti di creare più sessioni di terminale all'interno di una singola finestra del terminale. Questi strumenti sono particolarmente utili per gestire più processi contemporaneamente, mantenendo aperte le sessioni anche dopo la disconnessione, e per organizzare le finestre del terminale in modo efficiente.
Uno dei terminal multiplexer più popolari e ampiamente utilizzati è
tmux
. tmux
permette agli utenti di creare, gestire e navigare tra
più sessioni di terminale, facilitando l'organizzazione dei processi e
la gestione delle finestre. Con tmux
, è possibile dividere la
finestra del terminale in più riquadri, ciascuno dei quali può
eseguire un processo separato, e passare facilmente da una sessione
all'altra.
Un altro esempio di terminal multiplexer è screen
, che offre
funzionalità simili a tmux
ma con una sintassi leggermente
diversa. Entrambi gli strumenti sono disponibili per la maggior parte
delle distribuzioni Linux e possono essere installati tramite il
gestore di pacchetti della distribuzione.
Utilizzare un terminal multiplexer può migliorare notevolmente l'efficienza e la produttività degli sviluppatori e degli amministratori di sistema, consentendo di lavorare con più processi contemporaneamente senza dover aprire molteplici finestre del terminale.
tmux
tmux
è un potente strumento di gestione delle sessioni di terminale
in Linux. Permette agli utenti di creare, gestire e navigare tra più
sessioni di terminale all'interno di una singola finestra del
terminale. Questa funzionalità è particolarmente utile per
l'esecuzione di più programmi con una singola connessione, come quando
si effettua una connessione remota a una macchina utilizzando Secure
Shell (SSH) [1].
Per iniziare ad utilizzare tmux
, basta digitare tmux
nel
terminale. Questo comando avvia un server tmux
, crea una sessione
predefinita (numero 0) con una singola finestra e si collega ad
essa. Una volta connessi a tmux
, è possibile eseguire qualsiasi
comando o programma come si farebbe normalmente.
tmux
tmux
è un'applicazione disponibile nel repository di Arch
Linux
. Per installarla basterà utilizzare il comando pacman
.
sudo pacman -S tmux
Per verificare che l'installazione sia andata a buon fine:
tmux -V
Il comando restituirà la versione installata.
tmux
Per eseguire tmux
si dovrà semplicemente invocare il comando
all'interno di una sessione di terminale.
tmux
È possibile staccare la sessione tmux
premendo Ctrl+B
seguito da
D
. tmux
opera utilizzando una serie di scorciatoie da tastiera
(keybindings) attivate premendo la combinazione "prefisso". Di
default, il prefisso è Ctrl+B
. Dopo di che, premere D
per staccare
dalla sessione corrente. La sessione continua ad eseguire in
background anche dopo la disconnessione, permettendo di riprendere
dove si è lasciati quando si è pronti a riconnettersi al server e
riattaccarsi alla sessione esistente.
tmux
fornisce una serie di scorciatoie da tastiera per eseguire
comandi rapidamente all'interno di una sessione tmux
. Alcune delle
più utili includono:
Ctrl+B D
— Stacca dalla sessione corrente.Ctrl+B %
— Suddividi la finestra in due pannelli orizzontalmente.Ctrl+B "
— Suddividi la finestra in due pannelli verticalmente.Ctrl+B
seguito da una freccia (sinistra, destra, su, giù) — Sposta tra i pannelli.Ctrl+B X
— Chiudi il pannello.Ctrl+B C
— Crea una nuova finestra.Ctrl+B N
o P
— Sposta alla finestra successiva o precedente.Ctrl+B 0
(1,2...) — Sposta a una finestra specifica per numero.Ctrl+B :
— Entra nella riga di comando per digitare
comandi. L'auto-completamento tramite tab è disponibile.Ctrl+B ?
— Visualizza tutte le scorciatoie da tastiera. Premere Q
per uscire.Ctrl+B W
— Apre un pannello per navigare tra le finestre in più sessioni.Utilizza tmux
per suddividere il terminale in due pannelli
verticali. Nel pannello di sinistra apri uno script in Python
utilizzando l'editor nano
. Nel pannello di destra esegui il comando
htop
. Se htop
non è presente nel sistema, procedi con la sua
installazione attraverso il package manager pacman
.
tmux
Il file di configurazione di tmux
, noto come tmux.conf
, è un file
di testo che permette agli utenti di personalizzare l'ambiente di
lavoro di tmux
secondo le proprie preferenze. Questo file può essere
posizionato in due luoghi principali:
~/.tmux.conf
per una configurazione specifica dell'utente corrente./etc/tmux.conf
per una configurazione globale, applicabile a tutti gli utenti del sistema.Se il file ~/.tmux.conf
non esiste, può essere creato semplicemente
eseguendo il comando touch ~/.tmux.conf
nel terminale. Questo creerà
un file di configurazione vuoto che può essere modificato per
aggiungere le impostazioni desiderate.
La configurazione di tmux
può includere una vasta gamma di opzioni, tra cui:
Per esempio, per cambiare il prefisso di comando predefinito da
Ctrl+B
a Ctrl+A
, si potrebbe aggiungere la seguente riga al file
tmux.conf
:
set-option -g prefix C-a
Dopo aver apportato modifiche al file di configurazione, è necessario
ricaricarlo per applicare le nuove impostazioni. Questo può essere
fatto eseguendo il comando tmux source-file ~/.tmux.conf
dal
terminale o utilizzando il comando source-file ~/.tmux.conf
dalla
modalità di comando di tmux
. Per facilitare il processo, è possibile
aggiungere un collegamento rapido nel file tmux.conf
per ricaricare
facilmente la configurazione:
bind r source-file ~/.tmux.conf \; display "Reloaded!"
Questo permette di ricaricare la configurazione premendo il prefisso
seguito da r
, visualizzando un messaggio di conferma.
Si supponga di voler creare un file di configurazione specifico per un
progetto in cui il terminale viene diviso in tre parti: due colonne
verticali di cui una a sua volta suddivisa orizzontalmente. In questo
caso è possibile utilizzare uno script di configurazione
personalizzato per tmux
. Questo script può essere salvato in un file
separato, ad esempio in ~/.config/tmux/split.conf
.
new -s splitted_session # crea una nuova sessione
selectp -t 0 # seleziona il primo pannello
splitw -h # divide il pannello corrente orizzontalmente in due parti
selectp -t 1 # seleziona il nuovo secondo pannello
splitw -v # divide il pannello corrente verticalmente in due parti
selectp -t 0 # torna al primo pannello
Una volta creato il file di configurazione, occorrerà "eseguirlo" con
tmux source-file ~/.config/tmux/split.conf
Crea un file di configurazione tmux
per produrre un layout con due
righe di cui la prima suddivisa in due colonne secondo uno schema
simile a quello riportato sotto.
-----------
| | |
| | |
-----------
| |
| |
-----------
Il protocollo SSH (Secure Shell) è un protocollo di rete che fornisce una connessione sicura e crittografata tra due sistemi informatici su una rete non sicura. OpenSSH è una delle implementazioni più comuni di SSH, che offre una serie di strumenti per la gestione delle chiavi SSH, l'autenticazione e la sicurezza delle connessioni.
ssh
Il comando ssh
è utilizzato per stabilire una connessione sicura con
un server remoto. Ad esempio, per connettersi a un server remoto con
l'indirizzo IP 192.168.1.100
come utente utente
, il comando è:
ssh utente@192.168.1.100
Questo comando avvia una sessione SSH con il server specificato, richiedendo l'autenticazione dell'utente.
ssh-keygen
ssh-keygen
è uno strumento per generare una coppia di chiavi
pubbliche/private per l'autenticazione SSH. Per generare una nuova
chiave SSH, si può eseguire il comando ssh-keygen
come nell'esempio sotto
ssh-keygen -t rsa
Agendo sulle opzioni del comando, si può specificare un percorso per salvare la chiave impostare una passphrase per la chiave privata per una maggioreq sicurezza.
ssh-keygen -t rsa -b 2048 -f ~/.ssh/mykey
Questo comando genera una chiave RSA di 2048 bit e la salva nel file
~/.ssh/mykey
. La chiave pubblica corrispondente sarà salvata in
~/.ssh/mykey.pub
.
ssh-copy-id
ssh-copy-id
è uno strumento che copia la chiave pubblica SSH di un
utente in un server remoto, consentendo l'accesso senza password. Per
copiare la chiave pubblica mykey.pub
dell'utente corrente al server
192.168.1.100
, il comando è:
ssh-copy-id -i ~/.ssh/mykey.pub utente@192.168.1.100
Questo comando copia la chiave pubblica nel file
~/.ssh/authorized_keys
dell'utente remoto, consentendo l'accesso
senza password. Dopo aver copiato la chiave, è possibile testare
l'accesso senza password con:
ssh -i ~/.ssh/mykey utente@192.168.1.100
I nomi di default per le chiavi pubbliche e private sono
rispettivamente id_rsa.pub
e id_rsa
. Utilizzando queste chiavi,
l'accesso al server senza password si semplifica. Basterà infatti
eseguire
ssh utente@192.168.1.100
Mosh, acronimo di Mobile Shell, è un'applicazione di terminale remoto che risolve i problemi di connettività tipici di SSH, specialmente su reti mobili o instabili. A differenza di SSH, che utilizza TCP e richiede una connessione stabile, Mosh utilizza UDP, che è un protocollo senza connessione, permettendo una connessione più stabile e reattiva anche in presenza di interruzioni temporanee della connessione. Mosh mantiene una connessione attiva attraverso cambiamenti di indirizzo IP e sospensioni del dispositivo, rendendolo ideale per l'uso su dispositivi mobili.
Mosh inizia stabilendo una connessione SSH per l'autenticazione, utilizzando le stesse credenziali di SSH (ad esempio, password o chiavi pubbliche). Successivamente, avvia un server Mosh sul dispositivo remoto e stabilisce una connessione UDP per la comunicazione. Questo approccio consente a Mosh di gestire meglio la perdita di pacchetti e di mantenere una connessione attiva anche in presenza di interruzioni temporanee della rete.
Per connettersi a un server remoto utilizzando Mosh, il comando è
simile a quello di SSH, ma utilizzando mosh
al posto di ssh
. Ad
esempio:
mosh utente@host
E' possibile utilizzare mosh
e tmux
insieme. Ad esempio, con la
seguente linea di comando è possibile connettersi al server remoto ed
eseguire tmux.
mosh utente@host -- tmux
Installa un server OpenSSH e assicurati di poter effettuare l'accesso. Crea un file layout.conf che funga da configurazione per una sessione tmux. La configurazione deve prevedere una qualche suddivisione della finestra. L'accesso via ssh dev'essere senza password.
Effettuando un ssh da locale verso locale, una volta effettuato l'acccesso, la sessione tmux dev'essere automaticamente avviata.
systemd
Systemd è un sistema di inizializzazione e gestione dei servizi per Linux, che sostituisce il tradizionale SysVinit. È progettato per essere il punto di partenza per il sistema operativo, gestendo l'avvio dei servizi, la gestione delle sessioni utente, la configurazione di rete e molto altro. In Arch Linux, systemd è l'impostazione predefinita e viene utilizzato per gestire l'avvio del sistema e i servizi.
Systemd utilizza i "target" per raggruppare le unità insieme tramite dipendenze e come punti di sincronizzazione standardizzati. Questi servono uno scopo simile ai runlevel di SysVinit ma agiscono leggermente diversamente. Ogni target è nominato invece di essere numerato e serve uno scopo specifico con la possibilità di avere più attivi allo stesso tempo.
systemd
systemctl
è il comando principale utilizzato per esaminare e
controllare lo stato di systemd
in un sistema Arch Linux. Questo
strumento è fondamentale per la gestione dei servizi e delle unità del
sistema. Ecco alcuni esempi di utilizzo di systemctl
:
Per avviare un servizio, ad esempio sshd
, si utilizza:
sudo systemctl start sshd
Per fermare lo stesso servizio:
sudo systemctl stop sshd
Per abilitare un servizio all'avvio del sistema:
sudo systemctl enable sshd
Per disabilitare l'avvio automatico del servizio:
sudo systemctl disable sshd
Per controllare lo stato corrente di un servizio:
systemctl status sshd
I target in systemd rappresentano stati di sistema o configurazioni specifiche. Per vedere il target corrente:
systemctl get-default
Per cambiare il target di default al prossimo avvio:
sudo systemctl set-default multi-user.target
È possibile utilizzare systemctl
per controllare un'istanza di
systemd
su una macchina remota tramite SSH:
systemctl -H user@host status sshd
Per visualizzare i servizi che hanno manifestato problemi alla partenza:
systemctl --state=failed
journalctl
journalctl
è uno strumento potente per la gestione dei log in
sistemi che utilizzano systemd
, come Arch Linux. Questo strumento
consente di visualizzare, filtrare e analizzare i messaggi di log
generati dal sistema e dai servizi. Ecco alcuni esempi notevoli di
utilizzo di journalctl
:
Per visualizzare tutti i messaggi di log:
journalctl
Per visualizzare tutti i messaggi che corrispondono a un pattern specifico:
journalctl --grep=PATTERN
Per visualizzare tutti i messaggi dal boot corrente:
journalctl -b
Per visualizzare i messaggi dal boot precedente:
journalctl -b -1
Per visualizzare i messaggi da una data specifica:
journalctl --since="2022-01-01"
Per visualizzare i messaggi degli ultimi 20 minuti:
journalctl --since "20 min ago"
Per seguire i nuovi messaggi di log in tempo reale:
journalctl -f
Per visualizzare tutti i messaggi per un servizio specifico, ad esempio httpd
:
journalctl -u httpd.service
Per visualizzare i messaggi di log per un'unità utente specifica, ad esempio dbus
:
journalctl --user -u dbus
Per visualizzare solo i messaggi di errore, critico e allarme:
journalctl -p err..alert
Per visualizzare i messaggi del buffer del kernel:
journalctl -k
Se il directory dei log contiene una grande quantità di dati di log,
journalctl
può richiedere diversi minuti per filtrare l'output. Può
essere significativamente velocizzato utilizzando l'opzione --file
per forzare journalctl
a cercare solo nel journal più recente:
journalctl --file /var/log/journal/*/system.journal -f
Utilizzando il terminal multiplexer tmux
suddividi il terminale in
due pannelli. Nel pannello di sinistra esegui journalctl
in modo da
visualizzare i log del servizio sshd
. Nel pannello di destra
connettiti al server ssh in esecuzione sulla tua macchina. Qualora il
servizio non fosse in esecuzione, fallo partire utilizzando
systemctl
. Salva una porzione dei log in un file di testo come prova
di aver svolto l'esercizio.
systemd
systemd/Timers
in Arch Linux sono unità di sistema che permettono di
pianificare l'esecuzione di servizi o eventi in base a specifici
intervalli di tempo o eventi di sistema. Questi timer possono essere
utilizzati come alternativa a cron
per la pianificazione di
attività. I timer di systemd
supportano eventi di tempo calendario e
monotonici, e possono essere eseguiti in modo asincrono.
OnCalendar=
per definire l'evento.OnBootSec
e OnUnitActiveSec
[1].Per creare un timer, è necessario creare un file di unità con
estensione .timer
che descriva quando e come il timer deve attivare
un'unità di servizio corrispondente. Ad esempio, per creare un timer
che esegue un servizio ogni giorno alle 12:00, il file del timer
potrebbe essere simile a questo:
[Unit]
Description=Esegui il mio servizio giornaliero
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
E il file del servizio corrispondente potrebbe essere:
[Unit]
Description=Il mio servizio giornaliero
[Service]
ExecStart=/path/to/my-service
La sintassi OnCalendar
in systemd
è utilizzata per specificare
quando un timer deve essere attivato, offrendo una maggiore
flessibilità rispetto al formato cron tradizionale. La sintassi
OnCalendar
segue il formato DOW YYYY-MM-DD HH:MM:SS
, dove DOW
è
il giorno della settimana (opzionale), e gli altri campi possono
utilizzare un asterisco (*
) per corrispondere a qualsiasi valore per
quella posizione. Se l'ora non è specificata, viene assunta come
00:00:00
. Se la data non è specificata ma l'ora è, il prossimo match
potrebbe essere oggi o domani, a seconda dell'ora corrente [5].
Ecco alcuni esempi di come utilizzare OnCalendar
:
Per eseguire un evento ogni giorno alle 10:00, puoi usare:
OnCalendar=*-*-* 10:00:00
Per eseguire un evento ogni anno il 15 ottobre alle 17:48:00, puoi usare:
OnCalendar=*-10-15 17:48:00
Per eseguire un evento ogni anno il 1 gennaio alle 00:00:00, puoi usare:
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:
OnCalendar=Wed *-*-* 17:48:00
Questo può anche essere scritto come:
OnCalendar=3Wed, 17:48
Sì, OnCalendar
in systemd
ammette alias come "daily" per
specificare intervalli di tempo più comuni. Questo alias può essere
utilizzato per semplificare la pianificazione di eventi ricorrenti. Ad
esempio, per eseguire un evento ogni giorno, puoi semplicemente
utilizzare:
OnCalendar=daily
Questo è equivalente a specificare l'evento per ogni giorno alle 00:00:00. Altri alias comuni includono "weekly", "monthly", "yearly", e specifici giorni della settimana come "Mon", "Tue", "Wed", ecc.
Per esempio, per eseguire un evento ogni lunedì alle 10:00, potresti usare:
OnCalendar=Mon 10:00:00
O per eseguire un evento ogni settimana, potresti usare:
OnCalendar=weekly
Questi alias rendono più semplice e leggibile la configurazione dei
timer in systemd
, specialmente per intervalli di tempo ricorrenti
comuni [4].
systemd
offre strumenti come systemd-analyze calendar
per validare
e esaminare gli eventi del calendario utilizzati in
un'espressione. Questo strumento analizza un'espressione di evento del
calendario e fornisce la forma normalizzata e altre informazioni, come
la data e l'ora del prossimo "elapso" (cioè, corrispondenza) e la
quantità approssimativa di tempo prima che raggiunga il tempo di
attivazione [5].
Per abilitare e avviare un timer, utilizza i comandi systemctl
enable
e systemctl start
, ricordando di aggiungere il suffisso
.timer
al nome dell'unità. Per visualizzare tutti i timer attivi,
esegui:
systemctl list-timers
Per elencare tutti i timer (inclusi quelli inattivi), usa:
systemctl list-timers --all
Se un timer si sincronizza, potrebbe essere utile eliminare il suo
file stamp-*
in /var/lib/systemd/timers
(o
~/.local/share/systemd/
nel caso dei timer utente). Questi file di
lunghezza zero contrassegnano l'ultima volta in cui ogni timer è stato
eseguito. Se vengono eliminati, verranno ricostruiti al prossimo avvio
del loro timer [1].
Per impostare un timer che effettui il backup della cartella home ogni
mattina alle 10:00, e che si assicuri che il backup venga effettuato
anche se il PC è spento, segui questi passaggi. Questo esempio
utilizza un timer e un servizio di systemd
per eseguire il backup.
Prima di tutto, crea un file di servizio che eseguirà il backup. Puoi
chiamarlo home-backup.service
e metterlo in /etc/systemd/system/
per un backup a livello di sistema, o in ~/.config/systemd/user/
per
un backup a livello utente.
[Unit]
Description=Backup della cartella home
[Service]
Type=oneshot
ExecStart=/path/to/your/backup-script.sh
Assicurati che lo script di backup (/path/to/your/backup-script.sh
)
sia eseguibile e che contenga i comandi necessari per il backup.
Successivamente, crea un file di timer che attiverà il servizio sopra
ogni mattina alle 10:00. Anche questo file va in
/etc/systemd/system/
per un backup a livello di sistema, o in
~/.config/systemd/user/
per un backup a livello utente. Chiamalo
home-backup.timer
.
[Unit]
Description=Timer per il backup della cartella home
[Timer]
OnCalendar=*-*-* 10:00:00
Persistent=true
[Install]
WantedBy=timers.target
L'opzione Persistent=true
assicura che il timer si attivi non appena
il sistema è avviato, anche se il tempo previsto per l'esecuzione è
passato.
Per abilitare il timer, esegui:
sudo systemctl enable home-backup.timer
E per avviare il timer immediatamente, senza doverlo abilitare:
sudo systemctl start home-backup.timer
Se stai creando un timer a livello utente, sostituisci sudo
con
--user
nei comandi sopra.
Per verificare che il timer sia attivo e pianificato correttamente, puoi usare:
systemctl list-timers
Questo mostrerà tutti i timer attivi, inclusi quelli pianificati per il futuro.
Persistent=true
.loginctl enable-linger $USER
.Questo metodo ti permette di pianificare il backup della cartella home ogni mattina alle 10:00, garantendo che il backup venga effettuato anche se il PC è spento al momento previsto per il backup [1].
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].
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
:
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.
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.
Chiusura di un volume crittografato LUKS: bash sudo
cryptsetup luksClose my_encrypted_volume
Questo comando chiude
il volume crittografato LUKS, rendendolo non più accessibile.
Decrittografia di un disco crittografato LUKS:
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:
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.
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.
Installazione di UFW:
Su Arch Linux, UFW può essere installato con il comando:
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].
Abilitazione di UFW:
Per abilitare UFW e applicare le regole del firewall, esegui:
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].
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:
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].
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:
sudo ufw allow 22
Per bloccare l'accesso a una porta specifica, ad esempio la porta 80, usa:
sudo ufw deny 80
Verifica dello stato di UFW:
Per vedere quali regole sono attualmente bloccate o consentite, puoi usare il parametro verbose
con ufw status
:
sudo ufw status verbose
Disabilitazione di UFW:
Se per qualche motivo devi disabilitare UFW, puoi farlo con il comando:
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].