Necesito una regla para hacer coincidir paquetes sin opciones configuradas y/o tamaño de recepción de ventana específico establecido:
IP (tos 0x0, ttl 66, id 9000, desplazamiento 0, banderas [ninguna], proto TCP (6), longitud 40) yyyy11111 > xxxxhttp: Banderas [S], cksum 0xe425 (correcto), secuencia 1729214256, win 715, longitud 0
Entonces, este paquete tiene win 715, banderas [ninguna] -> ¿cómo podría hacer coincidir esos paquetes?
Respuesta1
Gracias por las respuestas, pero creo que encontré la mejor solución (la mejor en velocidad):
iptables -I INPUT -m u32 --u32 "6&0xFF=0x6 && 0>>22&0x3C@12&0xFFFF=0x02CB" -j LOG
La línea anterior garantiza que es un paquete TCP, luego encuentra la longitud de IP y la adopta (hay una extracción adicional de dos bytes) a los bytes que se necesitan comparar (en el ejemplo 715). En una palabra, todos podrían extraer/encontrar/comparar cada bit/byte en los paquetes con el gran módulo -> u32. Para más información:iptables-u32.v0.1
Respuesta2
Iptables tiene opciones para manejar indicadores TCP y opciones de TCP, a saber --tcp-option number
y --tcp-flags
.
Para el tamaño de la ventana, puede utilizar el módulo de cadena con la opción: --hex-string pattern
. Entonces, la opción estará --hex-string 02CB
en tu caso. Para obtener resultados precisos, debe restringir el desplazamiento de búsqueda usando --from
y --to
. Mira amanual de iptablespara más información.