Falsificação de Iptables de 2 sub-redes

Falsificação de Iptables de 2 sub-redes

Tenho pacotes de 2 sub-redes entrando no meu firewall eth1:

10.111.12.0/24 e 10.10.100.0/24

Eu defino regras de iptables assim:

 iptables -A INPUT -i eth1 ! -s 10.111.12.0/24 -j DROP
 iptables -A INPUT -i eth1 ! -s 10.10.100.0/24 -j DROP

Mas - a primeira regra não permite verificar a segunda porque 10.10.100.0/24 NÃO é 10.111.12.0/24 e corresponde à primeira regra. Como corrigi-lo ?

Responder1

A maneira mais fácil de fazer isso é marcar os pacotes permitidos e depois descartar todos os pacotes que não estão marcados:

iptables -t mangle -A PREROUTING -i eth1 -s 10.111.12.0/24 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth1 -s 10.10.100.0/24 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth1 -m mark ! --mark 1 -j DROP

Você deve considerar que pode haver outros pacotes que você precisa/deseja passar.

Responder2

Uma cadeia seria um método útil aqui. Uma cadeia atua como uma sub-rotina ou função. O RETURN significa apenas que o controle desse pacote retornará à cadeia anterior e as regras continuarão a ser avaliadas.

# create a new chain
iptables -t filter -N in_validnet

# all incoming packets on eth1 are evaluated by the chain
iptables -t filter -A INPUT -i eth1 -j in_validnet

# packets from these networks are returned for further evaluation
iptables -A in_validnet -s 10.111.12.0/24 -j RETURN
iptables -A in_validnet -s 10.10.100.0/24 -j RETURN

# everything else gets dropped
iptables -A in_validnet -j DROP

informação relacionada