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

Как защититься от спуфинга SYN flood на Linux?

У меня есть сервер (2 x E2620, 32 ГБ ОЗУ, Debian 6 Linux us-fw 2.6.32-5-amd64 # 1 SMP Mon Feb 25 00:26:11 UTC 2013 x86_64 GNU / Linux, 10G Intel Ethernet Card). Внутри находится прокси-сервер Nginx. Идея состоит в том, чтобы использовать его в качестве интерфейса против DDoS-атак. В настоящее время, если он сталкивается с поддельным SYN-потоком на 500 тыс. Пакетов в секунду, он почти не отвечает. Я уже пробовал синхронизировать файлы cookie и различные параметры sysctl. Даже если таймаут полуоткрытого соединения составляет 1 секунду, этого достаточно для заполнения любых буферов. Есть идеи, как защитить его от поддельных синхронных наводнений? Может быть, какие-то хардкорные конфиги или правила прошивки?

iptables имеет различные совпадения, чтобы ограничить количество подключений, разрешенных для использования хостом.

Ограничивая количество разрешенных подключений, вы можете уменьшить влияние DDoS-атаки.

  • С помощью hashlimit:
$ iptables -A INPUT -i eth0 -s any/0 -d IP.AD.DR.ESS/32 -p tcp --syn --sport 1024: --dport 80 -m hashlimit --hashlimit-name http-flood --hashlimit-mode srcip --hashlimit-upto 5/s

Это позволит каждому новому хосту открывать 5 соединений в секунду.

  • С помощью connlimit:
$ iptables -A INPUT -i eth0 -s any/0 -d IP.AD.DR.ESS/32 -p tcp --syn --sport 1024: --dport 80 -m connlimit --connlimit-saddr --connlimit-upto 5

Это позволит каждому новому хосту открывать до 5 параллельно соединения.

Однако имейте в виду, что если вы смотрите на исходный IP-адрес, это может иметь огромное влияние на людей, находящихся за NAT.

Вы можете попробовать и поиграть, чтобы узнать правильное значение лимита.

Включение syncookie также является хорошей идеей.