Come configurare un firewall con UFW su un server cloud Ubuntu e Debian

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:

  1. sudo nano /etc/default/ufw

Conferma che IPV6 sia impostato su :

/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:

  1. sudo ufw disable
Output
Firewall stopped and disabled on system startup

Quindi riabilitalo:

  1. sudo ufw enable
Output
Firewall 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:

  1. sudo ufw default deny incoming
Output
Default incoming policy changed to 'deny' (be sure to update your rules accordingly)

Successivamente, affronta la regola delle connessioni in uscita:

  1. sudo ufw default allow outgoing
Output
Default 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:

  1. sudo ufw default deny outgoing

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:

  1. sudo ufw allow ssh

Se le tue modifiche sono state eseguite con successo, riceverai l’output seguente:

Output
Rule 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:

  1. sudo ufw allow 22/tcp

Se provassi questo dopo aver già eseguito allow ssh, tuttavia, riceveresti il seguente messaggio poiché la regola esiste già:

Output
Skipping 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:

  1. sudo ufw allow 2222/tcp
Output
Rule 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:

  1. sudo ufw allow 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:

  1. sudo ufw allow www

Puoi anche utilizzare ftp o la porta 21 per consentire le connessioni FTP:

  1. sudo ufw allow ftp
  1. sudo ufw allow 21/tcp

Per le connessioni FTP, è necessario consentire anche le connessioni per la porta 20:

  1. sudo ufw allow 20/tcp

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:

  1. sudo ufw allow 1000:2000/tcp

Allo stesso modo, il seguente comando negherà le connessioni UDP a ogni porta da 1234 a 4321:

  1. sudo ufw deny 1234:4321/udp

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:

  1. sudo ufw allow from your_server_ip

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:

  1. sudo ufw deny 80/tcp

Eliminazione delle regole

Se desideri eliminare alcune delle regole che hai impostato, utilizza delete e specifica la regola che desideri eliminare:

  1. sudo ufw delete allow 80/tcp
Output
Rule 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:

  1. sudo ufw status numbered

Quindi, con questo elenco numerato, verifica quali regole sono attualmente consentite ed elimina la regola facendo riferimento al suo numero:

  1. sudo ufw delete number
Output
Status: 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:

  1. sudo ufw delete 4
Output
Deleting: 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:

  1. sudo ufw enable
Output
Firewall is active and enabled on system startup

Per confermare che le modifiche siano state effettuate, controlla lo stato per rivedere l’elenco delle regole:

  1. sudo ufw status
Output
Status: 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:

  1. sudo ufw status verbose

Per disabilitare UFW, esegui il seguente comando:

  1. sudo ufw disable
Output
Firewall 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:

  1. sudo ufw reset
Output
Resetting 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.

Source:
https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server