Здравствуйте, коллеги.
Кто-нибудь занимался борьбой с такими DoS аттаками на уровне nginx?
Если не жалко - поделитесь идеями. Скоро переедет ко мне несколько
сайтов которые периодически валят, надо подготовится...
FreeBSD, сетевая Intel fxp, порт 100Мбит, polling, http accept-filter
в sysctl
kern.maxfiles=90000
kern.maxfilesperproc=80000
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1
kern.polling.burst_max=1000
kern.polling.each_burst=50
net.inet.tcp.msl=10000
kern.ipc.somaxconn=32768
в nginx моменты
worker_processes 1;
worker_rlimit_nofile 80000;
events {
worker_connections 50000;
}
server_tokens off;
log_format IP '$remote_addr';
reset_timedout_connection on;
фильтрацию url например по критерию POST index.php?action=login с пустым
реферером можно реализовать так
set $add 1;
location /index.php {
limit_except GET POST {
deny all;
}
set $ban "";
if ($http_referer = "" ) {set $ban $ban$add;}
if ($request_method = POST ) {set $ban $ban$add;}
if ($query_string = "action=login" ){set $ban $ban$add;}
if ($ban = 111 ) {
access_log /var/log/nginx/ban IP;
return 404;
}
proxy_pass http://127.0.0.1:8000;#тут живёт апач
}
ну и по крону уже раз в минуту добавлять в ipfw table новые ИП из лога
25Мбитный DDoS, преимущесвенно режущийся ipfw, остатки проходят на
nginx, который по критерию обучает ipfw и остатки проксирует на апач -
LA 0, сайт работает.
Чуть более мощный сервер на гигабитном Realtek re и 100Мбит порту с
поллингом загибался от pps где-то до 20Мбит
И еще один вопрос по этой же теме.
Может ли nginx раскидывать запросы по разным бекэндам для распределения
нагрузки на один server {} ?