Nginx слишком много открытых файлов DDOS
У меня сейчас проблема с ddos. Мой веб-сервер находится за обратным прокси-сервером (cloudflare), на который, как я знаю, не стоит полагаться с их бесплатным планом. Cloudflare находится в режиме под атакой, в результате чего посетители проходят проверку в браузере. Доступ к сайту через прямой IP только перенаправит их. Я использую функцию регулирования запросов nginx, но это, похоже, не помогает, поскольку злоумышленник использует огромный список прокси. В запросе нет огромных красных флажков, поэтому я не уверен, поможет ли WAF. Что интересно, так это то, что когда я просматриваю журнал ошибок; Я вижу, что причиной DOS является следующая ошибка (которой файл полностью заполнен)
2015/09/03 19:22:12 [crit] 3427#0: accept4() failed (24: Too many open files)
Теперь я думаю, что они атакуют через прямой IP, но перенаправления недостаточно, чтобы они не заставили меня достичь лимита открытых файлов. Что я могу сделать, чтобы остановить это?
Спасибо
РЕДАКТИРОВАТЬ: Я не верю, что они нападают на IP напрямую, потому что программное обеспечение, которое я использую на сайте, все еще обнаруживает огромный объем трафика, который вызвал злоумышленник.
РЕДАКТИРОВАТЬ: Вот несколько строк трафика, которые он спамит. Будет ли CloudFlare из коробки WAF блокировать это?
87.135.112.116 - - [05/Sep/2015:14:47:53 +0200] "GET /index.php HTTP/1.0" 200 15767 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; Media Center PC 6.0)"
113.22.35.98 - - [05/Sep/2015:14:47:53 +0200] "GET /index.php HTTP/1.0" 200 15767 "-" "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16"
2.50.56.236 - - [05/Sep/2015:14:47:54 +0200] "GET /index.php HTTP/1.0" 200 15767 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36"
93.170.133.26 - - [05/Sep/2015:14:47:54 +0200] "GET /index.php HTTP/1.0" 200 15767 "-" "Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0"
1 ответ
Слишком много открытых файлов означает, что вы указали переменную ulimit для nginx, заданную по умолчанию в /etc/nginx/nginx.conf
(если используется Linux на основе RHEL). Это означает, что nginx имеет слишком много открытых соединений и не может обслуживать больше запросов. Вы можете исправить это, увеличив следующую переменную:
worker_rlimit_nofile <enter value here>;
Вы можете заменить информацию в угловых скобках новым значением (по умолчанию 1024). Это увеличит количество открытых файлов (и, следовательно, увеличит количество открытых подключений, поскольку каждое подключение является файлом).
Три вещи:
определите ваши лимиты для вашего сервера (это будет зависеть от количества процессоров и количества оперативной памяти).
worker_rlimit_nofile
находится в верхней части вашего конфигурационного файла, прямо под переменной "worker_processes".как только вы установите переменную в файле, вам нужно будет перезапустить nginx.