Iptables suplantación de identidad desde 2 subredes

Iptables suplantación de identidad desde 2 subredes

Tengo paquetes de 2 subredes que ingresan a mi firewall eth1:

10.111.12.0/24 y 10.10.100.0/24

Establecí reglas de iptables así:

 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

Pero la primera regla no permite verificar la segunda porque 10.10.100.0/24 NO es 10.111.12.0/24 y coincide con la primera regla. Como arreglarlo ?

Respuesta1

La forma más sencilla de hacerlo es marcar los paquetes permitidos y luego descartar todos los paquetes que no estén 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

Debe considerar que puede haber otros paquetes que necesite o desee enviar.

Respuesta2

Una cadena sería un método útil aquí. Una cadena actúa algo así como una subrutina o función. RETURN simplemente significa que el control de ese paquete volverá a la cadena anterior y las reglas continuarán evaluándose.

# 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

información relacionada