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

Iptables отбрасывает шестнадцатеричный udp

00:00:40.283608 IP (tos 0x0, ttl 116, id 49680, offset 0, flags [none], proto UDP (17), length 32)
ip > ip: UDP, length 4
0x0000: 4500 0020 c21a 0000 6f11 1a1e 902b 4cdb E.......o....+L.
0x0010: ------ 000c c12f 0870 ac49 .....0.(.../.p.I
0x0020: 0000 0000 0000 0000 0000 **2664 94d4** ..........&d..

Как сбросить с iptables "2664 94d4" этот на пакет?

-I INPUT -p udp --dport 7777 -m string --algo bm --from 28 --hex-string 266494d4 -j DROP 

Не работает.

Имеет смысл, что iptables не фильтрует эти байты, потому что они не являются частью IP-пакета.

Этот пакет короче минимальной длины кадра Ethernet. Таким образом, для формирования допустимого кадра Ethernet потребовалось 14 байтов заполнения. Последовательность 0000 0000 0000 0000 0000 2664 94d4 это обивка. Кажется разумным, что эта часть удаляется из пакета до того, как iptables начинает его фильтровать.

Полезная нагрузка UDP составляет всего 4 байта, на что также указывает ваш вывод. Полезная нагрузка 0870 ac49.

Я не уверен, что стандарт определяет, как должны заполняться кадры Ethernet. Я ожидал, что заполнение будет содержать все байты NUL. Но последние четыре байта заполнения не равны NUL. На самом деле может быть утечка информации на устройстве, которое отправляло этот кадр Ethernet.