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.