[PLUTO-security] Non riesco a capire...

Piviul pluto a flanet.org
Gio 13 Gen 2005 11:16:05 CET


Credevo di incominciare a capirci qualcosa in iptables ma vedo che sono 
ritornato al palo; vi scrivo nella speranza di trovare un'anima pia che 
mi illumini...

Dunque, ho un firewall con due schede di rete che collega due reti private:
- eth0 addr. 192.168.0.2
- eth1 addr. 172.16.0.3

Ora vorrei che un client della rete 172.16.0.x (in particolare il 
172.16.0.2) possa accedere al server 192.168.0.100 sulla porta 143 
(Connessione IMAP ad un server exchange) dell'altra rete.

Ho inserito nello script del firewall fra le varie regole
> iptables -A FORWARD -i eth1 -p TCP --src 172.16.0.2 --dport 143 -j ACCEPT
> iptables -A FORWARD -i eth1 -p tcp ! --syn -m state --state NEW -j LOG --log-level alert --log-prefix "New not syn: "

Ora ogni volta che il 172.16.0.2 tenta di accedere al 192.168.0.100 
trovo nei log innumerevoli righe come questa:
> Jan 13 10:25:47 firewall kernel: New not syn: IN=eth1 OUT=eth0 SRC=172.16.0.2 DST=192.168.0.100 LEN=40 TOS=0x10 PREC=0x00 TTL=63 ID=25132 DF PROTO=TCP SPT=1028 DPT=143 WINDOW=5840 RES=0x00 ACK FIN URGP=0 

Non ci capisco nulla: perché iptables blocca il pacchetto con /IN=eth1/ 
/SRC=172.16.0.2/ /DPT=143/ quando io gli dico esplicitamente di 
accettare quei pacchetti?

Poi c'è un altra particolarità: il server imap al 192.168.0.100 è un 
server exchange 5.5; se il 172.16.0.2 tenta di accedere invece ad un 
server courier-imap all'indirizzo 192.168.0.3 il firewall non blocca i 
pacchetti e la connessione va a buon fine... bah! Sono totalmente 
sconcertato. Per chi fosse interessato vi allego lo script di 
configurazione del firewall.

Grazie ancora

Piviul

-------------- parte successiva --------------

LAN_IFACE=eth0
INET_IFACE=eth1
IP_WEBMAIL=172.16.0.2

iptables -N bad_tcp_packets
iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
iptables -A bad_tcp_packets -i $INET_IFACE -p tcp ! --syn -m state --state NEW -j LOG --log-level alert --log-prefix "New not syn: "
iptables -A bad_tcp_packets -i $LAN_IFACE -p tcp ! --syn -m state --state NEW -j LOG --log-level info --log-prefix "New not syn: "
iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP

# default policies
iptables -F INPUT
iptables -P INPUT DROP
iptables -F OUTPUT
iptables -P OUTPUT DROP

iptables -t nat -F PREROUTING
iptables -t nat -P PREROUTING ACCEPT

iptables -F FORWARD
iptables -P FORWARD DROP
iptables -A FORWARD -p TCP -j bad_tcp_packets
iptables -A FORWARD -i $LAN_IFACE -j ACCEPT
iptables -A FORWARD -i $INET_IFACE -p TCP --src $IP_WEBMAIL --dport 143 -j ACCEPT
iptables -A FORWARD -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m limit --limit 3/minute --limit-burst 7 -j LOG --log-level info --log-prefix "IPT FORWARD packet died: "
iptables -A FORWARD -j DROP

iptables -t nat -F POSTROUTING
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE



Maggiori informazioni sulla lista pluto-security