¿Tcpdump omite iptables?

48

Por error configuré el servidor DNS de resolución abierta, que pronto se usó para un montón de ataques DDoS que se originaron en algún lugar de / a Rusia. Por esa razón, bloqueé completamente el puerto 53 en ambos servidores DNS para todos, excepto para IP de confianza. Funciona, ya no puedo conectarme a ellos, pero lo que me parece extraño es que cuando ejecuto tcpdump en eth1 (que es la interfaz en el servidor con Internet público) veo muchos paquetes entrantes del atacante al puerto 53.

¿Es normal que tcpdump muestre estos paquetes incluso si iptables los descarta? ¿O configuré iptables mal?

Por otro lado, no veo ningún paquete saliente de mi servidor, como lo hice antes, así que supongo que el firewall está funcionando. ¿Me sorprende que el kernel no descarte paquetes por completo? ¿O está tcpdumpenganchado al kernel de manera que vea los paquetes incluso antes de que lleguen a iptables?

Petr
fuente

Respuestas:

61

Esta es una buena pregunta.

De hecho, tcpdump es el primer software que se encuentra después del cable (y la NIC, si lo desea) en el camino de ENTRADA , y el último en el camino de SALIDA .

Wire -> NIC -> tcpdump -> netfilter/iptables

iptables -> tcpdump -> NIC -> Wire

Por lo tanto, ve todos los paquetes que llegan a su interfaz y todos los paquetes que salen de su interfaz. Como los paquetes al puerto 53 no reciben respuesta, como lo ve tcpdump, usted ha verificado con éxito que sus reglas de iptables se han configurado correctamente.

EDITAR

Quizás debería agregar algunos detalles. tcpdump se basa en libpcap , una biblioteca que crea un socket de paquete . Cuando se recibe un paquete normal en la pila de red, el núcleo primero verifica si hay un socket de paquete interesado en el paquete recién llegado y, si hay uno, reenvía el paquete a ese socket de paquete. Si se elige la opción ETH_P_ALL , todos los protocolos pasan por el socket del paquete.

libpcap implementa uno de estos sockets de paquetes con la opción activada, guarda una copia para su propio uso y duplica el paquete de nuevo en la pila de red, donde el núcleo lo procesa de la manera habitual, incluyendo pasarlo primero a netfilter , el núcleo -espacio homólogo de iptables . Lo mismo, en orden inverso ( es decir , primero el filtro de red, luego el último paso a través del socket del paquete), al salir.

¿Es propenso a hackear? Pero por supuesto. Ciertamente, hay rootkits de prueba de concepto que usan libpcap para interceptar las comunicaciones destinadas al rootkit antes de que el firewall pueda echar mano de ellos. Pero incluso esto palidece en comparación con el hecho de que una simple consulta de Google descubre un código de trabajo que oculta el tráfico incluso de libpcap . Aún así, la mayoría de los profesionales piensan que las ventajas superan ampliamente las desventajas en la depuración de filtros de paquetes de red.

MariusMatutiae
fuente
¿Hay alguna forma de mostrarlo para que pueda ver qué paquetes se permitieron y cuáles se descartaron?
Petr
2
@Petr puede registrar los paquetes que iptables descartó, thegeekstuff.com/2012/08/iptables-log-packets
MariusMatutiae