SOLTAR un paquete dependiendo de sus opciones o tipo

SOLTAR un paquete dependiendo de sus opciones o tipo

Por motivos de prueba, me gustaría bloquear paquetes específicos según sus opciones o tipo.

Por ejemplo, en una transacción DHCP DORA, me gustaría bloquear únicamente los paquetes DHCP ACK.

¿Es posible hacer esto usando iptables? Si no, ¿cuáles son las posibilidades?

Respuesta1

Podrías usar el u32módulo. (Ver elpágina de manual paraiptables-extensions). No es demasiado fácil de usar, pero debería ser utilizable.

DHCP es un poco difícil de analizar también porque partes de los datos, incluido el tipo de mensaje DHCP, están en las opciones, que pueden estar en orden arbitrario. Aunque es probable que la opción de tipo de mensaje sea la primera.

Las opciones de DHCP comienzan en el desplazamiento 236 en el paquete UDP y los encabezados IP y UDP tienen una longitud de 20+8 bytes. Por lo tanto, estamos interesados ​​en los bytes que comienzan en el desplazamiento 264. Los primeros cuatro bytes deben ser el identificador mágico y los tres siguientes se pueden marcar para la opción de tipo de mensaje. El código de tipo es 0x35, la longitud es siempre 0x01y DHCPACKel valor es 0x05. (ElEl formato del paquete DHCP se describe, por ejemplo, en tcpipguide.com)

Entonces la expresión para u32podría ser:

--u32 '268 >> 8 = 0x350105'

Lo que simplemente significa leer 4 bytes en el desplazamiento 268 (como número big-endian), desplazarlos 8 bits hacia la derecha (para mantener los primeros tres bytes) y compararlo con el valor esperado.

También podríamos comprobar el número mágico:

--u32 '264 = 0x63825363 && 268 >> 8 = 0x350105'

Verificar que realmente tenemos un paquete UDP yendo al puerto correcto es más fácil de hacer con iptablesreglas regulares, por lo que usaríamos algo como lo siguiente para hacer coincidir los paquetes DHCP esperados.

iptables -A foo -m udp --dport bootpc -m u32 --u32 '264 = 0x63825363 && 268 >> 8 = 0x350105'

Aunque, como se dijo, las opciones de DHCP pueden estar en cualquier orden, por lo que este no es un método sólido, especialmente si alguien intenta activamente solucionarlo. Pero quizás para probarlo podría servir. Además, asumí que el encabezado IP no contiene ninguna opción.

información relacionada