Precisa de ajuda com a regra de tabelas IP para filtrar por Hex

2

Estou configurando um servidor e preciso fazer uma configuração específica. Eu tenho que soltar um pacote específico que sempre começa com XX 01 . Eu posso fazer isso com esta regra:

sudo iptables -A INPUT  -p tcp --dport XXXX -m string --hex-string '|XX 01|' --algo bm -j REJECT

Mas o problema é que iptables começa a ler o primeiro caractere HEX, portanto, às vezes, gera falsos positivos.
Quero dizer, iptables descarta bons pacotes que combinam com a regra. Por exemplo: cai aa aa aa XX 01 aa aa aa aa .

O que eu preciso de iptables fazer é apenas descartar o pacote SOMENTE se XX 01 forem os primeiros 4 caracteres da string de dados. Ignorando se está presente após o 4º dado. Quero dizer, se eu tiver, por exemplo 6D 00 00 00 00 00 XX 01 00 AA , tem que passar.

Eu sei que existe a maneira oposta de fazer isso, quero dizer, eu posso apenas conectar meu servidor e capturar pacotes de entrada com wireshark , para colocar na lista de permissões o primeiro Hex que não é XX 01 para cada pacote que contém XX 01 em sua cadeia de dados: por exemplo, a string 6D que exibi lá. Mas para fazer isso eu preciso farejar por horas e tenho que criar muitas regras. Eu preciso configurar uma regra para whitelist todos os pacotes que começam com qualquer coisa, mas XX 01 , ou uma regra que pára de ler o pacote após o 4 º caractere hexadecimal.

Qualquer ajuda será apreciada.

    
por TheGreek 23.12.2017 / 10:27

1 resposta

1

De acordo com a seção string da página de manual iptables-extensions , há duas opções para controlar em qual parte do pacote o padrão é testado:

   --from offset
          Set the offset from which it starts looking for any matching. If
          not passed, default is 0.

   --to offset
          Set the offset up to which should be scanned. That is, byte off‐
          set-1 (counting from 0) is the last one that is scanned.  If not
          passed, default is the packet size.

Você já tentou o argumento --to 2 , que supostamente deve limitar o comprimento do intervalo correspondente a esse valor?

    
por Andrey Ryazantsev 23.12.2017 / 11:43