На этот вопрос уже есть ответ:
У меня есть сервер (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
has various matches to limit the number of connections allowed for a host using.
By limiting the number of allowed connections, you can mitigate the impact of the DDoS attack.
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
This will allow each new hosts to open 5 connections per second.
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
This will allow each new hosts to open up to 5 parallel connections.
However keep in mind that as your are looking at the source IP address, this can have a huge impact on people behind a NAT.
You can try and play to find out a correct limit value.
Enabling syncookie is also a good idea.