Je configure un serveur et j'ai besoin de faire une configuration spécifique. Je dois supprimer un paquet spécifique qui commence toujours par XX 01
. Je peux le faire avec cette règle :
sudo iptables -A INPUT -p tcp --dport XXXX -m string --hex-string '|XX 01|' --algo bm -j REJECT
Mais le problème est que iptables
commence à lire à partir du premier caractère HEX, donc parfois il génère des faux positifs.
Je veux dire, iptables
supprime les bons paquets qui correspondent à la règle. Par exemple : il supprime aa aa aa XX 01 aa aa aa aa
.
Ce que je veux que iptables
fasse, c'est de rejeter le paquet UNIQUEMENT si XX 01
est les 4 premiers caractères de la chaîne de données. Ignorant s'il est présent après le 4ème octet de données. Je veux dire, si j'ai par exemple 6D 00 00 00 00 00 XX 01 00 AA
il doit passer.
Je sais qu'il y a une manière opposée de le faire, je veux dire, je peux simplement connecter mon serveur et inspecter les paquets entrants avec wireshark
, afin de mettre sur liste blanche le premier Hex qui n'est pas XX 01
pour chaque paquet qui contient XX 01
dans sa chaîne de données : par exemple la chaîne 6D
que j'ai mentionnée. Mais pour le faire de cette manière, j'ai besoin de surveiller pendant des heures et je dois créer beaucoup de règles. J'ai besoin de mettre en place une règle pour mettre sur liste blanche tous les paquets qui commencent par autre chose que XX 01
, ou une règle qui arrête de lire le paquet après le 4ème caractère Hex.
Toute aide sera appréciée.