La suppression de paquets avec la chaîne correspondante à l'aide d'iptables supprime tous les paquets suivants sans correspondance

StackOverflow https://stackoverflow.com/questions/828884

  •  06-07-2019
  •  | 
  •  

Question

J'essaie d'écrire un utilitaire de filtrage de ver sur la couche d'application.

J'ai configuré la règle suivante pour supprimer le paquet TCP avec une sous-chaîne spécifique.

iptables -A INPUT -p tcp -m chaîne - chaîne "test" -j DROP --algo kmp

Cependant, une fois qu'un paquet contenant la chaîne correspondante est trouvé, tous les paquets suivants, même ceux dont la chaîne ne correspond pas, sont supprimés jusqu'à ce que je supprime la règle de iptable.

je voudrais savoir pourquoi cela se produit et quelle est la solution.

merci

Était-ce utile?

La solution

tcp est un protocole fiable orienté connecté qui conserve la séquence des données envoyées. il continue d'essayer de modifier la charge utile jusqu'à atteindre la cible, de sorte que vous ne pouvez pas envoyer d'autre charge ultérieure tant que la précédente n'est pas atteinte. C'est pourquoi vous avez l'impression que tous les paquets suivants sont supprimés.

Si vous définissez une règle similaire pour udp cela ne se produira pas, vous pourrez recevoir tous les paquets suivants qui ne correspondent pas à la chaîne. c’est parce que udp est un protocole sans connexion et peu fiable.

Autres conseils

Un peu tard, mais je vois des gens avec des problèmes similaires. Une façon de contourner ce problème consiste à appliquer cette règle dans la chaîne RAW. TOUS les paquets seront traités ici avant qu’une sorte de conntrack ne soit placée sur le paquet, il est donc préférable de filtrer ici.

iptables -A PREROUTING -t raw -p tcp -m string --string "test" -j DROP --algo kmp
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top