Tengo un problema extraño con mi firewall iptables: si configuro dos reglas idénticas consecutivas, la primera es ACCEPT
y la segunda es DENY
, el paquete entrante se rechaza (y se registra como tal).
¿Cómo es posible que la primera regla ignore el paquete entrante y la segunda lo capture?
La vista del fwbuilder está aquí:
Aquí está el iptables
basurero:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
In_RULE_0 all -- 0.0.0.0/0 0.0.0.0/0 state NEW
In_RULE_1 all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
In_RULE_0 all -- 0.0.0.0/0 0.0.0.0/0 state NEW
In_RULE_1 all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
Chain In_RULE_0 (2 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "FW RULE 0 -- ACCEPT "
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain In_RULE_1 (2 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "FW RULE 1 -- DENY "
DROP all -- 0.0.0.0/0 0.0.0.0/0
También probé ACCEPT
solo con la regla y no pilla.
La única diferencia que veo es que la DENY
regla no es state NEW
, pero es la misma para las decenas de firewalls que ya configuré y que funcionan bien.
Respuesta1
Necesita saber que: Una regla con la -I
opción de iptables coloca una regla al PRINCIPIO de la lista; Una regla con la -A
opción coloca una regla al final de la lista.
En su caso: creo que podría haber usado "-I" en sus dos reglas de iptables (casi idénticas), la segunda regla se inserta al principio de la lista antes de la primera regla y, por lo tanto, creó una lista de reglas. con las reglas en el orden:
match -s x.x.x.x action DROP
match -s x.x.x.x action ACCEPT
Debido a que su paquete coincide con ambas reglas, la primera ( DROP
) en el orden de la tabla operativa real (que reside en la RAM) entrará en vigor. El orden no tiene nada que ver con el orden en su archivo de configuración de iptable.
Cambie el orden y el resultado será diferente.
Respuesta2
Bien, lo encontré. Resulta que mi FW estaba perfectamente bien, pero el host virtual estaba mal configurado. No tuve ningún error pero no se permitieron iptables. Cuando lo permití, el FW quedó operativo... No es de extrañar por qué no pudimos encontrar el error en el nivel de iptables... Gracias por toda la ayuda :)
Respuesta3
Tus iptables In_RULE_0
solo se aplican a conexiones NUEVAS cuando usas state NEW
.
También está configurado en su cadena FORWARD (paquetes a través del servidor), no en su cadena INPUT (paquetes al servidor).
¿Cómo estás probando? ¿Está haciendo ping a una interfaz particular del servidor?
¿Puedes publicar el resultado completo de:
iptables -vnL
Pruebe la siguiente regla para registrar el tráfico en la cadena de ENTRADA (pings a la interfaz del servidor)
iptables -I INPUT 1 -j In_RULE_0