Skip to content.
Logo tecnoteca

Portale Tecnoteca.it

Logo tecnoteca

Vai al sito aziendale Tecnoteca.com


 
You are here: tecnoteca.it » How to » Linux Tips » Firewall casalingo

Firewall casalingo

UN "FIREWALL CASALINGO" CON IPTABLES

Il firewalling risulta essere scienza complessa e oscura per la maggior parte degli utenti.
Allo stesso tempo la sicurezza dei sistemi informatici (che siano singoli pc o reti molto complesse) e le tecniche per implementarla non sono più da molto uno snobistico virtuosismo tecnico bensì una necessità impellente.
Tra virus, dialer, rootkit, exploit, software di forza bruta ed altre insidie, dietro le quali ci sta spesso un "simpatico" ragazzetto che il fato pare abbia designato come tuo personale Attila informatico, anche l'utente medio che accede a internet dal proprio pc di casa è sottoposto a un pericolo in costante crescita ed è costretto quindi a porvi rimedio.

In questo senso la realizzazione di un firewall casalingo (o per un ufficio) in una piccola rete che accede a internet attraverso un modem analogico condiviso è relativamente semplice.
Lo scopo consiste nel proteggere i pc all'interno e nell' utilizzare la funzione NAT con indirizzo ip pubblico assegnato dinamicamente dal provider.

Di seguito viene descritto uno script di esempio che può essere localizzato nella directory /etc/init.d con un collegamento simbolico in /etc/rc.d/rc5.d (digitate ad es. ln -s /etc/init.d/firewall_casa /etc/rc.d/rc5.d/S30firewall_casa) in modo che tale script venga lanciato automaticamente al boot del sistema (se questo parte con il runlevel 5, cioè con interfaccia grafica).

# INIZIO SCRIPT #

# puliamo tutto prima di applicare le nuove regole
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/iptables -t mangle -F

# impostiamo la policy per i pacchetti in ingresso
# bloccando il traffico
/sbin/iptables -P INPUT DROP

# impostiamo la policy per i pacchetti in transito
# tra le interfacce bloccando il traffico
/sbin/iptables -P FORWARD DROP

# impostiamo la policy per i pacchetti in uscita
# abilitando il traffico
/sbin/iptables -P OUTPUT ACCEPT

# poi facciamo in modo di accettare i pacchetti in entrata
# che appartengono ad una connessione già esistente
# o che sono correlati a connessioni preesistenti
/sbin/iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT

# abilitiamo il transito di pacchetti provenienti
# dalla rete interna (ad es. 192.168.1.*)
/sbin/iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT

# abilitiamo il transito di pacchetti che appartengono
# ad una connessione già esistente o che siano correlati
# a connessioni preesistenti
/sbin/iptables -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT

# abilitiamo i pacchetti icmp (il ping) per l'interfaccia
# di loopback
/sbin/iptables -A INPUT -i lo -p icmp -j ACCEPT

# abilitiamo i pacchetti icmp per la scheda di rete
/sbin/iptables -A INPUT -i eth0 -p icmp -j ACCEPT

# ora abilitiamo i pc della rete interna alla navigazione
# in internet utilizzando la funzione NAT per un modem
# condiviso con indirizzo ip dinamico assegnato dal
# provider
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

# e infine abilitiamo l'attraversamento dei pacchetti
# tra un'interfaccia e l'altra
echo 1 > /proc/sys/net/ipv4/ip_forward

# FINE SCRIPT #

Per quanto riguarda i client che accedono a internet attraverso il firewall, basterà indicare come gateway l'indirizzo ip interno statico del pc dove funziona il firewall.

Buona navigazione.


P.S.
Lo script è stato testato su Red Hat 8.0 con il kernel 2.4.18, modem analogico u.s.robotics
e 2 client con windows 2000.


di Francesco Celebrini
celebra@virgilio.it