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

iptables u32 может соответствовать максимум 4 байтам?

Я хотел бы сопоставить пакет RDP с файлом cookie mstshash с расширением u32 iptable. на Debian Jessie с

Linux version 3.16.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07)

Следующее правило работает (TPKT v3, длина 47):

-m u32 --u32 "0>>22 & 0x3C @ 12>>26 & 0x3C @ 0=0x0300002f" 

Но если следующая 4-байтовая проверка добавлена ​​для COTP PDU «CR connect request»:

-m u32 --u32 "0>>22 & 0x3C @ 12>>26 & 0x3C @ 0=0x0300002f && 0=0x2ae0000"

правило больше не совпадает. Но мне нужно проверить больше последовательностей байтов в пакете.

Часть пакета, которую я проверяю:

0x0030:  ffff fab3 0000 0300 002f 2ae0 0000 0000  ........./*.....
0x0040:  0043 6f6f 6b69 653a 206d 7374 7368 6173  .Cookie:.mstshas

Означает ли это, что u32 может проверять только 4 байта, а не последовательности байтов в разных местах?

Если вам нужно сопоставить больше, чем позволяет одно правило iptables, вы можете использовать несколько правил. Первое правило содержит первое совпадение и переходит к цепочке со вторым правилом в нем, затем второе правило содержит другое совпадение и фактическое целевое действие.