Нужна помощь с правилом таблиц IP для фильтрации по Hex

Я настраиваю сервер, и мне нужно сделать конкретную конфигурацию. Я должен отбросить определенный пакет, который всегда начинается с XX 01. Я могу сделать это с помощью этого правила:

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

Но проблема в том, что iptables начинает чтение с первого символа HEX, поэтому иногда он генерирует ложные срабатывания.
Я имею в виду, что iptables отбрасывает хорошие пакеты, соответствующие правилу. Например: отбрасывает aa aa aa XX 01 aa aa aa aa.

Что мне нужно сделать iptables, так это сбросить пакет ТОЛЬКО, если XX 01 - это первые 4 символа строки данных. Игнорирование, если оно присутствует после 4-х данных. Я имею в виду, если у меня есть, например, 6D 00 00 00 00 00 XX 01 00 AA, он должен пройти.

Я знаю, что есть противоположный способ сделать это, я имею в виду, я могу просто подключить свой сервер и прослушать входящие пакеты с wireshark, чтобы внести в белый список первый Hex, которого нет XX 01 для каждого пакета, который содержит XX 01 в строке данных: например, в строке 6D, которую я поставил. Но для того, чтобы сделать это таким образом, мне нужно часами нюхать, и я должен создать множество правил. Мне нужно установить правило для внесения в белый список всех пакетов, которые начинаются с чего-либо, кроме XX 01, или правило, которое прекращает чтение пакета после 4-го шестнадцатеричного символа.

Любая помощь будет оценена.

2
задан 23 December 2017 в 12:56

1 ответ

Согласно разделу string страницы руководства iptables-extensions, есть две опции для контроля, с какой частью пакета тестируется шаблон:

   --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.

Вы пробовали --to 2 аргумент, который предположительно должен ограничивать длину диапазона соответствия этим значением?

1
ответ дан 23 December 2017 в 12:56

Другие вопросы по тегам:

Похожие вопросы: