GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare il firewall con UFW su Linux

Questa guida spiega cos'è UFW, come installare UFW in Linux e come configurare il firewall con UFW su vari sistemi operativi Linux.

Introduzione

La sicurezza è una cosa seria. Che tu stia eseguendo il tuo sistema operativo Linux nei data center o sul tuo desktop, dovresti proteggere il tuo sistema operativo da tutte le possibili minacce.

In effetti, i server in esecuzione nell'ambiente aziendale saranno ben protetti. La maggior parte delle aziende investe milioni di dollari per proteggere la propria infrastruttura.

Ci sarà un team di rete separato, un team firewall, un team di sicurezza per proteggere il tuo ambiente e i server Linux. Questo non sarà il caso quando esegui Linux sui tuoi desktop o server.

Dovresti essere consapevole di come proteggere le tue macchine Linux con gli strumenti giusti. Uno di questi strumenti è UFW .

Cos'è UFW?

UFW , sta per U F complicato irew tutto, è un programma firewall che viene preinstallato per impostazione predefinita con le distribuzioni basate su Ubuntu.

Perché UFW invece di iptables? Potresti chiederti.

Se non lo sai già, Netfilter è un sistema di filtraggio dei pacchetti fornito con un kernel Linux e iptables viene utilizzato per manipolare i filtri di rete con una serie di comandi.

Avere familiarità con iptables può richiedere tempo e potrebbe essere un compito arduo. Per semplificare la gestione del firewall, sono stati creati molti front-end per la creazione di iptables. UFW è uno di questi.

UFW è un front-end a riga di comando per gestire iptables. Fornisce un framework per la gestione e la manipolazione del firewall netfilter.

UFW è disponibile per impostazione predefinita in tutte le installazioni di Ubuntu dopo la versione 8.04 LTS.

C'è anche un front-end grafico per UFW chiamato Gufw . Ne discuteremo in una guida separata. In questo articolo, il nostro obiettivo sarà l'utilizzo di ufw dalla riga di comando.

Senza ulteriori indugi, andiamo avanti e vediamo come installare e configurare il firewall UFW su Linux.

1. Installa UFW in Linux

UFW viene preinstallato con la maggior parte delle distribuzioni basate su Debian e Arch. Per verificare se UFW è installato o meno, eseguire il comando seguente:

$ which ufw
/usr/sbin/ufw
$ ufw version
ufw 0.36
Copyright 2008-2015 Canonical Ltd.

Se non è installato sulla tua distribuzione, puoi installarlo utilizzando il gestore di pacchetti predefinito della tua distribuzione.

Per installare UFW in Alpine Linux, esegui:

$ sudo apk add ufw

Installa UFW in Arch Linux e le sue varianti come EndeavourOS e Manjaro Linux:

$ sudo pacman -S ufw

Installa ufw in Debian, Ubuntu e i suoi derivati:

$ sudo apt update
$ sudo apt install ufw

Installa UFW in Fedora:

$ sudo dnf install ufw

UFW è disponibile in [EPEL] repository per sistemi operativi Enterprise Linux come RHEL, CentOS, AlmaLinux e Rocky Linux.

Abilita [EPEL] repository e installa UFW in RHEL, CentOS, AlmaLinux, Rocky Linux come di seguito:

$ sudo dnf install epel-release
$ sudo dnf install ufw

Installa UFW in openSUSE:

$ sudo zypper install ufw

1.1. Abilita, avvia e arresta il servizio UFW

Nei sistemi basati su Debian, il demone UFW verrà avviato e abilitato automaticamente.

Eseguire il comando seguente per verificare lo stato del servizio UFW:

$ systemctl status ufw

Risultato di esempio:

