Iptables : semplici regole per un firewall casalingo | Flavio's blog


Iptables : semplici regole per un firewall casalingo

in Ubuntu | | 2 Commenti » | Ultima modifica:

firewall

Iptables per Linux (fra cui Ubuntu è probabilmente la più diffusa) è il programma con cui ci si interfaccia con netfilter, che permette di intercettare, bloccare pacchetti, in maniera più spicciola permette ad un utente di decidere quali connessioni voglia bloccare, e quali porte voglia aprire per consentire quel determinato traffico (es. aprire la porta 21 per permettere ad un utente di collegarsi al computer locale, che fa girare un server ftp).

Di default, se nessuno ha configurato il firewall, iptables bloccherà tutte le connessioni in ingresso, il che significa che se qualcuno proverà a collegarsi al computer attraverso quel servizio (ftp, mail) riceverà un bel TIMEOUT.

Questo è facilmente verificabile digitando, in una shell:

sudo iptables -L

il risultato sarà

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

senza ulteriori dettagli sulle porte aperte.
Questo tipo di configurazione può anche andar bene per una buona parte degli utenti, ma non va più bene nel momento in cui, come scritto sopra, avrà bisogno di far girare un server ftp sul computer e di permettere ad utenti remoti di accedervi, oppure vorrà accedere al computer in remoto utilizzando il servizio ssh (Secure shell).

C’è quindi bisogno di individuare il servizio che si vuole rendere accessibile all’esterno, capire quale sia la porta tcp o udp associata (di default, per es. 21 per ftp, 22 per ssh).
Fatto questo, è comodo creare un piccolo script che verrà lanciato automaticamente all’avvio del computer (perchè altrimenti, al successivo riavvio, iptables avrà “dimenticato” tutte le regole che avete impostato).

Un esempio potrebbe essere un file di questo tipo:

iptables -P OUTPUT ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 4682 -j ACCEPT
iptables -A INPUT -p udp --dport 4692 -j ACCEPT
iptables -A INPUT -p tcp --dport 6890:6900 -j ACCEPT
iptables -A INPUT -p udp --dport 6890:6900 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 2077 -j ACCEPT

Dove le righe del tipo iptables -A INPUT -p tcp –dport NUMERO_PORTA -j ACCEPT dicono di aprire la porta tcp numero NUMERO_PORTA.
Le righe del tipo iptables -A INPUT -p udp –dport NUMERO_PORTA -j ACCEPT permettono di aprire la porta NUMERO_PORTA udp.
Le porte del tipo NUMERO_PORTA1:NUMERO_PORTA2 significa aprire tutte le porte nell’intervallo compreso fra queste due porte.

A questo punto non rimane che salvare lo script, renderlo eseguibile (sudo chmod +x nomescript) e copiarlo in /etc/init.d
Al successivo riavvio, le regole verranno caricate nel firewall. Se si vogliono testare le regole appena create senza riavviare, è sufficiente digitare

sudo iptables nomedelvostroscript

e verificarle con sudo iptables -L.

Ovviamente nulla vieta di utilizzare una gui per impostare le regole graficamente, ma credo sia necessario capire un minimo il funzionamento per poter gestire il proprio firewall prima di utilizzare uno strumento grafico.

UPDATE DEL 15 APRILE 2009:

Ecco un elenco dei principali servizi tcp/udp e le relative porte (link)



2 Commenti »

Per piacere accetta i cookie di terze parti per poter commentare il post! Il pulsante CAMBIA LE SCELTE DEI COOKIE si trova nel footer del sito. / In order to comment this post, please accept the third party cookies! The button CAMBIA LE SCELTE DEI COOKIE is in the footer of the website.