UFW, o Uncomplicated Firewall, è un’interfaccia per iptables orientata alla semplificazione del processo di configurazione di un firewall. Iptables è uno strumento solido e flessibile, tuttavia può essere difficile per i principianti imparare come usarlo per configurare correttamente un firewall. Se stai cercando di iniziare a proteggere la tua rete, e non sei sicuro di quale strumento usare, UFW potrebbe essere la scelta giusta per te.
Questo tutorial ti mostrerà come configurare un firewall con UFW su Ubuntu 16.04 e 18.xx. Se ti interessa avevo parlato di Ubuntu in una guida precedente: Lista comandi Ubuntu per gestire un web server.
Prerequisiti
Per seguire questo tutorial, avrai bisogno di un server Ubuntu 16.04 con un utente non root sudo. UFW è installato di default su Ubuntu. Se è stato disinstallato per qualche motivo, è possibile installarlo consudo apt-get install ufw
.
Abilitare IPv6
Questo tutorial è scritto basandosi su IPv4 ma funzionerà anche per IPv6. Se il tuo server Ubuntu ha IPv6 abilitato, assicurati che UFW sia configurato per supportare IPv6 in modo che gestisca le regole del firewall per IPv6 oltre a IPv4. Per verificare apri la configurazione UFW connano
o il tuo editor preferito.
sudo nano/etc/default/ufw
Quindi assicurati che il valore di IPV6 sia yes. Dovrebbe essere così:
... IPV6= yes ...
Salva e chiudi il file. Ora, quando UFW è abilitato, sarà configurato per scrivere entrambe le regole del firewall IPv4 e IPv6. Tuttavia, prima di abilitare UFW, assicurarti che il firewall sia configurato per permetterti di connetterti tramite SSH.
Configurazione di base
Le prime regole da definire sono le tue politiche predefinite. Queste regole controllano come gestire il traffico che non corrisponde esplicitamente ad altre regole. Per impostazione predefinita, UFW è impostato per negare tutte le connessioni in entrata e consentire tutte le connessioni in uscita. Ciò significa che chiunque cerchi di raggiungere il tuo server cloud non sarebbe in grado di connettersi, mentre qualsiasi applicazione all’interno del server sarebbe in grado di raggiungere il mondo esterno. Riporto le regole UFW ai valori predefiniti per riferimento. Per impostare i valori predefiniti utilizzati da UFW, utilizzare questi comandi:sudo ufw default deny incoming
sudo ufw default allow outgoing
Questi comandi impostano i valori predefiniti per negare l’ingresso e consentire le connessioni in uscita. Queste impostazioni predefinite del firewall potrebbero essere sufficienti per un personal computer, ma i server in genere devono rispondere alle richieste in arrivo da parte di utenti esterni.
Consentire le connessioni SSH
Se abilitassi ora il firewall UFW, sarebbero negate tutte le connessioni in entrata. Devi creare regole che consentano esplicitamente connessioni in ingresso legittime, ad esempio connessioni SSH o HTTP, se vuoi che il server risponda a questi tipi di richieste. Se utilizzi un server cloud, è probabile che sia necessario consentire le connessioni SSH in entrata in modo da poter connettersi e gestire il server.
Per configurare il server per consentire le connessioni SSH in arrivo, puoi usare questo comando:
sudo ufw allow ssh
Il comando crea regole firewall che consentono tutte le connessioni sulla porta 22, che è la porta che il daemon SSH ascolta per impostazione predefinita. UFW sa cosa significano SSH e un certo numero di altri nomi di servizi perché sono elencati come servizi nel file /etc/services
.
Tuttavia, possiamo effettivamente scrivere la regola equivalente specificando la porta al posto del nome del servizio. Ad esempio, questo comando funziona come sopra:
sudo ufw allow 22
Se hai configurato il tuo demone SSH per utilizzare una porta diversa, dovrai specificare la porta appropriata. Ad esempio, se il server SSH è in ascolto sulla porta 2222 , è possibile utilizzare questo comando per consentire le connessioni su tale porta:
sudo ufw allow 2222
Ora che il tuo firewall è configurato per consentire le connessioni SSH in arrivo, possiamo abilitarlo.
Per consentire solo specifici IP:
sudo ufw allow from 15.15.15.51
sudo ufw allow from 15.15.15.51 to any port 22
Per abilitare solo alcune porte:
sudo ufw allow 6000:6007/tcp
sudo ufw allow 6000:6007/udp
Abilitare UFW
Per abilitare UFW, utilizza questo comando:
sudo ufw enable
Riceverai un avviso che dice che il comando potrebbe interrompere le connessioni SSH esistenti. Hai già impostato una regola firewall che consente le connessioni SSH, quindi dovrebbe andare bene continuare. Rispondere al prompt con y.
Il firewall è ora attivo. Sentiti libero di eseguire il comandosudo ufw status verbose
per vedere le regole che sono state impostate. Il resto di questo tutorial spiega come utilizzare UFW in modo più dettagliato, come consentire o negare diversi tipi di connessioni.
Abilitare richieste HTTP e HTTPS
A questo punto, dovresti consentire le altre connessioni a cui il tuo server deve rispondere. Le connessioni che devi consentire dipendono dalle tue esigenze specifiche. Fortunatamente, sai già come scrivere regole che consentano connessioni basate su un nome di servizio o una porta; lo abbiamo già fatto per SSH sulla porta 22 . Puoi anche farlo per HTTP e HTTPS:
- HTTP passa dalla porta 80, usata dai web server non crittografati. Per abilitare richieste sulla porta 80 utilizza
sudo ufw allow http
oppuresudo ufw allow 80
- HTTPS passa dalla porta 443, usata dai web server crittografati. Per abilitare richieste sulla porta 443 usa
sudo ufw allow https
oppuresudo ufw allow 443
- È possibile aprire entrambe le porte con una sola regola:
sudo ufw allow proto tcp from any to any port 80,443
- FTP passa dalla porta 21, usata per trasferimenti di file non cifrati (che probabilmente non dovresti usare comunque). Per abilitare traffico FTP utilizza
sudo ufw allow ftp
oppuresudo ufw allow 21/tcp
Negare le connessioni
Se non è stata modificata la politica predefinita per le connessioni in entrata, UFW è configurato per negare tutte le connessioni in entrata. In genere, questo semplifica il processo di creazione di un criterio firewall sicuro richiedendo la creazione di regole che consentano esplicitamente porte e indirizzi IP specifici. Tuttavia, a volte serve negare connessioni specifiche basate sull’indirizzo IP o sulla sottorete di origine, forse perché sai che il tuo server viene attaccato da lì. Inoltre, se desideri modificare la politica in ingresso predefinita in allow (che non è consigliato), è necessario creare regole di rifiuto per tutti i servizi o gli indirizzi IP per i quali non desideri consentire le connessioni. Per scrivere le regole di negazione puoi usare i comandi sopra descritti, sostituendoallow
con deny
.
Ad esempio, per negare le connessioni HTTP puoi utilizzare questo comando:
sudo ufw deny http
Oppure se vuoi negare tutte le connessioni da 150.150.150.51 puoi usare questo comando:
sudo ufw deny from 150.150.150.51
Eliminare le regole
Sapere come eliminare le regole del firewall è importante quanto sapere come crearle. Esistono due modi diversi per specificare quali regole eliminare: per numero di regola o per la regola effettiva (simile a come le regole sono state specificate al momento della creazione). Iniziamo con il metodo di eliminazione per numero di regola perché è più semplice, rispetto alla scrittura delle regole effettive da eliminare, se sei nuovo in UFW.
Per numero di regola
Se stai usando il numero della regola per eliminare le regole del firewall, la prima cosa da fare è ottenere un elenco delle regole del tuo firewall. Il comando di stato UFW ha un’opzione per visualizzare i numeri accanto a ciascuna regola, come illustrato qui:
sudo ufw status numbered
Numbered Output:
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 150.150.150.0/24
[ 2] 80 ALLOW IN Anywhere
Per eliminare la regola 2 puoi specificarla in un comando di cancellazione UFW come questo:
sudo ufw delete 2
Dopo un prompt di conferma il sistema elimina la regola 2. Nota che se hai IPv6 abilitato devi cancellare anche la regola IPv6 corrispondente.
Secondo la regola effettiva
L’alternativa ai numeri delle regole è specificare la regola effettiva da eliminare. Ad esempio, se desideri rimuovere la regola allow http
è possibile usare questo comando:
sudo ufw delete allow http
Verificare dello stato e delle regole UFW
In qualsiasi momento, puoi controllare lo stato di UFW con questo comando:
sudo ufw status verbose
Disabilitare o reimpostare UFW
Se decidi di non voler utilizzare UFW, puoi disabilitarlo con questo comando:
sudo ufw disable
Qualsiasi regola creata con UFW non sarà più attiva. È sempre possibile eseguire sudo ufw enable
se è necessario attivarlo in seguito.
Se hai già configurato le regole UFW ma decidi di voler ricominciare, puoi usare il comando reset:
sudo ufw reset
Questo comando disabilita UFW ed elimina tutte le regole precedentemente definite. Tieni presente che le politiche di default non cambieranno alle loro impostazioni originali.
Log di UFW
Eseguisudo ufw status verbose
per verificare se il log è attivo. Se è disattivato puoi abilitarlo con sudo ufw logging
oppure sudo ufw logging on
. Per disabilitare il logging digita sudo ufw logging off
. Puoi trovare il file di log in /var/log/
, il nome file inizia con ufw.
Conclusione
Il tuo firewall dovrebbe ora essere configurato per consentire (almeno) connessioni SSH ed accettare le richieste tipiche di un web server. Assicurati di consentire qualsiasi altra connessione in entrata del tuo server, limitando nel contempo le connessioni non necessarie, in modo che il tuo server sia funzionante e sicuro.
Articoli correlati
Autore
