Мне нужно правило для сопоставления пакетов без установленных параметров и/или с установленным определенным размером окна приема:
IP (tos 0x0, ttl 66, id 9000, смещение 0, флаги [нет], proto TCP (6), длина 40) yyyy11111 > xxxxhttp: Флаги [S], cksum 0xe425 (верно), seq 1729214256, win 715, длина 0
Итак, этот пакет имеет win 715, флаги [нет] -> как мне сопоставить такие пакеты?
решение1
Спасибо за ответы, но я думаю, что нашел лучшее решение (лучшее по скорости):
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
решение2
В Iptables имеются параметры для работы с флагами и параметрами TCP, а именно --tcp-option number
и --tcp-flags
.
Для размера окна можно использовать модуль string с опцией: --hex-string pattern
. Таким образом, в вашем случае опция будет --hex-string 02CB
. Чтобы получить точные результаты, следует ограничить смещение поиска с помощью --from
и --to
. Посмотрите наруководство по iptablesдля получения дополнительной информации.