Распределенный отказ в обслуживании или DDoS-атаки изолируют ресурсы сервера с помощью злоупотребляющей тактики цифровой связи. Эти типы атак представляют собой организованный рейд компьютерного мира. Многочисленные надоедливые анти-подобные действия в совокупности создают достаточно серьезную угрозу, чтобы остановить опытный сервер. Хуже всего то, что существует множество способов ведения такой партизанской веб-войны против ничего не подозревающих серверов. К счастью, серверы можно настроить так, чтобы они могли дать отпор.
Nginx, очень популярная серверная система для компьютеров Unix, обладает достаточным встроенным функционалом, чтобы значительно ограничить эффективность DDoS-атак.
Вот несколько эффективных способов борьбы с такими угрозами на сервере под управлением Nginx:
Читайте также: Как использовать Nginx в качестве обратного прокси
Создайте резервную копию файла конфигурации
Прежде чем изменять какие-либо настройки, обязательно сделайте быструю резервную копию конфигурации вашего сервера. Для этого подойдет следующая команда:
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original
После этого вы готовы двигаться дальше.
Проверка трафика
Отслеживание трафика вашего сервера упрощает оптимизацию безопасности и реализацию дополнительных тактик в дальнейше
Contents
- 1 Создайте резервную копию файла конфигурации
- 2 Проверка трафика
- 3 Ограничение подключений
- 4 Внесение IP-адреса в черный список
- 5 Блокировка запроса к определенным файлам
Проверка трафика
pan id="i">Создайте резервную копию файла конфигурацииго.Настройка страницы статуса
Nginx обычно поставляется с модулем под названием «статус-заглушка» (http_stub_status_module), который позволяет довольно легко интегрировать этот вид функциональности в среду вашего сервера. Сначала проверьте это с помощью следующей команды:
nginx -V
Или передайте приведенное выше выражение в grep, чтобы найти его быстрее:
nginx -V 2>&1 | grep -o with-http_stub_status_module
Если ваш результат выглядит так, как показано выше, все готово; в противном случае вам придется переустановить или перекомпилировать вашу установку Nginx с включенным модулем.
Настроить страницу состояния, которую вы можете проверять, очень просто, но вам также необходимо ограничить доступ к ней минимумом (вашим компьютером), чтобы обеспечить ее безопасность. Начните с открытия основного файла конфигурации вашего сервера, расположенного по адресу «/etc/nginx/nginx.conf»
Настройка страницы статуса
"https://saintist.ru/wp-content/uploads/2024/05/Nginx-config-file.jpg" alt="Конфигурационный файл Nginx">Откройте его и добавьте следующий код в «директиву 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;
Зона определяет имя и размер (в данном случае в мегабайтах) пространства в памяти, где хранятся пользовательские запросы. «Rate» определяет общее количество запросов, которые Nginx будет принимать каждую секунду (10 в этом примере). Рассматривайте этот код как правило, а следующий за ним код — как использование этого правила:
limit_req zone=speedbump burst=20;
Приведенный выше код на самом деле делает нечто большее, чем просто реализацию нашего ограничивающего правила; он также добавляет небольшую очередь до двадцати запросов для мягкой обработки законных соединений, которые появляются немного быстрее, чем обычно, превышение как правила, так и очереди приводит к ошибке 503 для клиента. Вот как обе директивы выглядят в nginx.conf:
Внесение IP-адреса в черный список
Если вам удастся получить доступ к IP-адресу, с которого осуществляется DDoS-атака на ваш сервер, вы можете просто внести его в черный список и отключить все соединения, исходящие с этого IP-адреса.
Добавьте следующий код в директиву сервера:
location / { deny 123.123.123.0/28;
Проверить журналы доступа
an>}Блокировка запроса к определенным файлам
Если DDoS-атака нацелена на определенные файлы на вашем сервере — например, на файл xmlrpc.php в WordPress (на большинстве серверов WordPress этот файл является объектом серьезной атаки) — вы можете заблокировать все запросы к нему. Добавьте этот код в директиву вашего сервера:
location /xmlrpc.php { deny all; }
Следуйте описанной выше процедуре, и вы сможете ограничить большинство DDoS-атак. Обязательно ознакомьтесь с Документация Nginx , чтобы
Ограничение подключений
ах безопасности, которые вы можете установить.Внесение IP-адреса в черный список
Блокировка запроса к определенным файлам