ГлавнаяОперационные системыLinuxКак предотвратить DDoS-атаку с помощью Nginx

Как предотвратить DDoS-атаку с помощью Nginx

Распределенный отказ в обслуживании или DDoS-атаки изолируют ресурсы сервера с помощью злоупотребляющей тактики цифровой связи. Эти типы атак представляют собой организованный рейд компьютерного мира. Многочисленные надоедливые анти-подобные действия в совокупности создают достаточно серьезную угрозу, чтобы остановить опытный сервер. Хуже всего то, что существует множество способов ведения такой партизанской веб-войны против ничего не подозревающих серверов. К счастью, серверы можно настроить так, чтобы они могли дать отпор.

Nginx, очень популярная серверная система для компьютеров Unix, обладает достаточным встроенным функционалом, чтобы значительно ограничить эффективность DDoS-атак.

Вот несколько эффективных способов борьбы с такими угрозами на сервере под управлением Nginx:

Читайте также: Как использовать Nginx в качестве обратного прокси

Создайте резервную копию файла конфигурации

Прежде чем изменять какие-либо настройки, обязательно сделайте быструю резервную копию конфигурации вашего сервера. Для этого подойдет следующая команда:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original

Копирование конфигурации Nginx

После этого вы готовы двигаться дальше.

Проверка трафика

Отслеживание трафика вашего сервера упрощает оптимизацию безопасности и реализацию дополнительных тактик в дальнейшем. В Nginx есть модуль, созданный специально для этого.

Настройка страницы статуса

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

nginx -V

Модуль поиска Nginx

Или передайте приведенное выше выражение в grep, чтобы найти его быстрее:

nginx -V 2>&1 | grep -o with-http_stub_status_module

Модуль Nginx Grep

Если ваш результат выглядит так, как показано выше, все готово; в противном случае вам придется переустановить или перекомпилировать вашу установку Nginx с включенным модулем.

Настроить страницу состояния, которую вы можете проверять, очень просто, но вам также необходимо ограничить доступ к ней минимумом (вашим компьютером), чтобы обеспечить ее безопасность. Начните с открытия основного файла конфигурации вашего сервера, расположенного по адресу «/etc/nginx/nginx.conf».

Конфигурационный файл 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.

Код состояния Nginx

Теперь проверьте свою конфигурацию:

sudo nginx -t

Тестовая конфигурация Nginx

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

sudo systemctl reload nginx

Сервер перезагрузки Nginx

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

curl localhost/status_page

Статус скручивания Nginx

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

Статус браузера Nginx

Проверить журналы доступа

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

Журнал доступа Nginx

Ограничение подключений

Среди множества полезных тактик, которые стоит попробовать для предотвращения 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:

Код ограничения Nginx

Внесение IP-адреса в черный список

Если вам удастся получить доступ к IP-адресу, с которого осуществляется DDoS-атака на ваш сервер, вы можете просто внести его в черный список и отключить все соединения, исходящие с этого IP-адреса.

Добавьте следующий код в директиву сервера:

location / {
    deny 123.123.123.0/28;
    # ...
}

Блокировка запроса к определенным файлам

Если DDoS-атака нацелена на определенные файлы на вашем сервере — например, на файл xmlrpc.php в WordPress (на большинстве серверов WordPress этот файл является объектом серьезной атаки) — вы можете заблокировать все запросы к нему. Добавьте этот код в директиву вашего сервера:

location /xmlrpc.php {
    deny all;
}

Следуйте описанной выше процедуре, и вы сможете ограничить большинство DDoS-атак. Обязательно ознакомьтесь с Документация Nginx , чтобы узнать о дополнительных параметрах безопасности, которые вы можете установить.

ПОХОЖИЕ СТАТЬИ

Популярные записи