Preciso de uma regra para combinar pacotes sem opções definidas e/ou tamanho de recebimento de janela específico definido:
IP (tos 0x0, ttl 66, id 9000, offset 0, flags [nenhum], proto TCP (6), comprimento 40) yyyy11111 > xxxxhttp: Flags [S], cksum 0xe425 (correto), seq 1729214256, win 715, comprimento 0
Portanto, este pacote ganhou 715, flags [none] -> como eu poderia combinar esses pacotes?
Responder1
Obrigado pelas respostas, mas acho que encontrei a melhor solução (melhor em velocidade):
iptables -I INPUT -m u32 --u32 "6&0xFF=0x6 && 0>>22&0x3C@12&0xFFFF=0x02CB" -j LOG
A linha acima garante que se trata de um pacote TCP, então encontre o comprimento do IP e o adote (há uma extração adicional de dois bytes) aos bytes que precisam ser comparados (no exemplo 715). Em uma palavra, todos poderiam extrair/encontrar/comparar cada bit/byte nos pacotes com o ótimo módulo -> u32. Para mais informações:iptables-u32.v0.1
Responder2
Iptables tem opções para lidar com flags TCP e opções TCP, nomeadamente --tcp-option number
e --tcp-flags
.
Para o tamanho da janela, você pode usar o módulo string com a opção: --hex-string pattern
. Então, a opção será --hex-string 02CB
no seu caso. Para obter resultados precisos, você deve restringir o deslocamento da pesquisa usando --from
e --to
. Olhe paramanual do iptablespara mais informações.