Menu Chiudi

Setup di ufw e regole di esempio

setup regole ufw

Il setup di ufw in un sistema Debian o Ubuntu è il modo più semplice per proteggere efficacemente il tuo sistema da accessi esterni indesiderati e da attacchi informatici potenzialmente pericolosi.

In questo contesto, definire ed impostare le giuste regole del firewall può rivelarsi un valido supporto al Sysadmin per mantenere al sicuro un sistema Debian o Ubuntu.

Abbiamo già visto come Installare ed inizializzare ufw per rendere disponibile il firewall nelle sue funzionalità essenziali. Ora vogliamo utilizzare quel firewall per portare il laptop o la workstation dell’ufficio ad un migliore livello di protezione dagli attacchi esterni.

Con questo tutorial vogliamo mostrare quanto sia davvero semplice eseguire il setup di ufw, impostando nuove regole per filtrare il traffico di rete. Il tutto, con l’ausilio di alcuni utili esempi delle più comuni impostazioni delle regole del firewall sulla base alle esigenze più frequenti.

Inutile dire che, per lo scopo di questo tutorial, la documentazione ufficiale di riferimento di ufw rimangono sempre le man pages, alle quali si può sempre attingere con il comando man:

$ man ufw

All’interno delle pagine di manuale di ufw (man pages, appunto) sono riportate tutte le varianti della sintassi per un flessibile utilizzo del comando ufw, utile a modellare le regole del firewall di sistema in modo più efficace.

In questo tutorial riportiamo alcuni modi di inserimento e rimozione di regole per il controllo del traffico di rete in ingresso ed in uscita dal sistema da proteggere ed all’interno del quale abbiamo installato ufw.

Setup di ufw con nuove regole (con esempi)

Tenendo presente che l’ordine di inserimento delle regole è estremamente importante, qui di seguito abbiamo voluto riportare alcuni esempi di inserimento di nuove regole ufw. Negli esempi, impiegheremo regole che controllano il traffico di rete dei servizi più comuni e e di più largo utilizzo; comunque tra quelli che meglio sintetizzano quanto riportato nelle pagine di manuale.

Tenendo sempre a mente che l’ordine di inserimento delle regole del firewall è estremamente importante e mai da sottovalutare, addentriamoci ora in qualche esempio.

Esempio 1

Regola: Permetti tutto il traffico in ingresso proveniente dall’indirizzo IP: 203.0.113.4, senza altre particolari restrizioni.

$ sudo ufw allow from 203.0.113.4 comment "Permetti solo da IP 203.0.113.4"

La regola credo sia “parlante” e non ci sia nulla da aggiungere in proposito

Esempio 2

Regola: Permetti solo il traffico www (porta 80/tcp) in ingresso al sistema. Notare che in questa regola non viene specificata la porta la coppia di valori porta/protocollo, bensì è stato utilizzato l’acronimo ‘www. Esso sta ad indicare il nome dell’applicazione (www, appunto) nella forma “human readable” (comprensibile ai comuni mortali).

$ sudo ufw allow www comment "Permetti solo porta 80 (www)"

Notare inoltre che l’elenco completo delle app predefinite può essere elencato con il comando $ sudo ufw app list.

Esempio 3

Regola: Permetti tutto il traffico in ingresso al sistema, proveniente dalla rete 213.203.113.0/24.

$ sudo ufw allow from 213.203.113.0/24 comment "Permetti solo la subnet 213.203.113.0/24"

Anche questa regola credo sia “parlante” e non ci sia nulla da aggiungere in proposito

Leggi anche:   Gestire PiVPN con i comandi dal terminale (con esempi)

Esempio 4

Regola: Permetti solo il traffico in ingresso al sistema sull’interfaccia di rete ens192 e destinato alla porta 9090.

$ sudo ufw allow in on ens192 to any port 9090 comment "Permetti solo da ethernet ens192 a porta 9090/tcp"

Il presupposto alla base della regola qui sopra è che si considera la ethernet ens192 in qualche modo sicura (connessa ad una LAN di management), che pertanto qualunque IP possa raggiungere la porta 9090 (applicazione “cockpit“).

Esempio 5

Regola: Permetti solo traffico destinato ad OpenVPN (porta 1194) con protocollo udp, in ingresso nell’interfaccia ethernet eth0 , proveniente da qualsiasi indirizzo IP di origine, diretto verso l’indirizzo di destinazione IP 192.168.39.12.

