LINUX.ORG.RU

IPtables

 


0

1

кто может помочь правильно ли я составил цепочку. нужно разрешить входящий ICMP 128 байт с общим ограничением 1000 пакетов в сек,и 50 пакетов в минуту с каждого ип отдельно.

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

iptables -N ICMP_packets

iptables -A INPUT -p icmp --icmp-type echo-request -m length --length 128 -j ICMP_packets

iptables -A ICMP_packets -m limit --limit 1000/s --limit-burst 1000 -j ACCEPT

iptables -A ICMP_packets -j DROP

iptables -A ICMP_packets -m hashlimit --hashlimit 50/m --hashlimit-burst 50 --hashlimit-mode srcip --hashlimit-name icmp -j ACCEPT

iptables -A ICMP_packets -j DROP



Последнее исправление: grinch1 (всего исправлений: 2)

Нет, не правильно. После ″-j DROP″ правила бессмыслены.

Кроме этого, если вы сначала ставите проверку с ″-m limit″, то это будет означать, что с любого хоста можно до 1000 пакетов в секунду.

Нужно сначала делать проверку по hashlimit, причём с условием ″--hashlimit-above″ и целью ″-j DROP″, а потом уже делать ″-m limit″.

mky ★★★★★
()
Ответ на: комментарий от mky

Спасибо про hashlimit понял.

А вот про -m limit не понял, он же вроде ограничивает общее число пакетов со всех IP вместе, а не с каждого по отдельности.

Перечитал кучу всего и там точно не указано что делает "-m limit", вы уверены что он ограничивает с каждого ip отдельно, а не общее количество пакетов со всех сразу.

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

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

iptables -N ICMP_packets

iptables -A INPUT -p icmp --icmp-type echo-request -m length --length 128 -j ICMP_packets

iptables -A ICMP_packets -m limit ! --limit 1000/s --limit-burst 1000 -j DROP

iptables -A ICMP_packets -m hashlimit --hashlimit-above 50/m --hashlimit-burst 50 --hashlimit-mode srcip --hashlimit-name icmp -j DROP

iptables -A ICMP_packets -j ACCEPT

может так будет правильно?

1.правило Limit всё что свыше 1000/s DROP, всё что ниже 1000/s продолжает идти по цепочке. 2. haslimit то что выше 50/min drop, всё что ниже 50/min в следующее правило.

Подскажите хочу разобраться в этом.

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

limit всё что свыше 1000/s DROP, всё что ниже 1000/s продолжает

limit просто считает пакеты. И на каждый временной интервал обнуляет счётчик. Если у вас один из ip-адресов отправит за 0,01 с 1000 пакетов, то они накрутят счётчик в limit и в течении этой секунды все остальные рассматриваемые icmp-пакеты будут DROP.

mky ★★★★★
()
Ответ на: комментарий от mky

ну я понял, это то что надо спасибо.

Ну эти правила написаны правильно?

Особенно интересует hashlimit.

При достижения одного ип адреса больше 50 пакетов за минуту остальные с этого ип пойдут в drop,и если за минуту не поступит ещё пакета,то счётчик через минуту обнулится и ип снова будет разрешено 50 пакетов? А если ип превысит 50 пакетов в минуту и будет слать дальше хотя бы 1 пакет в минуту то его пакеты будут drop? я правильно понял hashlimit?

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

и если за минуту не поступит ещё пакета,то счётчик через минуту обнулится

Нет, счётчик обнулится безусловно, если с хоста идёт постоянно один icmp пакет в секунду, то за каждую минуту будет проходить 50 пакетов.

Если вам именно нужно блокирование по привышению, то нужно ещё добавить модуль recent, как здесь в 4-ом варианте: http://www.opennet.ru/tips/info/2386.shtml .

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