[gl-como] IPTABLES: qualche commento

Matteo Cavalleri theos@bp.lnf.it
Gio 1 Apr 2004 15:14:40 CEST


qualche commento veloce veloce:

ieri sera abbiamo comiciato a sperimentale la tabella di filter 
(input,output,forward) su di un PC con 2 schede di rete. 192.168.1.1 e 
192.168.0.1
abbiamo loggato i pacchetti scartati tramite le funzioni di LOG di 
iptables, e monitorato i pacchetti che transitavano sulle interfacce con 
tethereal.
abbiamo innazitutto chiuso tutto e verificato che non passava nulla.
successivamente abbiamo lavorato sulle catene INPUT e OUTPUT, aprendo i 
pacchetti ICMP in in e out, facendo prove
discriminando o meno le interfacce di i/o, gli indirizzi src e dest, etc...
poi è stata la volta di un servizio generico (ssh). abbiamo dovuto 
specificare le regole sia per la catena di input che
per quella di output, verificando come ciò fosse scomodo e pericoloso. 
(righe poi commentate)

abbiamo quindi introdotto la tecnica del "connection tracking" , 
abilitando il modulo state e permettendo
ai pacchetti che appartenevano a connessioni già instaurate (instaurate 
dunque dalle regole da noi decise),
di passare. ciò snellisce e semplifica di molto la quantità di regole da 
amministrare.

successivamente abbiamo abilitato l'inoltro dei pacchetti da una scheda 
all'altra (tramite
/proc/sys/net/ipv4/ip_forward oppure settando il medesimo parametro in 
sysctl.conf),
dopodichè abbiamo potuto fare qualche esperimento sulla catena di 
forward, verificando che
transitava da una rete all'altra solo ciò che si voleva.

il risultato delle varie prove è stata una robaccia del genere:

# puliamo le tabelle
iptables -F
iptables -X

#settiamo le policy di default
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

#permettiamo alle connessioni già stabilite di transitare
iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

# permettiamo ai pacchetti  icmp di passare in in,out,fwd
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A FORWARD -p icmp -j ACCEPT

# permettiamo a questa macchina di usare i servizi ssh,smtp,pop3 e web di altre macchina sulla rete connessa ad eth0
iptables -A OUTPUT -p tcp -o eth0 -s 192.168.0.1/32 --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s 192.168.0.1/32 --dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s 192.168.0.1/32 --dport 110 -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 -s 192.168.0.1/32 --dport 80 -j ACCEPT

#permettiamo alle macchine sulla eth0 di utilizzare i servizi web e ssh di quewsta macchine
iptables -A INPUT -p tcp -i eth0 -d 192.168.0.1/32 --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -i eth0 -d 192.168.0.1/32 --dport 22 -j ACCEPT

#permettiamo alle macchine su eth0 di fare ssh attraverso questo fw
iptables -A FORWARD -p tcp --dport 22 -i eth0 -j ACCEPT


# questo era solo un esempio per le connessoni senza il modulo state. da buttare ma gecus lo voleva tenere come esempio..
#
# #iptables -A INPUT -p tcp -s 192.168.0.2/32 -d 192.168.0.1/32 --sport 22 --dport 1024:65535 -j ACCEPT
#iptables -A INPUT -p tcp -s 192.168.0.2/32 --sport 25 --dport 1024:65535 -j ACCEPT


# i pacchetti che vengono scartati li loggiamo per un uso didattico....
iptables -A INPUT -j LOG --log-level NOTICE --log-prefix InputChain 
iptables -A OUTPUT -j LOG --log-level NOTICE --log-prefix OutputChain
iptables -A FORWARD -j LOG --log-level NOTICE --log-prefix ForwardChain




Maggiori informazioni sulla lista gl-como