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 [email protected]_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 [email protected]_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 [email protected]_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.