Мне нужно правило для сопоставления пакетов без установленных параметров и / или определенного размера окна приема:
IP (tos 0x0, ttl 66, id 9000, смещение 0, флаги [нет], протокол TCP (6), длина 40) yyyy11111> xxxxhttp: Flags [S], cksum 0xe425 (правильно), seq 1729214256, win 715 , длина 0
Итак, этот пакет имеет выигрыш 715, flags [none] -> как я могу сопоставить такие пакеты?
Спасибо за ответы, но я думаю, что нашел лучшее решение (лучшее по скорости):
iptables -I INPUT -m u32 --u32 "6&0xFF=0x6 && 0>>22&0x3C@12&0xFFFF=0x02CB" -j LOG
Вышеупомянутая строка гарантирует, что это TCP-пакет, затем находит длину IP и принимает (есть дополнительное двухбайтовое извлечение) его с байтами, которые необходимо сравнить (в примере 715). Одним словом, каждый мог извлечь / найти / сравнить каждый бит / байт в пакетах с помощью замечательного модуля -> u32. Для получения дополнительной информации: iptables-u32.v0.1
У Iptables есть опции для работы с флагами TCP и параметрами TCP, а именно: --tcp-option number
и --tcp-flags
.
Для размера окна вы можете использовать строковый модуль с опцией: --hex-string pattern
. Итак, вариант будет --hex-string 02CB
в твоем случае. Для получения точных результатов следует ограничить смещение поиска, используя --from
и --to
. смотреть на iptables руководство для получения дополнительной информации.