● ufw.service - Uncomplicated firewall
     Loaded: loaded (/usr/lib/systemd/system/ufw.service; enabled; vendor prese>
     Active: active (exited) since Mon 2021-07-05 20:08:01 IST; 44s ago
       Docs: man:ufw(8)
             man:ufw-framework(8)
             file://usr/share/doc/ufw/README
    Process: 21690 ExecStart=/usr/libexec/ufw/ufw-init start (code=exited, stat>
   Main PID: 21690 (code=exited, status=0/SUCCESS)
        CPU: 169ms

Jul 05 20:08:01 ostechnix systemd[1]: Starting Uncomplicated firewall...
Jul 05 20:08:01 ostechnix systemd[1]: Finished Uncomplicated firewall.

L'altro modo per verificare se il servizio UFW è abilitato e attivo:

$ systemctl is-enabled ufw
enabled
$ systemctl is-active ufw
active

Se il servizio UFW non viene avviato automaticamente dopo l'installazione, eseguire il comando seguente per avviare il servizio UFW:

$ sudo systemctl start ufw

Ufw dovrebbe anche essere abilitato per l'avvio automatico tra i riavvii del sistema.

$ sudo systemctl enable ufw

Oppure puoi combinare entrambi i comandi in uno per abilitare e avviare il servizio UFW in una volta sola, come di seguito:

$ sudo systemctl enable --now ufw

Per interrompere il servizio UFW, esegui semplicemente:

$ sudo systemctl stop ufw

3. Imposta il firewall con UFW su Linux

3.1. Ottenere aiuto

Se non conosci UFW, la prima cosa da fare dopo l'installazione è fare riferimento alla sezione della guida e alla pagina man di UFW per avere un'idea di base sull'utilizzo di UFW.

$ ufw --help
$ man ufw

Se hai dimenticato la sintassi o hai bisogno di un riferimento per una particolare funzionalità di ufw, questi due comandi saranno molto utili.

3.2. Imposta regole predefinite

Utilizzando UFW, puoi creare regole (o criteri) del firewall per consentire o negare un servizio specifico. Attraverso queste politiche, indichi all'UFW quale porta, servizio, indirizzi IP e interfacce dovrebbero essere consentiti o negati.

Esistono criteri predefiniti forniti con ufw. Il criterio predefinito eliminerà tutte le connessioni in entrata e consentirà tutte le connessioni in uscita.

IMPORTANTE: Se stai configurando ufw in un server remoto, assicurati di aver consentito la porta ssh o il servizio prima di abilitare il firewall ufw.

La politica in entrata predefinita negherà tutte le connessioni in entrata. Quindi, se non hai configurato le regole per consentire SSH, verrai bloccato fuori dal sistema remoto e non potrai accedere al sistema. Questo non è il caso quando esegui ufw sul tuo sistema locale.

Le politiche predefinite sono definite in /etc/default/ufw file. Ecco il contenuto del file:

Da qui, possiamo impostare criteri predefiniti.

In alternativa, possiamo utilizzare il ufw allow comando per impostare le politiche predefinite per i comandi in entrata e in uscita:

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

3.2.1. Verifica lo stato delle regole del firewall UFW

Per verificare se i criteri predefiniti sono attivi, eseguire il comando seguente:

$ sudo ufw status

Risultato di esempio:

Status: active

To                         Action      From
--                         ------      ----
SSH                        ALLOW       Anywhere                  
224.0.0.251 mDNS           ALLOW       Anywhere                  
SSH (v6)                   ALLOW       Anywhere (v6)             
ff02::fb mDNS              ALLOW       Anywhere (v6)             

E per informazioni più dettagliate sullo stato, usa questo comando:

$ sudo ufw status verbose

Risultato di esempio:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (SSH)               ALLOW IN    Anywhere                  
224.0.0.251 5353/udp (mDNS) ALLOW IN    Anywhere                  
22/tcp (SSH (v6))          ALLOW IN    Anywhere (v6)             
ff02::fb 5353/udp (mDNS)   ALLOW IN    Anywhere (v6)             

Per visualizzare il formato numerato, eseguire:

$ sudo ufw status numbered

3.2.2. Aggiungi regole

Fammi prendere SSH come esempio per dimostrare come aggiungere regole firewall con ufw comando. Dai un'occhiata ai seguenti comandi:

$ sudo ufw allow ssh
$ sudo ufw allow 22
$ sudo ufw allow 22/tcp
$ sudo ufw allow 2222/tcp

Tutti i comandi hanno lo stesso scopo.

[ 1 ] - Nel primo comando, sto consentendo a tutti l'accesso a ssh servizio. UFW sa che per impostazione predefinita ssh è in ascolto sulla porta 22 . Quindi, quando usi consenti ssh servizio, applicherà anche la regola per la porta 22 .
[ 2 ] - Nel secondo comando, sto dicendo esplicitamente di consentire le connessioni in entrata per la porta 22 .
[ 3 ] - Il terzo comando è lo stesso del secondo comando. Consente a tutti l'accesso a tcp porta 22 . Sono supportati entrambi i protocolli TCP e UDP.
[ 4 ] - Nel quarto comando, consento una porta ssh personalizzata (ad esempio 2222 ) per accettare le connessioni in entrata.

Puoi usare questi quattro comandi non solo per ssh ma per qualsiasi servizio e porta. Ad esempio, se vuoi connetterti a PostgreSQL in esecuzione sulla porta 5433 , quindi la regola dovrebbe essere aggiunta come di seguito.

$ sudo ufw allow 5433

Allo stesso modo, possiamo usare ufw deny comando per rifiutare le connessioni in entrata:

$ sudo ufw deny 5433

Questo comando negherà il traffico sulla porta 5433 .

3.2.3. Elimina le regole del firewall UFW

Per rimuovere una regola o un criterio, puoi utilizzare il comando ufw delete.

Ad esempio, se non desideri più consentire il traffico HTTP, esegui semplicemente:

sudo ufw delete allow 80

3.2.4. Abilita, disabilita e ricarica le regole del firewall UFW

Questo è diverso dall'abilitazione e dall'avvio del demone UFW. L'avvio dell'unità systemd ufw non applicherà le regole del firewall. UFW ha comandi dedicati per abilitare, disabilitare e ricaricare le regole del firewall.

Per rendere effettive le regole, devi eseguire il seguente comando:

$ sudo ufw enable
Firewall is active and enabled on system startup

Come ho già accennato, utilizzare il seguente comando per visualizzare lo stato delle regole del firewall UFW:

$ sudo ufw status

Risultato di esempio:

Status: active

To                         Action      From
--                         ------      ----
SSH                        ALLOW       Anywhere                  
224.0.0.251 mDNS           ALLOW       Anywhere                  
SSH (v6)                   ALLOW       Anywhere (v6)             
ff02::fb mDNS              ALLOW       Anywhere (v6)             

Per disabilitare le regole del firewall, esegui:

$ sudo ufw disable
Firewall stopped and disabled on system startup

Nota: Il comando precedente disabiliterà solo le regole del firewall. Il demone UFW sarà ancora in esecuzione e abilitato al riavvio.

Dopo aver aggiunto qualsiasi criterio, ricaricare l'ufw affinché il criterio abbia effetto utilizzando il comando:

$ sudo ufw reload

3.2.5. Aggiunta di criteri per gli intervalli di porte

Puoi aggiungere una policy per un intervallo di porte invece di creare una policy per una singola porta:

$ sudo ufw allow 8000:8080/tcp
$ sudo ufw deny 8000:8080/tcp

3.2.6. Aggiunta di criteri per indirizzi IP, sottoreti e porte specifici

Puoi creare regole più dettagliate con ufw. Diciamo che se vuoi che il tuo server sia connesso (ssh'ed) solo da un IP specifico, puoi farlo aggiungendo la seguente regola.

$ sudo ufw allow from 192.168.156.2
$ sudo ufw allow from 192.168.156.2 to any port 2222

Il primo comando consente all'IP specificato di connettersi in base alle porte aperte. Il secondo comando specifica che l'utente può connettersi alla porta 2222 solo da 192.168.156.2 .

Per consentire a un gruppo di IP della stessa sottorete di connettersi a ssh , puoi utilizzare la sottorete mentre aggiungi una regola, consentendo a tutte le parti IP di quella sottorete di essere collegate alla porta 2222 .

$ sudo ufw allow from 192.168.156.1/24 to any port 2222

3.2.7. Aggiunta della politica dell'interfaccia di rete

Puoi anche creare criteri basati su interfacce di rete. Il comando seguente creerà un criterio per accettare le connessioni per l'interfaccia di rete en01 alla porta 2222 .

$ sudo ufw allow in on en01 to any port 2222

3.2.8. Testare le regole senza applicarle utilizzando l'opzione di prova a secco

UFW ha --dry-run opzione per testare le regole senza applicarle effettivamente. Ad esempio, ciò che verrebbe applicato se si apre la porta SSH:

$  sudo ufw --dry-run allow ssh

Come puoi vedere nell'output sopra, il comando ufw emette solo le regole risultanti, ma non le applica quando aggiungiamo --dry-run opzione. Questo è utile quando vuoi testare le politiche del firewall.

3.2.9. Aggiungi un commento a ciascuna regola

Potresti aver aggiunto diverse regole. Dopo un determinato numero di regole (Dì 50), non hai modo di ricordare di cosa tratta la regola.

In tal caso, puoi aggiungere un commento a ciascuna regola come di seguito:

$ sudo ufw allow 22 comment 'open port 22 for ssh'

Il comando precedente consentirà tutto il traffico alla porta 22 e aggiungerà un commento per la regola. In questo modo puoi trovare facilmente lo scopo di una regola specifica.

4. Quale regola ha la priorità?

La priorità è importante quando si creano più regole per lo stesso servizio/porte. La politica ottiene la priorità nell'ordine in cui è stata creata. Esegui il comando seguente che ti darà la politica insieme alla sua priorità.

$ sudo ufw status numbered

Risultato di esempio:

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22                         ALLOW IN    Anywhere                  
[ 2] 2222                       ALLOW IN    Anywhere                  
[ 3] 2222                       ALLOW IN    192.168.156.2             
[ 4] 2222                       DENY IN     192.168.157.0/24          
[ 5] 22 (v6)                    ALLOW IN    Anywhere (v6)             
[ 6] 2222 (v6)                  ALLOW IN    Anywhere (v6)   

Dai un'occhiata a [ 4 ] nell'output sopra. Qualsiasi connessione alla porta 2222 dalla sottorete 192.168.157.0/24 dovrebbe essere abbandonato.

Ma quando provo a connettermi da una delle macchine della stessa sottorete, la connessione sarà consentita perché la priorità alta è stata assegnata a [ 2 ].

Per ignorare questo comportamento devi creare regole con priorità. Puoi eliminare la regola esistente e aggiungere una nuova regola con priorità e ricaricare il servizio.

$ sudo ufw delete 4
Deleting:
deny from 192.168.157.0/24 to any port 2222
Proceed with operation (y|n)? y
Rule deleted
$ sudo ufw insert 2 deny from 192.168.157.0/24 to any port 2222
Rule inserted
$ sudo ufw reload
Firewall reloaded
$ sudo ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN Anywhere
[ 2] 2222 DENY IN 192.168.157.0/24
[ 3] 2222 ALLOW IN Anywhere
[ 4] 2222 ALLOW IN 192.168.156.2
[ 5] 22 (v6) ALLOW IN Anywhere (v6)
[ 6] 2222 (v6) ALLOW IN Anywhere (v6)

Dai un'occhiata all'output sopra. La priorità viene riassegnata a [ 2 ]. Ora se provo a connettermi alla porta 2222
da 192.168.157.0/24 , la mia connessione verrà negata.

5. Registrazione UFW

I registri sono la soluzione migliore quando qualcosa è andato storto.

Per disabilitare la registrazione UFW, eseguire il comando seguente:

$ sudo ufw logging off
Logging disabled

Per abilitare la registrazione UFW, esegui:

$ sudo ufw logging on
Logging enabled

Esistono quattro livelli di registrazione, ovvero basso , medio , alto e pieno . A seconda del livello scelto, i log verranno generati in /var/log/ufw.log file. Per impostazione predefinita, il livello di registro sarà basso.

Puoi utilizzare il comando seguente per impostare il livello adatto che desideri:

$ sudo ufw logging [ high | medium | Full | Low ]

Per controllare lo stato della registrazione e il livello di registrazione, esegui ufw status comando e cerca logging voce.

$ sudo ufw status verbose
Status: active
Logging: on (high)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

6. Profili dell'applicazione

Quando installi qualsiasi pacchetto utilizzando il tuo gestore di pacchetti (ad es. apt o pacman), in ufw verrà creato un profilo dell'applicazione che definisce le regole per quel pacchetto.

Ad esempio, se stai installando un server OpenSSH utilizzando apt , verrà creato il profilo per la porta 22 . Tutti i profili delle applicazioni sono archiviati in /etc/ufw/applications.d directory.

Per ottenere l'elenco dei profili dell'applicazione, eseguire il comando seguente:

$ sudo ufw app list

Risultato di esempio:

Available applications:
CUPS
OpenSSH

Questa è una macchina di prova. Ho installato solo OpenSSH. Quindi vedi solo due profili.

Per ottenere informazioni dettagliate su quel profilo e sui criteri che applica, esegui il comando seguente:

$ sudo ufw app info 'OpenSSH'

Risultato di esempio:

Profile: OpenSSH
Title: Secure shell server, an rshd replacement
Description: OpenSSH is a free implementation of the Secure Shell protocol.
Port:
22/tcp

7. Reimposta il firewall UFW sul criterio predefinito

Se desideri pulire tutte le regole che hai creato e ripristinare le impostazioni predefinite, puoi farlo eseguendo ufw reset comando.

$ sudo ufw reset

Risultato di esempio:

Resetting all rules to installed defaults. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20210705_131655'
Backing up 'before.rules' to '/etc/ufw/before.rules.20210705_131655'
Backing up 'after.rules' to '/etc/ufw/after.rules.20210705_131655'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20210705_131655'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20210705_131655'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20210705_131655'

Quando esegui questo comando, verrà eseguito il backup delle regole correnti prima di ripristinare il profilo predefinito.

Ufw ha anche molti front-end grafici. Uno di questi è Gufw .

8. Gufw, un front-end grafico per UFW

Alcuni di voi potrebbero non sentirsi a proprio agio con la modalità riga di comando. Fortunatamente, è disponibile un front-end grafico per UFW.

Gufw è un'applicazione grafica front-end per gestire Uncomplicated Firewall (UFW) in Linux. Gufw è sviluppato principalmente per installare e configurare firewall per desktop Linux.

Fare riferimento alla seguente guida per informazioni su come installare e configurare Gufw su Linux:

  • Come configurare il firewall con Gufw su desktop Linux

Conclusione

In questa guida abbiamo discusso cos'è UFW, come installare e configurare il firewall UFW su Linux con comandi di esempio.

Ora tocca a te testare ufw sulla tua macchina. Suggerisco di testare ufw in qualsiasi macchina virtuale prima di implementarlo sul desktop o sul server.


Linux
  1. Come configurare un firewall con UFW su Ubuntu 20.04

  2. Come configurare un firewall con UFW su Debian 10

  3. Come configurare un firewall con UFW su Debian 9

  4. Come configurare UFW Firewall su Ubuntu 18.04

  5. Come installare Fail2ban con Firewalld su Rocky Linux 8

Come configurare UFW Firewall su Debian 11

Come installare UFW Firewall su Ubuntu 16.04 LTS

Come configurare il firewall con UFW su Ubuntu Linux

Come proteggere un firewall Linux con le regole IPtables

Come configurare il firewall UFW su Linux

Come configurare UFW Firewall su Ubuntu 20.04