Я хотел бы сопоставить пакет 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, вы можете использовать несколько правил. Первое правило содержит первое совпадение и переходит к цепочке со вторым правилом в нем, затем второе правило содержит другое совпадение и фактическое целевое действие.