Introduzione
Configurare un firewall funzionante è cruciale per la sicurezza del tuo server cloud. In precedenza, la configurazione di un firewall avveniva attraverso utilità complesse o arcane. Molte di queste utilità (ad esempio, iptables
) hanno molte funzionalità integrate, ma richiedono sforzo aggiuntivo da parte dell’utente per imparare e comprenderle.
Un’altra opzione è UFW, o Uncomplicated Firewall. UFW è un front-end per iptables
che mira a fornire un’interfaccia più user-friendly rispetto ad altre utilità di gestione dei firewall. UFW è ben supportato nella comunità Linux e di solito viene installato di default su molte distribuzioni.
In questo tutorial, configurerai un firewall utilizzando UFW per proteggere un server cloud Ubuntu o Debian. Imparerai anche come impostare le regole predefinite di UFW per consentire o negare connessioni per porte e indirizzi IP, eliminare le regole che hai creato, disabilitare e abilitare UFW e ripristinare tutto alle impostazioni predefinite se preferisci.
Prerequisiti
Per seguire questo tutorial, avrai bisogno di un server che esegua Ubuntu o Debian. Il tuo server dovrebbe avere un utente non root con privilegi sudo. Per configurare questo su Ubuntu, segui la nostra guida su Configurazione Iniziale del Server con Ubuntu 20.04. Per configurare questo su Debian, segui la nostra guida su Configurazione Iniziale del Server con Debian 11. Entrambe queste guide di configurazione iniziale del server assicureranno che tu abbia UFW installato sulla tua macchina e che tu abbia un ambiente sicuro che puoi utilizzare per praticare la creazione di regole del firewall.
Utilizzo di IPv6 con UFW
Se il tuo Virtual Private Server (VPS) è configurato per IPv6, assicurati che UFW sia configurato per supportare IPv6 in modo da configurare sia le regole del firewall IPv4 che IPv6. Per fare ciò, apri il file di configurazione di UFW nel tuo editor di testo preferito. Qui useremo nano
:
Conferma che IPV6
sia impostato su sì
:
/etc/default/ufw# /etc/default/ufw
#
# Imposta su sì per applicare regole per supportare IPv6 (no significa solo IPv6 su loopback
# accettato). Dovrai 'disabilitare' e poi 'abilitare' il firewall per
# che i cambiamenti abbiano effetto.
IPV6=yes
…
Dopo aver apportato le modifiche, salva ed esci dal file. Se stai usando nano
, premi CTRL + X
, Y
, e poi INVIO
.
Ora riavvia il tuo firewall disabilitandolo prima:
OutputFirewall stopped and disabled on system startup
Quindi riabilitalo:
OutputFirewall is active and enabled on system startup
Il tuo firewall UFW è ora configurato per configurare il firewall sia per IPv4 che per IPv6 quando appropriato. Successivamente, modificherai le regole predefinite per le connessioni al tuo firewall.
Configurazione delle Impostazioni Predefinite di UFW
Puoi migliorare l’efficienza del tuo firewall definendo regole predefinite per consentire o negare connessioni. La predefinita di UFW è di 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 può connettersi esternamente. Per aggiornare le regole predefinite impostate da UFW, affronta prima la regola delle connessioni in ingresso:
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Successivamente, affronta la regola delle connessioni in uscita:
OutputDefault outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
Nota: Se desideri essere più restrittivo, puoi negare tutte le richieste in uscita. Questa opzione è basata sulle preferenze personali. Ad esempio, se hai un server cloud pubblicamente accessibile, potrebbe aiutare a prevenire qualsiasi tipo di connessione shell remota. Tuttavia, rende il tuo firewall più complicato da gestire perché dovrai impostare regole per tutte le connessioni in uscita. Puoi impostarlo come predefinito con il seguente comando:
Consentire Connessioni al Firewall
Consentire le connessioni richiede di modificare le regole del firewall, che puoi fare emettendo comandi nel terminale. Se attivassi il firewall ora, ad esempio, negherebbe tutte le connessioni in entrata. Se sei connesso tramite SSH al tuo server, questo sarebbe un problema perché verresti bloccato dal server. Evita che ciò accada abilitando le connessioni SSH al tuo server:
Se le tue modifiche sono state eseguite con successo, riceverai l’output seguente:
OutputRule added
Rule added (v6)
UFW viene fornito con alcune impostazioni predefinite come il comando ssh
utilizzato nell’esempio precedente. In alternativa, puoi consentire connessioni in ingresso alla porta 22/tcp
, che utilizza il Protocollo di Controllo della Trasmissione (TCP) per ottenere lo stesso risultato:
Se provassi questo dopo aver già eseguito allow ssh
, tuttavia, riceveresti il seguente messaggio poiché la regola esiste già:
OutputSkipping adding existing rule
Skipping adding existing rule (v6)
Se il tuo server SSH è in esecuzione sulla porta 2222
, potresti consentire connessioni con la stessa sintassi, ma sostituendo la porta con 2222
. Si noti che se si utilizza solo il numero di porta, influisce anche su tcp
e udp
:
OutputRule added
Rule added (v6)
Protezione dei server Web
Per proteggere un server web con accesso FTP, sarà necessario consentire le connessioni per la porta 80/tcp
.
Consentire le connessioni per la porta 80
è utile per i server web come Apache e Nginx che ascoltano le richieste di connessione HTTP. Per farlo, consenti le connessioni alla porta 80/tcp
:
Di solito UFW fornisce i profili con le regole necessarie affinché il server web funzioni. In caso contrario, i profili del server web possono essere archiviati come “WWW” e aperti come ftp
o tcp
, come nei seguenti esempi:
Puoi anche utilizzare ftp
o la porta 21
per consentire le connessioni FTP:
Per le connessioni FTP, è necessario consentire anche le connessioni per la porta 20
:
Le tue modifiche dipenderanno da quali porte e servizi devi aprire, e potrebbe essere necessario effettuare dei test. Ricorda anche di lasciare consentita la connessione SSH.
Specificare gli intervalli di porte
Puoi anche specificare intervalli di porte da consentire o negare con UFW. Per farlo, devi prima specificare la porta all’estremità inferiore dell’intervallo, seguita da due punti (:
), e poi seguita dall’estremità superiore dell’intervallo. Infine, devi specificare a quale protocollo (o tcp
o udp
) desideri che si applichino le regole.
Ad esempio, il seguente comando consentirà l’accesso TCP a ogni porta da 1000
a 2000
, inclusa:
Allo stesso modo, il seguente comando negherà le connessioni UDP a ogni porta da 1234
a 4321
:
Specificare gli Indirizzi IP
Puoi consentire connessioni da un indirizzo IP specifico come nel seguente esempio. Assicurati di sostituire l’indirizzo IP con le tue informazioni:
Come dimostrano questi esempi, hai molta flessibilità quando si tratta di regolare le regole del firewall consentendo selettivamente determinate porte e connessioni di indirizzi IP. Dai un’occhiata alla nostra guida per saperne di più su come consentire le connessioni in entrata da un indirizzo IP o subnet specifico.
Negare Connessioni
Se volessi aprire tutte le porte del tuo server — cosa non raccomandata — potresti consentire tutte le connessioni e poi negare l’accesso alle porte a cui non vuoi concedere l’accesso. Di seguito è riportato un esempio su come negare l’accesso alla porta 80
:
Eliminazione delle regole
Se desideri eliminare alcune delle regole che hai impostato, utilizza delete
e specifica la regola che desideri eliminare:
OutputRule deleted
Rule deleted (v6)
Se le regole sono lunghe e complesse, c’è un approccio alternativo a due fasi. Prima, genera un elenco numerato delle regole correnti:
Quindi, con questo elenco numerato, verifica quali regole sono attualmente consentite ed elimina la regola facendo riferimento al suo numero:
OutputStatus: active
To Action From
-- ------ ----
[ 1] OpenSSH ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN Anywhere
[ 3] 2222/tcp ALLOW IN Anywhere
[ 4] 80 ALLOW IN Anywhere
[ 5] 20/tcp ALLOW IN Anywhere
…
Ad esempio, se la porta 80
è il numero 4 nell’elenco, utilizzerebbe la seguente sintassi. Potresti anche essere sollecitato con una domanda se desideri procedere con l’operazione. Puoi decidere sì y
o no n
:
OutputDeleting:
allow 80
Proceed with operation (y|n)? y
Rule deleted (v6)
Abilitazione di UFW
Una volta definito tutte le regole che desideri applicare al tuo firewall, puoi abilitare UFW in modo che inizi ad applicarle. Se ti stai connettendo tramite SSH, assicurati di impostare la porta SSH, comunemente la porta 22
, per consentire la ricezione delle connessioni. Altrimenti, potresti rimanere bloccato fuori dal tuo server:
OutputFirewall is active and enabled on system startup
Per confermare che le modifiche siano state effettuate, controlla lo stato per rivedere l’elenco delle regole:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
22/tcp ALLOW Anywhere
2222/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
80/tcp DENY Anywhere
…
Puoi anche utilizzare verbose
per un output più esaustivo:
Per disabilitare UFW, esegui il seguente comando:
OutputFirewall stopped and disabled on system startup
Ripristino delle Impostazioni Predefinite
Se per qualche motivo hai bisogno di ripristinare le regole del tuo server cloud alle impostazioni predefinite, puoi farlo con il comando ufw reset
. Nota che riceverai un prompt per scrivere y
o n
prima di ripristinare tutto poiché farlo può interrompere le connessioni SSH esistenti:
OutputResetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530'
Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530'
Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'
Il ripristino delle impostazioni predefinite disabiliterà UFW e cancellerà qualsiasi regola che hai precedentemente definito. Le impostazioni predefinite, tuttavia, non torneranno ai loro valori originali se le hai modificate. Ora puoi iniziare da zero con UFW e personalizzare le tue regole e connessioni a tuo piacimento.
Conclusione
In questo tutorial, hai imparato come configurare e impostare il tuo server cloud per consentire o limitare l’accesso a un sottoinsieme di porte o indirizzi IP. Inoltre, hai esercitato l’eliminazione di eventuali regole che non desideri più e confermato che tali modifiche siano state considerate disabilitando e poi abilitando il firewall UFW. Infine, hai imparato come ripristinare il firewall UFW alle impostazioni predefinite. Per saperne di più su cosa è possibile fare con UFW, consulta la nostra guida su UFW Essentials: Regole e Comandi Firewall Comuni.