Ciao a tutti. Si e` parlato ultimamente di firewall personali per Linux, ovvero di regole che rendano un po' piu' sicura la nostra macchina casalinga. Linux, dal 2.4 in poi. ha un ottimo firewall integrato nel kernel, il "packet filtering" la cui interfaccia piu' naturale (seppure ne esistano altre, magari grafiche) e' IPTABLES.

Secondo il mio modesto parere IPTABLES consente un controllo davvero accurato delle regole di filtraggio, con il vantaggio che queste possono essere contenute in un solo file.

Lo script che segue dovrebbe essere eseguito al boot e prevede questo scenario: una macchina collegata alla rete via ADSL (ppp0) ed una eventuale altra macchina (o LAN) collegata su eth0. La macchina principale ha un web server visibile all'esterno, puo' essere raggiunta via ssh e risponde al ping.

Commentate o decommentate le righe che ritenete opporture.

codice:
#! /bin/bash

################################
# REGOLE GENERALI INDISPENSABILI
################################

# Resetto tutte le regole
iptables -F
iptables -F -t nat

# Nego il traffico in ingress
iptables -P INPUT DROP
# Nego il traffico tra le schede di rete
iptables -P FORWARD DROP
# Permetto l'uscita di tutto il traffico dal pc
iptables -P OUTPUT ACCEPT

# Permetto ai pacchetti usciti di rientrare
iptables -A INPUT -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Permetto LOOPBACK
iptables -A INPUT -i lo -j ACCEPT

################################
# SERVIZI OFFERTI DALLA MACCHINA
################################

# apro ssh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# permetto il ping
iptables -A INPUT -p icmp -j ACCEPT

# apro web 
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

#####################
# RETE LOCALE
#####################

# Masquerading, questo permette alla rete di uscire dalla mia PPP0 
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

# Permetto il traffico forward dalla lan ad internet
iptables -A FORWARD -s 192.168.0.1/24 -j ACCEPT
iptables -A FORWARD -d 192.168.0.1/24 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Permetto input su eth0
iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# MOSTRO IL RISULTATO
iptables -L
iptables --table nat -L