Guida IpTables – Firewall per Linux

Stai cercando una guida completa sull’utilizzo di IPTables su Linux?

iptables-guida Guida IpTables - Firewall per Linux

Sei nel posto giusto!

In questo articolo, impareremo ad utilizzare correttamente IPTables, per proteggere i nostri server dagli attacchi di rete o per gestire le porte aperte e gli indirizzi IP che possono accedere alla rete del tuo server Linux.

 

Sommario della guida:

Che cos’è Iptables e come funziona?

In parole povere, iptables è un programma che ha la funzione di firewall su Linux.

Il programma effettua il monitoring del traffico sia entrante che uscente e lo gestisce attraverso le tabelle definite dall’utente.

Le tabelle contengono una serie di regole , chiamate chain o catene in italiano, che filtrano i pacchetti in entrata ed in uscita in base ad una serie di parametri definiti in precedenza.

Quando un pacchetto rientra in una regola, gli viene assegnato un obiettivo, che può essere quello di passare ad un’altra catena o eseguire una delle seguenti azioni:

ACCEPT : consentirà il passaggio del pacchetto.
DROP – non lascerà passare il pacchetto.
RETURN – impedisce al pacchetto di attraversare una catena e gli dice di tornare alla catena precedente.

Una delle tabelle predefinite si chiama “filter” ed è quella che tratteremo in questo tutorial.

Questa tabella è composta di 3 chain o catene, che sono le seguenti:

INPUT – controlla i pacchetti in arrivo al server.
FORWARD – filtra i pacchetti in arrivo che verranno inoltrati altrove.
OUTPUT : filtra i pacchetti in uscita dal tuo server.

Prima di passare ad ulteriori spiegazioni, è necessario installare iptables sul proprio server tramite un accesso SSH (utilizzare Putty o un’altro client SSH per lo scopo).

 

Come Installarlo sul tuo server:

Iptables in genere è preinstallato nella maggior parte delle distribuzioni Linux.

Tuttavia, se sul tuo sistema non risulta essere già presente, puoi ovviare installando da console:

Comandi per CentOS

yum update

yum install iptables

Comandi per Ubuntu/Debian

sudo apt-get update

sudo apt-get install iptables

N.B. Questi pacchetti funzionano solo per IPV4, se ti serve un metodo per gestire anche le connessioni tramite IPV6 dovrai installare ip6tables, il cui funzionamento è identico a quello di IPtables per IPV4, quindi puoi seguire questa guida per entrambe le versioni, cambiando solo l’eseguibile da lanciare ad ogni comando.

 

Controllare la configurazione attuale:

iptables -L -v

(In questo comando, l’ opzione -L è usata per elencare tutte le regole e -v  serve per mostrare le informazioni sulle regole con più dettagli.)

Questo comando, ti permetterà di visionare la configurazione di iptables, direttamente nella console.

Ovviamente appena installato iptables permetterà qualsiasi connessione in ingresso ed in uscita su qualsiasi porta, quindi dobbiamo noi in seguito limitare la rete in base a quelle che sono le nostre necessità.

 

Una installazione non configurata darà in output il seguente:

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Come abilitare all’avvio del sistema

systemctl enable iptables

Ovviamente vi consiglio di verificare sempre prima la vostra configurazione prima di abilitare l’avvio automatico di iptables, in modo da non perdere l’accesso remoto al server se per caso qualcosa va storto.

Comandi basilari per avviare, spegnere, riavviare, salvare le regole

(avviare iptables)

service iptables start

(spegnere iptables)

service iptables stop

(riavviare iptables)

service iptables restart

(salva le regole attualmente in memoria)

service iptables save

 

Definizione di nuove regole in una chain

Definire una regola significa aggiungerla alla catena.

Per questa operazione, è necessario inserire l’ opzione -A ( Aggiungi ) subito dopo il comando iptables:

iptables -A

A questo comando è necessario aggiungere le opzioni per configurare la regola:

