¿Hay alguna manera de encontrar qué regla de iptables fue responsable de descartar un paquete?

31

Tengo un sistema que viene con un firewall ya en su lugar. El firewall consta de más de 1000 reglas de iptables. Una de estas reglas es descartar paquetes que no quiero descartar. (Lo sé porque lo iptables-saveseguí iptables -Fy la aplicación comenzó a funcionar). Hay demasiadas reglas para ordenarlas manualmente. ¿Puedo hacer algo para mostrarme qué regla está descartando los paquetes?

Shawn J. Goff
fuente
1
fedorahosted.org/dropwatch también podría ser útil en el futuro.
Shawn J. Goff
Para ver la actualización de los contadores en tiempo real, use <br/> <code> ver iptables -L -v -n </code>
Chris Gibb

Respuestas:

19

Puede agregar una regla TRACE al principio de la cadena para registrar cada regla que atraviese el paquete.

Consideraría usar iptables -L -v -n | lesspara permitirle buscar las reglas. Yo buscaría puerto; dirección; y las reglas de interfaz que se aplican. Dado que tiene tantas reglas, es probable que esté ejecutando un firewall en su mayoría cerrado y le falte una regla de permiso para el tráfico.

¿Cómo se construye el firewall? Puede ser más fácil mirar las reglas del constructor que las reglas construidas.

BillThor
fuente
Después de hacer esta pregunta, descubrí que las reglas son de APF y pude solucionarlo. Sin embargo, me encanta el objetivo TRACE. Eso hubiera sido muy efectivo.
Shawn J. Goff
2
Un ejemplo de uso del objetivo TRACE está aquí: serverfault.com/questions/122157/debugger-for-iptables/… .
slm
14

Ejecute iptables -L -v -npara ver los contadores de paquetes y bytes para cada tabla y para cada regla.

ninjalj
fuente
Esto es bueno, espero algo mejor ya que hay 1000 reglas y 1000 paquetes descartados.
Shawn J. Goff
Se usa sortpara ordenar las reglas por contador de paquetes.
ninjalj
13

Como iptables -L -v -ntiene contadores, puede hacer lo siguiente.

iptables -L -v -n > Sample1
#Cause the packet that you suspect is being dropped by iptables
iptables -L -v -n > Sample2
diff Sample1 Sample2

De esta manera solo verá las reglas que se incrementaron.

Kyle Brandt
fuente
9

En mi empresa que utilizamos watch -n 2 -d iptables -nvL, muestra cambios entre solicitudes

Marcelo Salazar
fuente
5
watch -n1 -d "iptables -vnxL | grep -v -e pkts -e Chain | sort -nk1 | tac | column -t"

Tenga en cuenta que esto solo mostrará cosas para el filtro de tabla .

Agregue -t nat(o la tabla que use además del filtro) a su llamada de iptables, para verificar las reglas allí.

sjas
fuente