[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