Назад | Перейти на главную страницу

iptables -m строка, проверяющая только полезную нагрузку udp

Это правило, с которым я работаю:

iptables -A QUERY -p udp -m length --length 24:63 -m udp -m string --algo bm --hex-string '|ffffffff|' --from 12 --to 28 -j QUERYLIMIT

Есть ли способ проверить только полезную нагрузку UDP вместо обработки всего заголовка? Проблема с этим правилом в том, что размер заголовка может измениться.

Я знаю -m u32 ... это единственный способ справиться с этим?

Идя мимо iptables справочная страница, мне кажется, -m u32 действительно лучший вариант, если вы хотите использовать чистые iptables. Это то, с чем вы сопоставляете в определенном месте полезной нагрузки, или вам действительно нужна версия только для полезной нагрузки -m string?

Если у вас есть навыки программирования, вы также можете посмотреть QUEUE target, который передает пакеты демону пользовательского пространства для фильтрации. Вот это пример использования таблицы QUEUE для проверки пакетов DNS с помощью Perl. Обратите внимание, что это будет не быстро, особенно если вы используете Perl или другой язык сценариев. Если вы хотите использовать C, обратите внимание на библиотеку: libnetfilter_queue.

Я также заметил, что ваше текущее правило начинается с байта 12, который позволяет ему проверять адреса источника и назначения в заголовке IP. Я не знаю, правильно это или нет, но об этом нужно помнить, если вы замените правило правилом только для полезной нагрузки.