DROP um pacote dependendo de suas opções ou tipo

DROP um pacote dependendo de suas opções ou tipo

Por motivos de teste, gostaria de bloquear pacotes específicos dependendo de suas opções ou tipo.

Por exemplo, em uma transação DHCP DORA, gostaria de bloquear apenas pacotes DHCP ACK.

É possível fazer isso usando iptables? Se não, quais são as possibilidades?

Responder1

Você poderia usar o u32módulo. (Veja opágina de manual paraiptables-extensions). Não é muito fácil de usar, mas deve ser utilizável.

O DHCP também é um pouco difícil de analisar porque partes dos dados, incluindo o tipo de mensagem DHCP, estão nas opções, que podem estar em ordem arbitrária. Embora a opção de tipo de mensagem provavelmente seja a primeira.

As opções DHCP começam no deslocamento 236 no pacote UDP e os cabeçalhos IP e UDP têm 20+8 bytes de comprimento. Portanto, estamos interessados ​​nos bytes começando no deslocamento 264. Os primeiros quatro bytes devem ser o identificador mágico e os próximos três podem ser verificados para a opção de tipo de mensagem. O código do tipo é 0x35, o comprimento é sempre 0x01e DHCPACKo valor é 0x05. (OO formato do pacote DHCP é descrito, por exemplo, em tcpipguide.com)

Então a expressão para u32poderia ser:

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

O que significa simplesmente ler 4 bytes no deslocamento 268 (como número big endian), deslocá-los 8 bits para a direita (para manter os três primeiros bytes) e comparar isso com o valor esperado.

Poderíamos verificar o número mágico também:

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

Verificar se realmente temos um pacote UDP indo para a porta correta é mais fácil de fazer com iptablesregras regulares, então usaríamos algo como o seguinte para corresponder aos pacotes DHCP esperados.

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

Embora, como dito, as opções de DHCP possam estar em qualquer ordem, esse não é um método robusto, especialmente se alguém tentar ativamente contorná-lo. Mas talvez para testar isso pudesse servir. Além disso, presumi que o cabeçalho IP não contém nenhuma opção.

informação relacionada