Qui va specificato che l’indirizzo IP di destinazione in questione (192.168.39.12) potrebbe essere uno dei tanti assegnati alla interfaccia ethernet eth0 (ethernet con indirizzi IP multipli). Questo è il motivo per il quale è necessario specificarlo nella regola.

$ sudo ufw allow in on eth0 proto udp to 192.168.39.12 port 1194 comment "Permetti solo da ethernet eth0 a porta 1194/udp (OpenVPN)"

Ovviamente abbiamo assunto che OpenVPN sia in modalità udp e in esecuzione sulla porta standard 1194. Inoltre, si assume che il traffico ci venga inoltrato da un Server OpenVPN che ha un indirizzo IP 192.168.39.12.

Esempio 6

Regola: Permetti solo il traffico Wire Guard (porta 51820) con protocollo udp, in ingresso nella porta ethernet ens192, proveniente da qualsiasi indirizzo IP di origine, diretto verso questo server (qualsiasi sia l’IP del server). Notare che nel comando viene richiesto che questa sia inserita in posizione 3 dell’elenco delle regole.

$ sudo ufw insert 3 allow in on ens192 proto udp to any port 51820 comment "Permetti solo da ethernet ens192 a porta 51820/udp (WireGuard)"

Anche in questo caso, l’assunto è che WireGuard sia in ascolto sulla porta standard 51820/udp. Inoltre si assume che il traffico ci venga inoltrato da un Server WireGuard (dove terminano i Tunnel WireGuard) che giace sulla stessa LAN della nostra interfaccia ethernet ens192.

Esempio 7

Regola: Permetti in ingresso solo il traffico destinato verso le porte tcp da 3306 a 3308, proveniente da qualsiasi indirizzo IP e su qualsiasi interfaccia ethernet.

$ sudo ufw allow 3306:3308/tcp comment "Permetti solo porte tcp da 3306 a 3308"

Questa regola può rivelarsi utile, ad esempio, nel caso in cui vi siano diverse istanze del database MySQL all’interno del sistema, ciascuna delle quali è in ascolto su una specifica porta tcp (Istanza 1 di MySQL, porta: 3306, Istanza 2 di MySQL, porta: 3307,Istanza 3 di MySQL, porta: 3308).

Leggi anche:   Come installare OpenVPN Client in Windows

Rimozione delle regole di ufw (con esempi)

Fin qui sembra tutto abbastanza chiaro su come fare ad inserire nuove regole di ufw per il controllo del traffico di rete. Ma cosa fare ne caso una regola è di troppo e bisogna eliminarla? Niente panico; il comando ufw ha tutto ciò che serve anche per la rimozione delle regole in modo facile e controllato.

Tuttavia; se per inserire una nuova regola è sufficiente descrivere come la si vuole, per rimuovere una regola la faccenda si fa un po più complessa.

Come abbiamo accennato più sopra, le regole che vengono via via aggiunte, vanno ad inserirsi in un elenco che deve rispettare una rigida sequenza. La medesima sequenza che verrà rispettata nella fase di controllo del traffico; ogni volta cioè che un nuovo pacchetto IP entra o esce effettivamente dal sistema.

Nell’esempio n. 6 che abbiamo fatto poco sopra riguardo all’inserimento di nuove regole, abbiamo volutamente “forzato” la nuova regola in una specifica posizione, poiché può essere utile avere regole più utilizzate o più critiche nella parte alta della lista.

Quello che riportiamo qui sotto è l’elenco delle regole così come realmente appaiono nella loro sequenza di controllo e si ottiene con il comando:

$ sudo ufw status numbered

Quello che segue è l’output completo del comando $ sudo ufw status numbered: dove ogni riga che contiene una regola di ufw è puntualmente numerata. È referenziata cioè da un indice numerico crescente.

