LINUX.ORG.RU

Помогите с iptables u32

 , ,


1

1

Здравствуйте. Имею UDP-приложение, подвергаемое атаке, необходимо защитить трафик при помощи iptables. Решил использовать модуль u32, сдампил легитимный трафик между клиентом и сервером. Пример пакета:

0x0000:  4500 003e 5fc6 0000 **7711** bcdb b2d6 a4e7  E..>_...w.......
0x0010:  25dd a972 d785 2703 002a feef 5453 3349  %..r..'..*..TS3I
0x0020:  4e49 5431 0065 0000 8801 8595 a300 0000  NIT1.e..........
0x0030:  0000 0000 0000 0000 0000 0000 0000       ..............
Я обнаружил, что в легальных пакетах 5 столбец в строке 0x0000 всегда равен 7711. При атаках с помощью hping и других это значение не равно 7711. Я решил при помощи модуля u32 принимать только такие пакеты, которые удовлетворяют вышеуказанному условию, но не могу понять, как сделать это с помощью u32. Натолкните на мысль, буду благодарен за помощь.


Это чудо (u32) впервые вижу, но попробую ответить:

# iptables -A INPUT -m u32 --u32 "8&0xffff0000=0x77110000" -j ACCEPT

Идея: берём 8 байт, начиная с 8-ого; обнуляем последние 4 байта; сравниваем с эталоном.

Или более короткий вариант:

# iptables -A INPUT -m u32 --u32 "6&0xffff=0x7711" -j ACCEPT
drake
()

Решил проблему. -m u32 --u32 0x5&0xffffffff=0x1e1f

Wheely
() автор топика
Ответ на: комментарий от Wheely

Почему «6&0xffff=0x7711»?

Ну 0x77 - это же 8-ой байт? :) А «6&0xffff=0x7711» == «6&0x0000ffff=0x00007711».

0x1e1f

А вот откуда это взялось, я не понял.

drake
()

Эпично. Читаемый вариант «-p udp -m ttl --ttl-eq 0x77» уже не в моде?

Deleted
()
Ответ на: комментарий от drake

А как обратиться к 0x0010, а не 0x0000?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.