Тема: Syn Attack
Показать сообщение отдельно

  #8  
Старый 28.02.2010, 23:47
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
С нами: 9702986

Репутация: 479
По умолчанию

Вот мой фаер собственного сочинения. Долго мучался с защитой от флуда сырыми SYN пакетами, вроде как получилось. Не претендую на правильность, мой опыт в дебиане - 3 месяца.
Буду рад если кто-то дополнит

PHP код:
iptables -#очищаем правила
iptables -X syn-flood #удаляем цепочку если она есть
iptables -A FORWARD -j DROP #запрещаем форвард пакетов, мы же не роутер
iptables -A INPUT -i lo -j ACCEPT # разрешаем все внутренние коннекты
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #Сразу же принимаем все пакеты по установленным соединениям (не секурно, но для производительности гуд)

iptables -N syn-flood # цепочка по обработке входящих соединений на 80 порт
iptables -A INPUT -p tcp --syn --dport 80 -m state --state NEW -j syn-flood # Если установлен только флаг SYN (обычно такими пакетами и флудят, они же являются первыми при "трехразовом рукопожатии"). В обработку идут только новые соединения
iptables -A syn-flood -p tcp -m connlimit --connlimit-above 10 -j DROP # запрещаем одновременный коннект с 1 айпи не более 10 раз
iptables -A syn-flood -p tcp -m limit --limit 5/--limit-burst 10 -RETURN # если этот пакет приходит не чаще 5 раз за секунду, то проверка пройдена.
iptables -A syn-flood -j DROP # иначе дропаем

iptables -A INPUT -p tcp --dport 80 ! --syn -m state --state NEW -j DROP # если новый пакет пришел в обход рукопожатия, то дропаем его

iptables -A INPUT -p tcp --dport 80 -j ACCEPT # теперь разрешаем вход на 80 порт

iptables -A INPUT --source 123.45.67.89 -j ACCEPT # Разрешаем себе любые соединения (123.45.67.89 - свой айпи) например чтобы управлять по ssh
iptables -A INPUT -j DROP # все остальные пакеты не проходят 
 
Ответить с цитированием