Назад | Перейти на главную страницу

Nginx слишком много открытых файлов DDOS

У меня сейчас проблема с ddos. Мой веб-сервер находится за обратным прокси-сервером (облачная вспышка), на который, как я знаю, нельзя полагаться с их бесплатным тарифным планом. Cloudflare находится в режиме недостаточной атаки, что заставляет посетителей выполнять проверку браузера. Доступ к сайту через прямой IP-адрес только перенаправит их. Я использую функцию регулирования запросов nginx, но это, похоже, не помогает, поскольку злоумышленник использует огромный список прокси. В запросе нет больших красных флажков, поэтому я не уверен, поможет ли WAF. Что интересно, когда я смотрю в журнал ошибок; Я вижу, что причиной появления DOS является следующая ошибка (которой полностью заполнен файл)

2015/09/03 19:22:12 [crit] 3427#0: accept4() failed (24: Too many open files)

Теперь я думаю, что они атакуют через прямой IP-адрес, но перенаправления недостаточно, чтобы они не заставили меня достичь моего лимита открытых файлов. Что я могу сделать, чтобы это остановить?

Спасибо

РЕДАКТИРОВАТЬ: Я не верю, что они атакуют IP напрямую, потому что программное обеспечение, которое я запустил на сайте, по-прежнему обнаруживает огромные объемы трафика, вызванные злоумышленником.

РЕДАКТИРОВАТЬ: Вот несколько строк трафика, который он рассылает. Блокирует ли это 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"

Слишком много открытых файлов означает, что вы попали в переменную ulimit для nginx, определенную по умолчанию в /etc/nginx/nginx.conf (при использовании Linux на основе RHEL). Это означает, что nginx имеет слишком много открытых подключений и больше не может обслуживать запросы. Вы можете исправить это, увеличив следующую переменную:

worker_rlimit_nofile <enter value here>;

вы можете заменить информацию в угловых скобках новым значением (по умолчанию 1024). Это увеличит количество открытых файлов (и, следовательно, увеличится количество открытых подключений, поскольку каждое подключение является файлом).

Три вещи:

  1. определите свои ограничения для вашего сервера (это будет зависеть от количества процессоров и количества оперативной памяти).

  2. в worker_rlimit_nofile находится в верхней части вашего файла конфигурации прямо под переменной worker_processes.

  3. как только вы установите переменную в файле, вам нужно будет перезапустить nginx.