$ sudo ufw status numbered
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere                   # Permetti in ingresso solo il protocollo ssh
[ 2] Anywhere                   ALLOW IN    203.0.113.4                # Permetti solo da IP 203.0.113.4
[ 3] 51820/udp on ens192        ALLOW IN    Anywhere                   # Permetti solo da ethernet ens192 a porta 51820/udp (WireGuard)
[ 4] 80/tcp                     ALLOW IN    Anywhere                   # Permetti solo porta 80 (www)
[ 5] Anywhere                   ALLOW IN    213.203.113.0/24           # Permetti solo la subnet 213.203.113.0/24
[ 6] 9090 on ens192             ALLOW IN    Anywhere                   # Permetti solo da ethernet ens192 a porta 9090/tcp
[ 7] 192.168.39.12 1194/udp on eth0 ALLOW IN    Anywhere                   # Permetti solo da ethernet eth0 a porta 1194/udp (OpenVPN)
[ 8] 3306:3308/tcp              ALLOW IN    Anywhere                   # Permetti solo porte tcp da 3306 a 3308
[ 9] 22/tcp (v6)                ALLOW IN    Anywhere (v6)              # Permetti in ingresso solo il protocollo ssh
[10] 51820/udp (v6) on ens192   ALLOW IN    Anywhere (v6)              # Permetti solo da ethernet ens192 a porta 51820/udp (WireGuard)
[11] 80/tcp (v6)                ALLOW IN    Anywhere (v6)              # Permetti solo porta 80 (www)
[12] 9090 (v6) on ens192        ALLOW IN    Anywhere (v6)              # Permetti solo da ethernet ens192 a porta 9090/tcp
[13] 3306:3308/tcp (v6)         ALLOW IN    Anywhere (v6)              # Permetti solo porte tcp da 3306 a 3308

Notare che, per altro, la regola dell’esempio n. 6 più sopra è regolarmente inserita in posizione 3 dell’elenco. Esattamente come espressamente richiesto dal comando utilizzato dell’esempio.

Leggi anche:   WireGuard Client: Tunnel criptati con Windows

Questa discussione sulla numerazione delle regole di controllo del traffico di rete da parte di ufw, ci tornerà presto utile quando avremo la necessità di rimuovere una o più regole del firewall dall’elenco.

Nota sulla rimozione delle regole di ufw

Come abbiamo avuto modo di osservare più sopra, ogni regola di controllo di ufw occupa una posizione be precisa all’interno dell’elenco (tabella) delle regole. E questo rende molto semplice la rimozione di una specifica regola.

Tuttavia bisogna prestare molta attenzione quando si rimuove più di una regola, in quanto la numerazione delle righe dell’elenco è dinamico. Ossia: la numerazione delle righe nella tabella è sempre sequenziale crescente e non ammette salti di numerazione. Quindi l’indice è sempre riferito ad una precisa posizione dell’elenco, non alla specifica regola.

Questo significa che ogni volta che una regola viene rimossa, quelle con indice più grande “scorrono” ad occupare l’indice lasciato vuoto. Ciò porta all’ovvio risultato che ora dobbiamo conoscere la nuova numerazione delle righe, prima di procedere ad una ulteriore rimozione.

Esempio di rimozione delle regole dal setup di ufw

In questo esempio, vogliamo rimuovere delle regole inserite nell’esempio n. 7 più sopra, con riferimento all’elenco del comando $ sudo ufw status numbered di poco fa.

Le regole che per questo esempio vogliamo rimuovere, sono le regole elencate alla riga 13 ed alla riga 8; esattamente in quest’ordine.

Per fare questo, dovremo utilizzare i comandi $ sudo ufw delete 13 e $ sudo ufw delete 8 (Attenzione che l’ordine è importante!)

Quello che segue è l’output completo dei due comandi appena citati:

$ sudo ufw delete 13
Deleting:
 allow 3306:3308/tcp comment 'Permetti solo porte tcp da 3306 a 3308'
Proceed with operation (y|n)? y
Rule deleted (v6)

$ sudo ufw delete 8
Deleting:
 allow 3306:3308/tcp comment 'Permetti solo porte tcp da 3306 a 3308'
Proceed with operation (y|n)? y
Rule deleted

Notare che al fine di evitare al Sysadmin di commettere errori, ufw richiede la conferma della rimozione della regola, mostrandone al contempo il contenuto.

Conclusioni

In questo tutorial abbiamo affrontato l’impostazione delle regole di ufw per filtrare il traffico di rete e la logica da utilizzare per un setup di ufw personalizzato.

L’intento era quello di proteggere in modo abbastanza efficace un sistema GNU Linux da accessi esterni indesiderati e da attacchi informatici potenzialmente pericolosi.

Condividi

Disclaimer

Questa pagina potrebbe contenere link di affiliazione. Gli acquisti o gli ordini che effettuerai tramite tali link possono generare commissioni che ci aiutano a sostenere questo sito web.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Moderazione dei commenti attiva. Il tuo commento non apparirà immediatamente.