Un firewall correttamente configurato è uno degli aspetti più importanti della sicurezza generale del sistema.
UFW (Uncomplicated Firewall) è un front-end intuitivo per la gestione delle regole del firewall iptables. Il suo obiettivo principale è rendere la gestione di iptables più semplice o, come dice il nome, semplice.
Questo articolo descrive come configurare un firewall con UFW su Debian 10.
Prerequisiti #
Solo il root o l'utente con privilegi sudo possono gestire il firewall di sistema.
Installazione di UFW #
Immettere il comando seguente per installare ufw
pacchetto:
sudo apt update
sudo apt install ufw
Controllo stato UFW #
L'installazione non attiverà automaticamente il firewall per evitare un blocco dal server. Puoi controllare lo stato di UFW digitando:
sudo ufw status verbose
L'output sarà simile a questo:
Status: inactive
Se UFW è attivato, l'output sarà simile al seguente:
Politiche predefinite UFW #
Per impostazione predefinita, UFW blocca tutte le connessioni in entrata e consente tutte le connessioni in uscita. Ciò significa che chiunque tenti di accedere al tuo server non sarà in grado di connettersi a meno che tu non apra specificamente la porta. Le applicazioni e i servizi in esecuzione sul server potranno accedere al mondo esterno.
Le politiche predefinite sono definite in /etc/default/ufw
file e può essere modificato utilizzando il sudo ufw default <policy> <chain>
comando.
I criteri del firewall sono la base per la creazione di regole più dettagliate e definite dall'utente. In generale, le politiche predefinite UFW iniziali sono un buon punto di partenza.
Profili applicazione #
La maggior parte delle applicazioni viene fornita con un profilo dell'applicazione che descrive il servizio e contiene le impostazioni UFW. Il profilo viene creato automaticamente in /etc/ufw/applications.d
directory durante l'installazione del pacchetto.
Per elencare tutti i profili delle applicazioni disponibili sul tuo sistema, digita:
sudo ufw utf --help
A seconda dei pacchetti installati sul tuo sistema, l'output sarà simile al seguente:
Available applications:
DNS
IMAP
IMAPS
OpenSSH
POP3
POP3S
Postfix
Postfix SMTPS
Postfix Submission
...
Per trovare ulteriori informazioni su un profilo specifico e sulle regole incluse, utilizza le app info
comando, seguito dal nome del profilo. Ad esempio, per ottenere informazioni sul profilo OpenSSH che useresti:
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
L'output include il nome del profilo, il titolo, la descrizione e le regole del firewall.
Consenti connessioni SSH #
Prima di abilitare il firewall UFW, devi consentire le connessioni SSH in entrata.
Se ti connetti al tuo server da una posizione remota e abiliti il firewall UFW prima di consentire esplicitamente le connessioni SSH in entrata, non sarai più in grado di connetterti al tuo server Debian.
Per configurare il firewall UFW in modo che accetti le connessioni SSH, 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, dovrai aprire quella porta.
Ad esempio, il tuo server ssh è in ascolto sulla porta 7722
, eseguiresti:
sudo ufw allow 7722/tcp
Abilita UFW #
Ora che il firewall UFW è configurato per consentire le connessioni SSH in entrata, abilitalo eseguendo:
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Verrai avvisato che l'abilitazione del firewall potrebbe interrompere le connessioni ssh esistenti. Digita "y" e premi "Invio".
Apertura porte #
A seconda delle applicazioni in esecuzione sul tuo server, dovrai aprire le porte su cui vengono eseguiti i servizi.
Di seguito sono riportati alcuni esempi di come consentire connessioni in entrata ad alcuni dei servizi più comuni:
Apri porta 80 - HTTP #
Consenti connessioni HTTP:
sudo ufw allow http
Invece di http
profilo, puoi utilizzare il numero di porta, 80
:
sudo ufw allow 80/tcp
Apri porta 443 - HTTPS #
Consenti connessioni HTTPS:
sudo ufw allow https
Puoi anche utilizzare il numero di porta, 443
:
sudo ufw allow 443/tcp
Apri la porta 8080 #
Se esegui Tomcator qualsiasi altra applicazione in ascolto sulla porta 8080
apri la porta con:
sudo ufw allow 8080/tcp
Apertura degli intervalli di porte #
Con UFW, puoi anche consentire l'accesso agli intervalli di porte. Quando si apre un intervallo, è necessario specificare il protocollo della porta.
Ad esempio, per consentire le porte da 7100
a 7200
su entrambi tcp
e udp
, esegui il comando seguente:
sudo ufw allow 7100:7200/tcp
sudo ufw allow 7100:7200/udp
Consentire indirizzi IP specifici #
Per consentire l'accesso su tutte le porte da un indirizzo IP specifico, utilizza ufw allow from
comando 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, diciamo la porta 22
dalla tua macchina di lavoro con indirizzo IP 64.63.62.61 usa il seguente comando:
sudo ufw allow from 64.63.62.61 to any port 22
Consenti sottoreti #
Il comando per consentire la connessione da una sottorete di indirizzi IP è lo stesso di quando si utilizza un singolo indirizzo IP. L'unica differenza è che è necessario specificare la netmask. Ad esempio, se vuoi consentire l'accesso agli indirizzi IP che vanno da 192.168.1.1 a 192.168.1.254 alla porta 3360 (MySQL) puoi usare questo comando:
sudo ufw allow from 192.168.1.0/24 to any port 3306
Consenti connessioni a un'interfaccia di rete specifica #
Per consentire l'accesso su una porta specifica, diciamo la porta 3360 solo a una specifica interfaccia di rete eth2
, usa allow in on
e il nome dell'interfaccia di rete:
sudo ufw allow in on eth2 to any port 3306
Nega connessioni #
Il criterio predefinito per tutte le connessioni in entrata è impostato su deny
, il che significa che UFW bloccherà tutte le connessioni in entrata a meno che tu non apra specificamente la connessione.
Supponiamo che tu abbia aperto le porte 80
e 443
e il tuo server è sotto attacco da 23.24.25.0/24
Rete. Per negare tutte le connessioni da 23.24.25.0/24
, usa il seguente comando:
sudo ufw deny from 23.24.25.0/24
Se vuoi solo negare l'accesso alle porte 80
e 443
da 23.24.25.0/24
usa:
sudo ufw deny from 23.24.25.0/24 to any port 80
sudo ufw deny from 23.24.25.0/24 to any port 443
Scrivere regole di negazione equivale a scrivere regole di autorizzazione. Devi solo sostituire allow
con deny
.
Elimina regole UFW #
Esistono due modi diversi per eliminare le regole UFW. Per numero di regola e specificando la regola effettiva.
Eliminare le regole UFW in base al numero di regola è più semplice, soprattutto se non conosci UFW.
Per eliminare prima una regola in base al suo numero, devi 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, puoi utilizzare il seguente comando:
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 eliminarlo con:
sudo ufw delete allow 8069
Disabilita UFW #
Se per qualsiasi motivo vuoi interrompere UFW e disattivare tutte le regole esegui:
sudo ufw disable
Successivamente, se vuoi riattivare UTF e attivare tutte le regole, digita:
sudo ufw enable
Ripristina UFW #
Il ripristino di UFW disabiliterà UFW ed eliminerà tutte le regole attive. Questo è utile se vuoi annullare tutte le modifiche e ricominciare da capo.
Per ripristinare UFW è sufficiente digitare il seguente comando:
sudo ufw reset