Introduzione
UFW, o Uncomplicated Firewall, è un’interfaccia semplificata per la gestione del firewall che nasconde la complessità delle tecnologie di filtraggio dei pacchetti di livello inferiore come iptables
e nftables
. Se stai cercando di iniziare a proteggere la tua rete e non sei sicuro di quale strumento utilizzare, UFW potrebbe essere la scelta giusta per te.
In questo tutorial ti mostrerò come configurare un firewall con UFW su Debian 11.
Prerequisiti
Per seguire questo tutorial, avrai bisogno di un server Debian 11 con un utente sudo
non-root, che puoi configurare seguendo il Passaggio 1 attraverso 3 nel tutorial di Configurazione Iniziale del Server con Debian 11.
Passaggio 1 – Installazione di UFW
Debian non installa UFW per impostazione predefinita. Se hai seguito l’intero tutorial di configurazione iniziale del server, avrai installato ed abilitato UFW. In caso contrario, installalo ora usando apt
:
Configurerai UFW ed lo abiliterai nei passaggi seguenti.
Passaggio 2 — Utilizzo di IPv6 con UFW (Opzionale)
Questo tutorial è scritto considerando IPv4 ma funzionerà anche per IPv6 se abilitato. Se il tuo server Debian ha IPv6 abilitato, assicurati che UFW sia configurato per supportare IPv6. Ciò garantirà che UFW gestisca le regole del firewall sia per IPv6 che per IPv4. Per configurare ciò, apri il file di configurazione di UFW /etc/default/ufw
con nano
o il tuo editor preferito:
Trova IPV6
nel file e assicurati che il valore sia yes
:
IPV6=yes
Salva e chiudi il file. Se stai usando nano
, premi CTRL+X
, poi Y
, quindi INVIO
per salvare ed uscire dal file.
Ora quando UFW è abilitato, sarà configurato per scrivere sia le regole del firewall IPv4 che IPv6. Prima di abilitare UFW, tuttavia, assicurati che il tuo firewall sia configurato per consentirti di connetterti via SSH. Inizia impostando le policy predefinite.
Passaggio 3 — Impostazione delle Politiche Predefinite
Se stai iniziando appena con il tuo firewall, le prime regole da definire sono le tue politiche predefinite. Queste regole gestiscono il traffico che non corrisponde esplicitamente ad altre regole. Per impostazione predefinita, UFW è impostato per negare tutte le connessioni in ingresso e consentire tutte le connessioni in uscita. Ciò significa che chiunque cerchi di raggiungere il tuo server non sarà in grado di connettersi, mentre qualsiasi applicazione all’interno del server sarà in grado di raggiungere il mondo esterno.
Ripristina le regole UFW ai valori predefiniti in modo da poter essere sicuro di poter seguire questo tutorial. Per impostare i valori predefiniti utilizzati da UFW, utilizza questi comandi:
Riceverai un output come segue:
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Default outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
Questi comandi impostano le predefinite per negare le connessioni in ingresso e consentire quelle in uscita. Queste predefinite del firewall potrebbero essere sufficienti da sole per un computer personale, ma i server di solito devono rispondere a richieste in ingresso da utenti esterni. Inizierai questo processo nel prossimo passaggio.
Passaggio 4 — Consenti Connessioni SSH
Non è possibile attivare il firewall UFW al momento, poiché ciò comporterebbe il rifiuto di tutte le connessioni in ingresso, compresi i tentativi di accesso al server. Ciò significa che sarà necessario creare regole che consentano esplicitamente le connessioni in ingresso legittime, come ad esempio le connessioni SSH o HTTP, se si desidera che il server risponda a quei tipi di richieste. Se si sta utilizzando un server cloud, probabilmente si vorrà consentire le connessioni SSH in ingresso in modo da poter connettersi e gestire il proprio server.
Per configurare il server in modo da consentire le connessioni SSH in ingresso, utilizzare questo comando:
Questo creerà delle regole del firewall che consentiranno tutte le connessioni sulla porta 22
, che è la porta su cui il demone SSH è in ascolto per impostazione predefinita. UFW sa quale porta è associata a allow ssh
perché è elencata come servizio nel file /etc/services
.
Tuttavia, è possibile scrivere la regola equivalente specificando la porta anziché il nome del servizio. Ad esempio, questo comando produce lo stesso risultato di quello precedente:
Se hai configurato il demone SSH per utilizzare una porta diversa, dovrai specificare la porta appropriata. Ad esempio, se il tuo server SSH è in ascolto sulla porta 2222
, puoi utilizzare lo stesso comando ma sostituire 22
con 2222
.
Ora che il firewall è configurato per consentire le connessioni SSH in ingresso, è possibile attivarlo.
Passaggio 5 — Attivazione di UFW
Per abilitare UFW, utilizzare questo comando:
Riceverai un avviso che dice che il comando potrebbe interrompere le connessioni SSH esistenti. Hai già configurato una regola del firewall che consente le connessioni SSH, quindi dovrebbe essere sicuro continuare. Rispondi al prompt con y
e premi INVIO
.
Il firewall è ora attivo. Per vedere le regole che hai impostato, esegui questo comando:
Il resto di questo tutorial illustra come utilizzare UFW in modo più dettagliato, inclusa l’autorizzazione e il rifiuto di diversi tipi di connessioni.
Passaggio 6 — Consenti Altre Connessioni
A questo punto, dovresti consentire tutte le altre connessioni di cui il tuo server ha bisogno per funzionare correttamente. Le connessioni che dovresti consentire dipendono dalle tue esigenze specifiche. Sai già come scrivere regole che consentono connessioni basate su un nome servizio o porta; hai fatto questo per SSH sulla porta 22
.
Puoi fare lo stesso per HTTP sulla porta 80
, che è ciò che utilizzano i server web non criptati. Per consentire questo tipo di traffico, scriveresti:
Puoi anche fare lo stesso per HTTPS sulla porta 443
, che è ciò che utilizzano i server web criptati. Per consentire questo tipo di traffico, scriveresti:
In entrambi i casi, specificare le porte funzionerebbe anche, con HTTP essendo 80
e HTTPS essendo 443
. Ad esempio:
Ci sono altri modi per consentire connessioni, tuttavia, oltre a specificare una porta o servizio conosciuto. Questo viene discusso di seguito.
Intervalli di porte specifici
Puoi specificare intervalli di porte con UFW. Ad esempio, alcune applicazioni utilizzano più porte invece di una singola porta.
Per esempio, per consentire le connessioni X11
, che utilizzano le porte 6000
–6007
, utilizza questi comandi:
Quando si specificano intervalli di porte con UFW, è necessario specificare il protocollo (tcp
o udp
) a cui le regole dovrebbero essere applicate. Questo non è stato menzionato prima perché non specificare il protocollo consente automaticamente entrambi i protocolli, il che va bene nella maggior parte dei casi.
Indirizzi IP specifici
Quando si lavora con UFW, è anche possibile specificare gli indirizzi IP. Ad esempio, se si desidera consentire le connessioni da un determinato indirizzo IP, come un indirizzo IP di lavoro o di casa 203.0.113.4
, è necessario specificare from
e quindi l’indirizzo IP:
È inoltre possibile specificare una porta specifica a cui l’indirizzo IP è autorizzato a connettersi aggiungendo a qualsiasi porta
seguito dal numero di porta. Ad esempio, se si desidera consentire a 203.0.113.4
di connettersi alla porta 22
(SSH), utilizzare questo comando:
Sottoreti
Se desideri consentire una sottorete di indirizzi IP, puoi farlo utilizzando la notazione CIDR per specificare una netmask. Ad esempio, se desideri consentire tutti gli indirizzi IP compresi tra 203.0.113.1
e 203.0.113.254
, puoi utilizzare questo comando:
Allo stesso modo, puoi specificare anche la porta di destinazione a cui la sottorete 203.0.113.0/24
è autorizzata a connettersi. Di nuovo, utilizzando la porta 22
(SSH) come esempio:
Connessioni a una Interfaccia di Rete Specifica
Se desideri creare una regola del firewall che si applichi solo a una specifica interfaccia di rete, puoi farlo specificando allow in on
, seguito dal nome dell’interfaccia di rete.
Sarà utile cercare le tue interfacce di rete prima di continuare. Per farlo, utilizza questo comando:
Output. . .
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
. . .
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
. . .
L’output evidenziato indica i nomi delle interfacce di rete. Di solito hanno nomi come eth0
o enp3s2
.
Se il tuo server ha un’interfaccia di rete pubblica chiamata eth0
, ad esempio, potresti consentire il traffico HTTP ad essa con questo comando:
Farlo consentirebbe al tuo server di ricevere richieste HTTP dall’internet pubblico.
Oppure, se vuoi che un server di database MySQL (porta 3306
) ascolti le connessioni sull’interfaccia di rete privata eth1
, potresti usare questo comando:
Questo consentirebbe ad altri server sulla tua rete privata di connettersi al tuo database MySQL.
Passaggio 7 — Negazione delle Connessioni
Se non hai cambiato la politica predefinita per le connessioni in ingresso, UFW è configurato per negare tutte le connessioni in ingresso. In generale, questo semplifica il processo di creazione di una politica del firewall sicura, richiedendo di creare regole che consentano esplicitamente specifiche porte e indirizzi IP.
A volte vorrai negare connessioni specifiche in base all’indirizzo IP di origine o alla subnet, tuttavia, forse perché sai che il tuo server sta subendo un attacco da lì. Inoltre, se desideri modificare la tua politica predefinita in ingresso in allow
(cosa non consigliata), dovresti creare regole di deny
per eventuali servizi o indirizzi IP per i quali non desideri consentire connessioni.
Per scrivere regole deny
, puoi utilizzare i comandi descritti sopra, sostituendo allow
con deny
.
Ad esempio, per negare le connessioni HTTP, potresti usare questo comando:
O se vuoi negare tutte le connessioni da 203.0.113.4
potresti usare questo comando:
Ora, puoi imparare come implementare le regole di eliminazione.
Passaggio 8 — Eliminazione delle regole
Sapere come eliminare le regole del firewall è altrettanto importante quanto sapere come crearle. Ci sono due modi per specificare quali regole eliminare: per numero di regola o per la regola stessa. Questo è simile a come sono state specificate le regole quando sono state create.
Per Numero di Regola
Se stai utilizzando il numero di regola per eliminare le regole del firewall, la prima cosa da fare è ottenere un elenco delle tue regole del firewall. Il comando UFW status
ha l’opzione numbered
, che mostra i numeri accanto a ciascuna regola:
OutputStatus: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere
Se decidi di voler eliminare la regola 2
, che consente le connessioni HTTP sulla porta 80
, puoi specificarlo nel seguente comando UFW delete
:
Questo mostrerà un prompt di conferma, a cui puoi rispondere con s/n
. Digitando s
eliminerai quindi la regola 2
. Nota che se hai IPv6 abilitato, vorrai eliminare anche la corrispondente regola IPv6.
Per Regola Effettiva
L’alternativa ai numeri di regola è specificare effettivamente la regola da eliminare. Ad esempio, se vuoi rimuovere la regola allow http
, potresti scriverla così:
Puoi anche specificare la regola con allow 80
invece del nome del servizio:
Questo metodo eliminerà sia le regole IPv4 che IPv6, se esistono.
Passaggio 9 — Verifica dello Stato e delle Regole di UFW
In qualsiasi momento, puoi verificare lo stato di UFW con questo comando:
Se UFW è disabilitato, che è l’impostazione predefinita, l’output sarà questo:
OutputStatus: inactive
Se UFW è attivo, come dovrebbe essere se hai seguito il Passaggio 3, l’output dirà che è attivo e elencherà eventuali regole che hai impostato. Ad esempio, se il firewall è impostato per consentire le connessioni SSH (porta 22
) da qualsiasi luogo, l’output potrebbe includere qualcosa del genere:
OutputStatus: active
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
Usa il comando status
se vuoi controllare come UFW ha configurato il firewall.
Passaggio 10 — Disabilitazione o Ripristino di UFW (opzionale)
Se decidi che non vuoi utilizzare UFW, puoi disabilitarlo con questo comando:
Qualsiasi regola che hai creato con UFW non sarà più attiva. Puoi sempre eseguire sudo ufw enable
se hai bisogno di attivarla in seguito.
Se hai già configurato regole UFW, ma decidi di voler ricominciare da capo, puoi usare il comando reset:
Questo disabiliterà UFW ed eliminerà qualsiasi regola che hai precedentemente definito. Tieni presente che le politiche predefinite non torneranno alle loro impostazioni originali se le hai modificate in qualsiasi momento. Questo ti darà un nuovo inizio con UFW.
Conclusione
Il tuo firewall è ora configurato per consentire (almeno) connessioni SSH. Assicurati di consentire qualsiasi altra connessione in ingresso di cui il tuo server ha bisogno, limitando anche le connessioni non necessarie. Ciò garantirà che il tuo server sia sia funzionale che sicuro.
Per saperne di più sulle configurazioni UFW comuni, consulta questo tutorial su UFW Essentials: Common Firewall Rules and Commands.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-debian