Introduzione
Debian include diversi pacchetti che forniscono strumenti per la gestione di un firewall con iptables installati come parte del sistema di base. Può essere complicato per i principianti imparare come utilizzare lo strumento iptables per configurare e gestire correttamente un firewall, ma UFW lo semplifica.
UFW (Uncomplicated Firewall) è un front-end intuitivo per la gestione delle regole del firewall iptables e il suo obiettivo principale è quello di semplificare la gestione di iptables o come dice il nome senza complicazioni.
In questo tutorial, ti mostreremo come impostare un firewall con UFW su Debian 10 Buster.
Prerequisiti
Prima di procedere con questa esercitazione, assicurarsi che l'utente che ha effettuato l'accesso abbia i privilegi di sudo.
Se desideri installare UFW Firewall su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.
Connessione al Server
Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:
ssh root@IP_DEL_SERVER
Successivamente sarà necessario inserire la password dell'utente root.
Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:
ssh nome_utente@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password del vostro utente.
La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Installare UFW
UFW non è installato di default in Debian 10. Puoi installare il pacchetto ufw
digitando il seguente comando:
sudo apt install ufw
Controllare lo stato UFW
Una volta completato il processo di installazione, è possibile verificare lo stato di UFW con il seguente comando:
sudo ufw status
L'output sarà simile al seguente:
Status: inactive
UFW è disabilitato per impostazione predefinita. L'installazione non attiverà automaticamente il firewall per evitare un blocco dal server.
Regole predefinite UFW
Per impostazione predefinita, UFW bloccherà tutte le connessioni in entrata e consentirà tutte le connessioni in uscita. Ciò significa che chiunque tenti di accedere al proprio server non sarà in grado di connettersi se non si apre specificamente la porta, mentre tutte le applicazioni e i servizi in esecuzione sul server saranno in grado di accedere al mondo esterno.
Le regole di default sono definite nel file /etc/default/ufw
e possono essere cambiate usando il comando sudo ufw default <policy> <chain>
.
Le politiche del firewall sono la base per la creazione di regole più dettagliate e definite dall'utente. Nella maggior parte dei casi, i criteri predefiniti UFW iniziali sono un buon punto di partenza.
Profili applicativi
Quando si installa un pacchetto con apt
questo, verrà aggiunto un profilo dell'applicazione alla directory /etc/ufw/applications.d
che descrive il servizio e contiene le impostazioni UFW.
Per elencare tutti i profili applicazione disponibili sul tipo di sistema:
sudo ufw app list
A seconda dei pacchetti installati sul tuo sistema, l'output sarà simile al seguente:
Available applications:
AIM
Bonjour
CIFS
DNS
Deluge
IMAP
IMAPS
IPP
KTorrent
Kerberos Admin
Kerberos Full
Kerberos KDC
Kerberos Password
LDAP
LDAPS
LPD
MSN
MSN SSL
Mail submission
NFS
OpenSSH
POP3
...
Per trovare ulteriori informazioni su un profilo specifico e regole incluse, utilizzare il comando seguente:
sudo ufw app info OpenSSH
Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
Port:
22/tcp
A L'output sopra ci dice che il profilo OpenSSH utilizza la porta 22
.
Consentire connessioni SSH
Prima di abilitare il firewall UFW, dobbiamo prima consentire le connessioni SSH in entrata.
Se ti stai connettendo al tuo server da una posizione remota, se abiliti il firewall UFW prima di consentire esplicitamente le connessioni SSH in arrivo, non sarai più in grado di connetterti al tuo server Debian.
Per configurare il firewall UFW per consentire le connessioni SSH in entrata, eseguire il comando seguente:
sudo ufw allow OpenSSH
Rules updated
Rules updated (v6)
Se il server SSH è in ascolto su una porta diversa dalla porta predefinita 22, sarà necessario aprire quella porta.
Ad esempio, il server ssh è in ascolto sulla porta 8822
, è possibile utilizzare il comando seguente per consentire le connessioni su quella porta:
sudo ufw allow 8822/tcp
Abilitare UFW
Ora che il firewall UFW è configurato per consentire connessioni SSH in entrata, è possibile abilitarlo eseguendo:
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Sarai avvisato che l'abilitazione del firewall potrebbe interrompere le connessioni ssh esistenti, basta digitare y
e premere Enter
.
Consentire connessioni su altre porte
A seconda delle applicazioni in esecuzione sul tuo server e delle tue esigenze specifiche dovrai anche consentire l'accesso in entrata ad alcune altre porte.
Di seguito sono riportati alcuni esempi di come consentire le connessioni in entrata ad alcuni dei servizi più comuni:
Apri la porta 80 - HTTP
Le connessioni HTTP possono essere consentite con il seguente comando:
sudo ufw allow http
Invece del profilo http
, è possibile utilizzare il numero di porta 80
:
sudo ufw allow 80/tcp
Apri la porta 443 - HTTPS
Le connessioni HTTP possono essere consentite con il seguente comando:
sudo ufw allow https
Per ottenere lo stesso risultato invece di https
puoi usare il numero di porta 443
:
sudo ufw allow 443/tcp
Porta aperta 8080
Se si esegue Tomcat o qualsiasi altra applicazione in ascolto sulla porta 8080, è possibile consentire connessioni in entrata con:
sudo ufw allow 8080/tcp
Consentire intervalli di porte
Con UFW puoi anche consentire l'accesso agli intervalli di porte. Quando si consentono intervalli di porte con UFW, è necessario specificare il protocollo, o tcp
o udp
.
Ad esempio, per abilitare le porte da 7100
a 7200
su entrambi tcp
e udp
, eseguire il seguente comando:
sudo ufw allow 7100:7200/tcp
Consentire indirizzi IP specifici
Se si desidera consentire l'accesso su tutte le porte da un indirizzo IP specifico, utilizzare il comando ufw allow from
seguito dall'indirizzo IP:
sudo ufw allow from 64.63.62.61
Consentire indirizzi IP specifici su una porta specifica
Per consentire l'accesso su una porta specifica, supponiamo che la porta 22 dalla tua macchina di lavoro con indirizzo IP 64.64.64.64
usa il seguente comando:
sudo ufw allow from 64.63.62.61 to any port 22
Consentire sottoreti (Subnets)
Il comando per consentire la connessione a una sottorete di indirizzi IP è lo stesso di quando si utilizza un singolo indirizzo IP, l'unica differenza è che è necessario specificare la maschera di rete. Ad esempio, se si desidera consentire l'accesso per gli indirizzi IP che vanno da 192.168.1.1
a 192.168.1.254
alla porta 3360
(MySQL) è possibile utilizzare questo comando:
sudo ufw allow from 192.168.1.0/24 to any port 3306
Consentire connessioni a un'interfaccia di rete specifica
Per consentire l'accesso su una porta specifica, supponiamo che la porta 3360 sia solo per l'interfaccia di rete specifica eth2
, utilizzare allow in on
e il nome dell'interfaccia di rete:
sudo ufw allow in on eth2 to any port 3306
Negare3 connessioni
Il criterio predefinito per tutte le connessioni in entrata è impostato su deny
che significa che UFW bloccherà tutte le connessioni in entrata a meno che non si apra specificamente la connessione.
Supponiamo che tu abbia aperto le porte 80
e 443
e che il tuo server sia sotto attacco dalla rete 23.24.25.0/24
. Per negare tutte le connessioni da 23.24.25.0/24
, utilizzare il seguente comando:
sudo ufw deny from 23.24.25.0/24
Se si desidera solo negare l'accesso alle porte 80
e 443
da 23.24.25.0/24
utilizzare:
sudo ufw deny from 23.24.25.0/24 to any port 80
Scrivere regole di negazione è la stessa cosa di scrivere regole permissive, bisogna solo bisogno di sostituire allow
con deny
.
Eliminare regole UFW
Esistono due modi diversi per eliminare le regole UFW, in base al numero della regola e specificando la regola effettiva.
L'eliminazione delle regole UFW in base al numero della regola è più semplice, soprattutto se non si conosce UFW.
Per eliminare una regola in base a un numero di regola, devi prima trovare il numero della regola che desideri eliminare. Per farlo, esegui il seguente comando:
sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 8080/tcp ALLOW IN Anywhere
Per eliminare la regola numero 3, la regola che consente le connessioni alla porta 8080, è possibile utilizzare il comando seguente:
sudo ufw delete 3
Il secondo metodo consiste nell'eliminare una regola specificando la regola effettiva. Ad esempio, se hai aggiunto una regola per aprire la porta 8069
puoi eliminarla con:
sudo ufw delete allow 8069
Disabilitare UFW
Se per qualsiasi motivo desideri interrompere UFW e disattivare tutte le regole eseguite:
sudo ufw disable
In seguito, se si desidera riattivare UTF e attivare tutte le regole, digitare:
sudo ufw enable
Ripristinare UFW
Il ripristino di UFW disabiliterà UFW ed eliminerà tutte le regole attive. Ciò è utile se si desidera ripristinare tutte le modifiche e ricominciare da capo.
Per ripristinare UFW è sufficiente digitare il seguente comando:
sudo ufw reset
Conclusione
Hai imparato come installare e configurare il firewall UFW sul tuo sistema Debian 10 Buster. Assicurarsi di consentire tutte le connessioni in entrata necessarie per il corretto funzionamento del sistema, limitando al contempo tutte le connessioni non necessarie.