La longitud de caída de iptables y la condición TTL no funcionan

La longitud de caída de iptables y la condición TTL no funcionan

Con iptablesla utilidad en el host Linux es necesario crear un mini firewall. Necesito eliminar todas las conexiones entrantes con una longitud de paquete superior a 722 Y TTL superior a 22. Necesito exactamente AND. Abandonar sólo si ambas condiciones son VERDADERAS.

sudo iptables -N LOGDROP
sudo iptables -A OUTPUT -m ttl --ttl-gt 22 -j LOGDROP
sudo iptables -A INPUT -m ttl --ttl-gt 22 -j LOGDROP
sudo iptables -A LOGDROP -m length --length 722:65535 -j DROP

La dirección IP del host tiene 10.6.7.9firewall.

Hice 4 pruebas desde este host, intentando hacer ping a otro host:

ping -s 10000 -t 250 10.6.7.10 //fail (TTL AND LENGHT are wrong)
ping -s 100 -t 200 10.6.7.10 //success (TTL is wrong)
ping -s 10 -t 10 10.6.7.10 //success (Both are right)
ping -s 10000 -t 10 10.6.7.10 // fail, BUT SHOULD BE TRUE.

¿Por qué el último ping no funciona y cómo solucionarlo?

Respuesta1

Si las dos condiciones deben ser verdaderas al mismo tiempo, debes construir condiciones como:

sudo iptables -A OUTPUT -m ttl --ttl-gt 22 -m length --length 722:65535 -j DROP

sudo iptables -A INPUT -m ttl --ttl-gt 22 -m length --length 722:65535 -j DROP

Respuesta2

Una buena posibilidad es que la respuesta de ping del host remoto tenga un TTL mayor, ya que la -topción solo establece el TTL del paquete saliente. Un TTL predeterminado común en estos días es 64 (creo que la recomendación es el doble del ancho de Internet).

Otra posibilidad sería que, dado que el ping de 10000 bytes tuvo que fragmentarse, el host remoto se negó a responder. Intente enviar un ping de 800 bytes.

Además, si lo haces, sudo iptables -L -vte dirá cuántas veces se ha aplicado la regla. Esto puede resultar útil para la depuración.

Otra opción de depuración es hacer una regla como:

sudo iptables -A LOGDROP -m length --length 722:65535 -j LOG

Antes de la regla DROP. Esto registrará el paquete en el registro del kernel (leer con dmesg) antes de descartarlo. Luego podrás averiguar qué se cayó.

información relacionada