iptables drop length и условие TTL не работают

iptables drop length и условие TTL не работают

С помощью iptablesутилиты на хосте Linux нужно создать мини-брандмауэр. Мне нужно сбросить все входящие соединения с длиной пакета больше 722 И TTL больше 22. Нужно именно И. Сбрасывать только если оба условия ИСТИННЫ.

sudo iptables -N LOGDROP
sudo iptables -A OUTPUT -m ttl --ttl-gt 22 -j LOGDROP
sudo iptables -A INPUT -m ttl --ttl-gt 22 -j LOGDROP
sudo iptables -A LOGDROP -m length --length 722:65535 -j DROP

IP-адрес хоста защищен 10.6.7.9брандмауэром.

Я провел 4 теста с этого хоста, пытаясь пропинговать другой хост:

ping -s 10000 -t 250 10.6.7.10 //fail (TTL AND LENGHT are wrong)
ping -s 100 -t 200 10.6.7.10 //success (TTL is wrong)
ping -s 10 -t 10 10.6.7.10 //success (Both are right)
ping -s 10000 -t 10 10.6.7.10 // fail, BUT SHOULD BE TRUE.

Почему последний пинг не работает и как это исправить?

решение1

Если оба условия должны выполняться одновременно, следует составить условия следующим образом:

sudo iptables -A OUTPUT -m ttl --ttl-gt 22 -m length --length 722:65535 -j DROP

sudo iptables -A INPUT -m ttl --ttl-gt 22 -m length --length 722:65535 -j DROP

решение2

Хорошая возможность заключается в том, что ответ ping от удаленного хоста имеет больший TTL, поскольку -tопция устанавливает только TTL исходящего пакета. Распространенный TTL по умолчанию в наши дни — 64. (Я считаю, что рекомендуется в два раза больше ширины интернета.)

Другая возможность заключается в том, что, поскольку пинг в 10000 байт должен был быть фрагментированным, удаленный хост отказался отвечать на него. Попробуйте отправить пинг в 800 байт.

Также, если вы sudo iptables -L -vэто сделаете, он скажет вам, сколько раз правило сработало. Это может быть полезно для отладки.

Другой вариант отладки — создать правило вроде:

sudo iptables -A LOGDROP -m length --length 722:65535 -j LOG

Перед правилом DROP. Это запишет пакет в журнал ядра (читается с помощью dmesg) перед его отбрасыванием. Затем вы можете выяснить, что было отброшено.

Связанный контент