NGINX не отвечает во время DDoS-атак

NGINX не отвечает во время DDoS-атак

Перейду сразу к делу: 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 отреагирует, не существует. Вам нужно заблокировать входящий трафик.

Затем, если вы заблокируете входящий трафик на веб-сервере, то может произойти следующее: ваш нисходящий поток будет перегружен до такой степени, что реальные запросы не смогут пройти. Поэтому вам тогда придется работать с вашим восходящим каналом, чтобы заставить их заблокироваться.

Связанный контент