Я собираюсь сразу перейти к делу, NGINX, похоже, не обрабатывает какие-либо HTTP-запросы во время DDoS-атаки с использованием XML-RPC.
Во время DDoS-атаки XML-RPC сервер использует только около 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 работал во время атак, чтобы отслеживать количество запросов в секунду.
Большое спасибо.
Суть DDos-атаки состоит в том, чтобы полностью израсходовать все ресурсы. Не существует волшебной конфигурации, которую кто-то может сказать, установите эту опцию, и nginx ответит. Вы должны заблокировать входящий трафик.
Затем, если вы заблокируете входящий трафик на веб-сервере, может произойти то, что ваш нисходящий поток будет насыщен до такой степени, что реальные запросы не смогут пройти. Таким образом, вам нужно будет работать со своим аплинком, чтобы заставить их заблокировать.