DDoS-атаки (распределенный отказ в обслуживании) с использованием неправомерной тактики цифровой связи перегружают ресурсы сервера. Эти виды атак представляют собой организованные рейды в компьютерном мире. Бесчисленные акты отвратительного противодействия в совокупности создают угрозу, достаточно серьезную, чтобы заставить сервер остановиться.
Хуже всего то, что существует множество способов вести партизанскую веб-войну против таких хостов. К счастью, серверы можно настроить для защиты от таких атак.
Nginx, очень популярная серверная система для компьютеров Unix, обладает достаточным встроенным функционалом, чтобы значительно ограничить эффективность DDoS-атак.
Вот несколько эффективных способов борьбы с такими угрозами с помощью Nginx.
Как предотвратить DDoS-атаки с помощью Nginx?
Резервное копирование файлов конфигурации
Прежде чем изменять какие-либо настройки, обязательно сделайте быструю резервную копию конфигурации вашего сервера. Для этой цели работает следующая команда:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original

После завершения вы готовы продолжить.
Проверить трафик
Мониторинг трафика на вашем сервере позволяет легко оптимизировать безопасность и реализовать дополнительные стратегии. В Nginx есть модуль, созданный специально для этой цели.
Настроить страницу статуса
Nginx обычно поставляется с модулем под названием «статус-заглушка» (http_stub_status_module), который позволяет довольно легко интегрировать этот тип функциональности в серверную среду. Сначала проверьте его с помощью следующей команды:
nginx -V

Или используйте следующую команду, чтобы найти его быстрее:
nginx -V 2>&1 | grep -o with-http_stub_status_module

Если ваш результат выглядит так, как показано выше, то все в порядке. В противном случае вам придется установить или перекомпилировать установку Nginx с включенным модулем.
Настроить страницу состояния, которую вы можете проверить, просто, но вам также необходимо ограничить доступ к минимуму (только компьютер) для обеспечения безопасности. Начните с открытия основного файла конфигурации сервера, расположенного по адресу /etc/nginx/nginx.conf.
Откройте его и добавьте следующий код в «директиву http» , чтобы включить модуль, заменив собственную информацию в «localhost», «/status_page» и «127.0.0.1».
server {
listen 80;
listen [::]:80;
server_name localhost;
##
# Status Page Settings
##
location /status_page {
stub_status on;
allow 127.0.0.1;
allow ::1;
deny all;
}
}
Примечание . Для изменения этого файла вам потребуются права sudo.

Теперь проверьте вашу конфигурацию:
sudo nginx -t

Если все в порядке, отправьте серверу сигнал перезагрузки:
sudo systemctl reload nginx

Чтобы получить доступ к странице статуса, посетите местоположение имя_сервера , а затем «/status_page» в веб-браузере или с помощью инструмента командной строки, такого как Curl. (Это полезно, если кеш вашего браузера не обновляется автоматически). Вот команда curl для доступа к странице в примерах:
curl localhost/status_page

В браузере вывод приведенной выше команды выглядит следующим образом.

Проверьте журналы доступа
Если вы заметили необычный трафик при проверке страницы состояния, настроенной выше, вы можете проверить журнал доступа к серверу. Журнал доступа к серверу можно найти по адресу «/var/log/nginx/access.log». В журнале перечислены использованные методы HTTP, дата/время попыток доступа, пользовательский агент и страницы, к которым был осуществлен доступ.

Ограничения на подключение
Среди множества полезных тактик предотвращения DDoS-атак, которые стоит попробовать, одна из самых простых и эффективных — ограничение скорости входящего трафика.
В идеале вам следует ограничить доступ ровно настолько, чтобы предотвратить перегрузку вашего сервера вредоносными ботами, сохраняя при этом разумные скорости. В Nginx это можно сделать с помощью директив limit_req_zone и limit_req . Следующий код устанавливает ограничения памяти и скорости для использования в любом месте, для отображения которого настроен ваш сервер:
limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;
«Зона» указывает имя и емкость (в данном случае в мегабайтах) области памяти, в которой хранятся пользовательские запросы. «Скорость» устанавливает общее количество запросов, которые Nginx будет принимать в секунду (в этом примере 10 запросов). Думайте об этом коде как о правиле, и ниже описано использование этого правила:
limit_req zone=speedbump burst=20;
Приведенный выше код на самом деле делает немного больше, чем просто реализацию правила ограничения. Он также добавляет небольшую очередь до 20 запросов для корректной обработки законных соединений, которые обрабатываются немного быстрее, чем обычно, что превышает как правила, так и очередь, что приводит к ошибке 503 для клиента. Обе директивы в nginx.conf выглядят следующим образом:

Создайте черный список IP-адресов
Если вы получите IP-адрес , который осуществляет DDoS-атаку на ваш сервер, вы можете просто занести его в черный список и исключить все соединения, исходящие с этого IP-адреса.
Добавьте следующий код в директиву вашего сервера:
location / {
deny 123.123.123.0/28;
# ...
}
Блокировать запросы к определенным файлам
Если DDoS-атака нацелена на определенные файлы на сервере — например, на файл xmlrpc.php в WordPress (это обычно целевой файл на большинстве серверов WordPress), вы можете заблокировать их все, все требования к нему. Добавьте этот код в директиву вашего сервера:
location /xmlrpc.php {
deny all;
}
Следуйте описанному выше процессу, и вы сможете ограничить большинство DDoS-атак. Обязательно ознакомьтесь с документацией Nginx , чтобы узнать о дополнительных параметрах безопасности, которые вы можете применить.
Надеюсь, вы добьетесь успеха.