-i ( interface ) – l’interfaccia di rete di cui si desidera filtrare il traffico, come eth0, lo, ppp0, ecc. (opzionale, se non si inserisce la regola vale per tutte le interfacce disponibili).
-p ( protocol ) – il protocollo di rete su cui deve avvenire il processo di filtraggio. Può essere tcp , udp , udplite , icmp , ecc. (Obbligatorio)
In alternativa, puoi digitare ‘all’ per scegliere ogni protocollo.
-s ( source ) – l’indirizzo da cui proviene il traffico. Puoi aggiungere un host (es. www.google.com) o un indirizzo IP.
–Dport ( porta ) – il numero della porta di destinazione di un protocollo, come 22 ( SSH ), 80 ( http ), 443 (https) ecc.
-j ( target ) – il tipo di azione da effettuare ( ACCEPT , DROP , RETURN ). (Obbligatorio)

 

Per utilizzarli tutti insieme, l’ordine in cui bisogna inserirli è il seguente:

iptables -A <chain> -i <interface> -p <protocol (tcp / udp)> -s <source> –dport <port no.> -j <target>

 

Facciamo qualche esempio pratico:

Abilitare tutto il traffico locale (l’interfaccia lo  è l’interfaccia che in genere gestisce tutto il traffico sulla rete locale).

iptables -A INPUT -i lo -j ACCEPT

In questo caso abbiamo usato -A per dire ad iptables di aggiungere la regola, INPUT è la catena dove aggiungere la regola, lo sta per local ed è l’interfaccia a cui applicare la regola e ACCEPT, significa che deve accettare il traffico che ricade in questa regola.

Come abilitare le porte più comuni (HTTP, SSH e SSL)

iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
iptables -A INPUT -p tcp –dport 443 -j ACCEPT

Aggiungendo -s avremmo potuto specificare un IP da cui accettare il traffico       , escludendo tutti gli altri IP da questa regola.

Vediamo un esempio di filtraggio da IP

iptables -A INPUT -s 192.168.1.1 -j ACCEPT

Con questa regola diciamo ad IPTables, di accettare il traffico proveniente dall’IP 192.168.1.1

Allo stesso modo è possibile bloccare il traffico da un IP

iptables -A INPUT -s 192.168.1.1 -j DROP

L’unica cosa che cambia è che adesso abbiamo il comando DROP che non fa passare le richieste che soddisfano quella regola.

Come bloccare tutto il resto del traffico

Dopo aver impostato correttamente tutte le regole che servono, si devo ovviamente bloccare tutto il resto del traffico che non corrisponde alle regole che noi abbiamo inserito dentro iptables fino ad ora.

iptables -A INPUT -j DROP

A questo punto bisogna solo salvare le regole col comando

service iptables save

oppure

/sbin/iptables-save

 

Eliminare una regola

Per eliminare tutte le regole che sono presenti nel database di Iptables e quindi riportare allo stato base si può utilizzare il seguente comando

iptables -F

-F sta per flush, ossia lavare via tutte le regole.

Eliminare una singola regola

Per eliminare una regola in particolare, bisogna prima cercare il numero della regola.

Per poter cercare la riga corrispondente, basta digitare

iptables -L –line-numbers

A questo punto verrà fuori tutta la lista completa delle regole, riga per riga con il numero corrispondente.

iptables -D INPUT numeroriga

Sostituire “numeroriga” con il numero corrispondete alla regola da eliminare.

 

A questo punto abbiamo tutte le regole per poter gestire in modo completo tutti gli aspetti riguardanti la rete e le connessioni sul nostro server.

IPTables ben configurato, ci aiuta a gestire correttamente le richieste lecite sui nostri sistemi, escludendo le connessioni non autorizzate e proteggendo le nostre macchine da utenti maliziosi.


Hai bisogno di un aiuto professionale per mettere in sicurezza il tuo server?

Contattaci attraverso la nostra pagina per avere un preventivo personalizzato.

Condividi con i tuoi amici e colleghi