Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

UFW: configurare il firewall su Linux

Come utilizzare UFW, un tool che semplifica la generazione delle regole iptables, permettendo di mettere in sicurezza un server Linux configurando facilmente il firewall di sistema.
Come utilizzare UFW, un tool che semplifica la generazione delle regole iptables, permettendo di mettere in sicurezza un server Linux configurando facilmente il firewall di sistema.
Link copiato negli appunti

UFW
(Uncomplicated Firewall) è un'applicazione che consente di configurare il firewall sui sistemi Linux,
ideata con lo scopo di semplificare la configurazione delle regole iptables. Inizialmente pensato solo per Ubuntu, UFW è ora disponibile per la maggior
parte delle distribuzioni. Tra le tante funzionalità disponibili, una delle più apprezzate è il supporto nativo delle regole per IPv6. Ne esiste anche una
versione grafica in GTK (chiamata Gufw), ma in questo articolo vedremo solo come utilizzarlo da linea di comando.

Regole base

In questa prima parte vedremo come utilizzare i comandi principali di UFW per abilitarlo, disabilitarlo, aggiungere e rimuovere regole.

Iniziamo con il comando seguente:

[code]ufw enable[/code]

Quanto appena visto ci consente di abilitare il firewall. Teniamo presente che le regole di default consentono tutte le connessioni in
uscita, ma bloccano qualsiasi connessione in entrate. Questo vuol dire che potremo navigare tranquillamente su internet, ma nessuno potrà collegarsi ad un
servizio che ospitiamo sulla macchina (come un server web o l'accesso remoto tramite SSH). Per questo motivo può essere utile, prima di abilitarlo, l'aggiunta di una regola, per esempio sulla porta SSH, che ci consenta di mantenere una connessione attiva con la nostra macchina remota:

[code]ufw allow ssh/tcp[/code]

oppure:

[code]ufw allow 22/tcp[/code]

Se non specifichiamo il protocollo (tcp o udp) verranno per default selezionati entrambi: estramemente inutile se sappiamo che un
servizio lavora solo su TCP o UDP.

In seguito possiamo abilitare la funzione di logging che ci consentirà di tenere sotto controllo quali connessioni verranno bloccate
(vedremo in seguito come interpretare i log):

[code]ufw logging on[/code]

Per avere una visione generale delle regole possiamo invece usare:

[code]ufw status numbered[/code]

Il precedente comando produrrà il seguente risultato:

Se ci siamo resi conto di aver sbagliato ad inserire una regola, possiamo eliminarla utilizzando il numero associato ad essa. Ad esempio, per eliminare la regola numero 4, utilizziamo:

[code]ufw delete 4[/code]

Un messaggio di conferma ci chiederà se procedere oppure no:

Si noti che per ogni regola inserita ne verrà creata automaticamente una uguale per il protocollo IPv6.

Regole avanzate

In questa sezione vedremo come personalizzare UFW per le nostre esigenze e come limitare in modo intelligente le connessioni in entrata (per evitare tentativi di attacchi brute force o Denial of Service).

Per prima cosa possiamo bloccare il traffico ICMP in modo da rendere la nostra macchina "invisibile" a questo genere di richieste.
Procediamo modificando il file /etc/ufw/before.rule. Individuiamo #ok icmp codes e modifichiamo ACCEPT in DROP nelle 5 regole associate, come nell'esempio:

Applichiamo quindi le modifiche digitando:

[code]ufw disable && ufw enable[/code]

A questo punto, proviamo ad effettuare richieste ICMP da un'altra macchina, tramite l'uso di ping:

La stringa Richiesta scaduta indica che la richiesta di ping non ha ricevuto risposta. Se state utilizzando anche indirizzamenti IPv6 ricordate di effettuare la modifica anche sul file /etc/ufw/before6.rule.

Vediamo ora in dettaglio l'utilizzo della funzione limit di UFW: si tratta di una regola che limita un singolo indirizzo IP a 6 connessioni sumultanee ogni 30 secondi (più che sufficienti per una normale navigazione o tentativo di connessione) e può essere applicata a qualsiasi porta o servizio. In questo esempio applicheremo la regola limit sulla porta SSH (22) e proveremo a lanciare un attacco di user-enumeration sul servizio.

Per applicare il limite basterà digitare il comando seguente:

[code]ufw limit 22/tcp[/code]

Avviamo quindi un tool di brute-forcing o enumerazione per SSH ed analizziamone i risultati:

Dopo 6 tentativi, tutte le connessioni verranno scartate (DROP) per i successivi 30 secondi. Questo ci consentirà di sventare tentativi malevoli di brute-force/enumerazione, senza compromettere altre connessioni lecite, perchè la limitazione sarà applicata solo all'IP che sta tentando connessioni multiple. Se proviamo a rimuovere il limite e lanciare di nuovo il tool:

[code]ufw allow 22/tcp[/code]

Vediamo ora come applicare un limite sulle connessioni HTTP: il nostro scopo è quello di evitare tentativi di Denial of Service o, in generale, l'uso di tool automatizzati di scansione.

In una situazione in cui non vogliamo impostare il limite appena menzionato, digiteremo:

[code]ufw allow 80/tcp[/code]

Senza alcuna limitazione su HTTP, un attaccando è libero di effettuare un crawling come quello dell'esempio seguente:

[code]wget -r http://192.168.56.101/[/code]

Applichiamo ora il limite, e verifichiamo la risposta del server al crawling:

[code]ufw limit 80/tcp[/code]
[code]wget -r http://192.168.56.101/[/code]

In questo caso, le prime sei connessioni verranno effettuate senza problemi, ma l'attaccante vedrà negate tutte quelle successive. In questo modo eviteremo la maggior parte dei tentativi di DoS o scansioni automatizzate, senza compromettere la navigazione agli utenti leciti.

Uno sguardo ai log

Quello che segue è un esempio di log che possiamo ottenere digitando dmesg, o leggendo direttamente il file di syslog, chee riguarda le connessioni bloccate da UFW:

[code]
[UFW LIMIT BLOCK] IN=eth0 OUT= MAC=00:00:00:00:00:00 SRC=192.168.56.1 DST=192.168.56.101 LEN=60 TOS=0x00 TTL=64 ID=11111 DF PROTO=TCP SPT=11111 DPT=80 WINDOW=14600 RES=0x00 SYN URGP=0
[/code]

I parametri che ci interessa chiarire sono i seguenti:

Parametro Descrizione
SRC Indica l'indirizzo IP bloccato
DST È generalmente l'IP del server su cui abbiamo abilitato UFW
PROTO Il protocollo utilizzato per la connessione
DPT Porta di destinazione che SRC ha provato ad accedere

Gli altri parametri si riferiscono ai contenuti presenti nel pacchetto, che non tratteremo in questo articolo.

Conclusioni

Creare regole con iptables è spesso un'operazione complicata, ma con UFW è possibile farlo con 4 semplici comandi. Ovviamente le regole di limit sono abbastanza generiche, ed applicate a grandi server (come ad esempio quelli di hosting o mirror di rete) potrebbero non bastare o creare dei problemi ai leciti visitatori. Per un server casalingo, però, UFW risulta un'ottima soluzione.

Prima di concludere, consigliamo di creare diverse regole con UFW, e poi lanciare il comando seguente:

[code]iptables -L -vn[/code]

In questo modo si avrà subito un'idea della grande quantità di regole create dall'applicativo per mettere in sicurezza il nostro server.

Ti consigliamo anche