Descartar pacotes com corda correspondente usando iptables cai todos os pacotes subsequentes com páreo
-
06-07-2019 - |
Pergunta
Eu estou tentando escrever um verme filtragem utilidade na camada de aplicação.
Eu tenho a configuração seguinte regra para largar tcp pacote com substring específica.
iptables ENTRADA -A -p tcp -m corda --string "teste" GOTA -j --algo kmp
No entanto, uma vez que um pacote com correspondência string é encontrado todos os pacotes subsequentes, mesmo com cordas não correspondentes são descartados, até que eu lave a regra a partir iptable.
i gostaria de saber porque isso está acontecendo e qual é a solução para ele.
graças
Solução
TCP está ligado protocolo fiável orientada que mantém a sequência de dados a ser enviada. ele continua tentando mudar a carga especial até chegar lá, então você não pode enviar outra carga útil subsequente, até a um mais velho é atingido, é por isso que você sente que todos os pacotes subsequentes estão sendo descartados.
Se você definir a regra semelhante para udp isso não vai acontecer, você será capaz de receber todos os pacotes subsequentes que não correspondem à cadeia. isso é porque o UDP é um sem conexão, protocolo não confiável.
Outras dicas
Um pouco mais tarde aqui, mas vendo as pessoas com problemas semelhantes. Uma maneira de contornar isso é fazer essa regra dentro da cadeia RAW. Todos os pacotes vai bater aqui antes de qualquer tipo de conntrack é colocado no pacote, portanto, é melhor para fazer a filtragem aqui.
iptables -A PREROUTING -t raw -p tcp -m string --string "test" -j DROP --algo kmp