Nel firewall aziendale che ho buttato su (Gentoo + iptables) ho fatto anche una catena di regole che matchano pacchetti forgiati ad hoc, e che normalmente non dovrebbero mai arrivare:
Codice: Seleziona tutto
$IPT -N BADTCP
$IPT -A BADTCP -p tcp ! --syn -m state --state NEW -m limit --limit 6/minute --limit-burst 3 -j LOG --log-prefix 'NEWNOTSYN '
$IPT -A BADTCP -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A BADTCP -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -m limit --limit 6/minute --limit-burst 3 -j LOG --log-prefix 'BADTCP-RST '
$IPT -A BADTCP -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
Poi ho messo il riferimento alla catena in testa alla FORWARD:
Ho messo anche regole di antispoof, che male non fanno. Queste vanno messe ovviamente se si tratta di un firewall che fa anche NAT e che non separa due LAN.
Codice: Seleziona tutto
$IPT -A INPUT -i $WAN -s $CLASS_A -j LOG -m limit --limit 6/minute --limit-burst 3 --log-prefix 'CLASS_A-DROP
$IPT -A INPUT -i $WAN -s $CLASS_A -j DROP
$IPT -A INPUT -i $WAN -s $CLASS_B -j LOG -m limit --limit 6/minute --limit-burst 3 --log-prefix 'CLASS_B-DROP '
$IPT -A INPUT -i $WAN -s $CLASS_B -j DROP
$IPT -A INPUT -i $WAN -s $CLASS_C -j LOG -m limit --limit 6/minute --limit-burst 3 --log-prefix 'CLASS_C-DROP '
$IPT -A INPUT -i $WAN -s $CLASS_C -j DROP
$IPT -A INPUT -i $WAN -s $CLASS_D_MULTICAST -j LOG -m limit --limit 6/minute --limit-burst 3 --log-prefix 'CLASS_D-DROP '
$IPT -A INPUT -i $WAN -s $CLASS_D_MULTICAST -j DROP
$IPT -A INPUT -i $WAN -s $CLASS_E_RESERVED_NET -j LOG -m limit --limit 6/minute --limit-burst 3 --log-prefix 'CLASS_E-DROP '
$IPT -A INPUT -i $WAN -s $CLASS_E_RESERVED_NET -j DROP
$IPT -A INPUT -i $WAN -d $LOOPBACK -j DROP
dove
Codice: Seleziona tutto
LOOPBACK="127.0.0.0/8"
CLASS_A="10.0.0.0/8"
CLASS_B="172.16.0.0/12"
CLASS_C="192.168.0.0/16"
CLASS_D_MULTICAST="224.0.0.0/4"
CLASS_E_RESERVED_NET="240.0.0.0/5"
e $WAN fa riferimento all'interfaccia che dà verso il router su Internet (nel mio caso eth1).
Poi, in fondo prima dei DROP sulle catene INPUT, OUTPUT e FORWARD (che sono inutili se già le policy sono DROP), loggo i pacchetti che verranno droppati:
Codice: Seleziona tutto
$IPT -A FORWARD -i $LAN -j LOG -m limit --limit 6/minute --limit-burst 3 --log-prefix 'LAN-FORWARD-DROP '
$IPT -A FORWARD -i $WAN -j LOG -m limit --limit 6/minute --limit-burst 3 --log-prefix 'WAN-FORWARD-DROP '
$IPT -A INPUT -j LOG -m limit --limit 6/minute --limit-burst 3 --log-prefix 'INPUT-DROP '
P.S: ovviamente $IPT è /sbin/iptables