![NGINX не отвечает во время DDoS-атак](https://rvso.com/image/668051/NGINX%20%D0%BD%D0%B5%20%D0%BE%D1%82%D0%B2%D0%B5%D1%87%D0%B0%D0%B5%D1%82%20%D0%B2%D0%BE%20%D0%B2%D1%80%D0%B5%D0%BC%D1%8F%20DDoS-%D0%B0%D1%82%D0%B0%D0%BA.png)
Перейду сразу к делу: NGINX, похоже, не обрабатывает ни одного HTTP-запроса во время DDoS-атаки с использованием XML-RPC.
Во время XML-RPC DDoS-атаки сервер использует всего около 1% ресурсов ЦП.
Сервер использует 12 ядер, а NGINX настроен на использование 12 рабочих процессов.
Вот мои текущие конфигурации
nginx.conf:
user nginx;
worker_processes 12;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 12288;
}
http {
server_names_hash_bucket_size 64;
include /etc/nginx/mime.types;
default_type application/octet-stream;
limit_conn_zone $binary_remote_addr zone=one:10m;
limit_req_zone $binary_remote_addr zone=two:10m rate=5r/s;
sendfile on;
#tcp_nopush on;
keepalive_timeout 30;
server_tokens off;
include /etc/nginx/conf.d/*;
}
default.conf:
server {
listen 80 default_server;
server_name _;
include /etc/nginx/default.d/*.conf;
limit_conn one 10;
limit_req zone=two burst=10 nodelay;
if ($http_user_agent ~* (wordpress))
{
return 444;
}
if ($http_user_agent = "")
{
return 444;
}
client_body_buffer_size 1K;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 2 1k;
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 5 5;
send_timeout 10;
access_log off;
location / {
root /var/www/html;
index index.php index.html index.htm;
}
error_page 404 /404.html;
location = /404.html {
root /var/www/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
location ~ \.php$ {
root /var/www/html;
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location /status/ {
stub_status on;
}
}
sysctl.conf:
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
Я не собираюсь блокировать атаки до такой степени, что NGINX даже не будет получать запросы, я просто хочу поддерживать работу NGINX во время атак, чтобы отслеживать количество запросов в секунду.
Большое спасибо.
решение1
В этом и заключается смысл DDos-атаки — полностью израсходовать все ресурсы. Волшебной конфигурации, которая может сказать: «Установи эту опцию», и nginx отреагирует, не существует. Вам нужно заблокировать входящий трафик.
Затем, если вы заблокируете входящий трафик на веб-сервере, то может произойти следующее: ваш нисходящий поток будет перегружен до такой степени, что реальные запросы не смогут пройти. Поэтому вам тогда придется работать с вашим восходящим каналом, чтобы заставить их заблокироваться.