NGINX reagiert nicht während DDoS-Angriffen

NGINX reagiert nicht während DDoS-Angriffen

Ich komme gleich zur Sache: NGINX scheint während eines DDoS-Angriffs mit XML-RPC keine HTTP-Anfragen zu verarbeiten.

Der Server nutzt während eines XML-RPC-DDoS-Angriffs nur etwa 1 % der CPU.

Der Server verwendet 12 Kerne und NGINX ist auf die Verwendung von 12 Arbeitsprozessen eingestellt.

Hier sind meine aktuellen Konfigurationen

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/*;
}

Datei 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

Ich versuche nicht, die Angriffe so weit zu blockieren, dass NGINX die Anfragen nicht einmal mehr empfängt. Ich möchte lediglich sicherstellen, dass mein NGINX während der Angriffe aktiv bleibt, um die Anfragen pro Sekunde zu überwachen.

Vielen Dank.

Antwort1

Das Ziel eines DDoS-Angriffs ist es, alle Ressourcen vollständig zu verbrauchen. Es gibt keine magische Konfiguration, bei der jemand sagen kann: „Setze diese Option“ und Nginx wird reagieren. Sie müssen den eingehenden Datenverkehr blockieren.

Wenn Sie dann den eingehenden Datenverkehr auf dem Webserver blockieren, kann es passieren, dass Ihr Downstream so überlastet wird, dass echte Anfragen nicht mehr durchkommen. Sie müssen dann also mit Ihrem Uplink arbeiten, um ihn zu blockieren.

verwandte Informationen