Защита сервера от Dos-атак

Содержание:

Атака хакеров на серверы является распространенной проблемой для их владельцев. Неважно, какие серверы: игровые, корпоративные, – под угрозой находятся все.

В Интернете существует много способов профилактики Dos-атак, но большинство из них нестабильно работают.

Ниже мы рассмотрим только проверенные и стабильные методы защиты. Вы научитесь отбивать атаки, ваш сервер не сможет атаковать даже самый опасный хакер.

Методы защиты

Главной задачей является своевременное обнаружение и блокировка злоумышленника.

Для решения задач существует несколько базовых методов. Они используются как в комбинации, так и отдельно.

Необходимые методы защиты:

  1. Открытыми остаются только нужные порты, все остальные закрываются. Процедура делается с целью блокирования возможности проникновения в сеть хакера после сканирования портов;
  2. Файервол мониторит открытые порты по написанным протоколам и делает блокировку отправителей, которые присылают на сервер больше пакетов, чем разрешается в указанной конфигурации. Можно настроить определенное время блокировки, но нужно помнить, что по прошествии времени хакер может снова прислать лишний пакет;

При выявлении нежелательной активности администратор получает письмо с сообщением о попытке атаки и IP-адресом хакера.Что касается последнего метода, то у злоумышленника может быть статический или динамический IP-адрес. В этом случае может осуществляться много атак. Здесь будет играть роль то, насколько еще хватит ресурсов у хакера.

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

Защита от атаки с помощью iptables

В этот способ входят следующие составляющие:

  • firewall – iptables;
  • ipset для хранения списков;
  • написанные скрипты.

Создаем щит от Dos-атак, которые делаются с огромным количеством присоединений с единственного IP-адреса. Прежде всего, проверяем команду, показывающую число соединений со всех IP-адресов:

Защита сервера от Dos-атак

Защита сервера от Dos-атак

Много единичных присоединений. Проходит стандартная работа web-сервера, пока все спокойно и сервер никто не атакует множественными подключениями.

Нагружаем сеть многочисленными паразитными запросами, потом снова смотрим отображение команды.

Защита сервера от Dos-атак

Стрелочкой показан злоумышленник, пытающийся провести Dos-атаку на сервер. Теперь пишем скрипт. Он позволит блокировать всех пользователей, пытающихся установить более 50 одновременных соединений с сервером.

Защита сервера от Dos-атак

Берем перечень подключений к серверу и сравниваем первый столбец, если в нем более 50 подключений, то второй столбец отправляем в файл.

Вычитываем файл и добавляем адреса из него в ipset-список, используя имя much_conn (предварительно создаем).

Создается он таким способом:

Защита сервера от Dos-атак

Посмотреть список можно с помощью команды:

Защита сервера от Dos-атак

Добавляем в iptables правило, которое будет блокировать все подключения из списка ipset:

Защита сервера от Dos-атак

Перед настройкой правила нужно проверить личный доступ к консоли сервера. Это делается, чтобы правило действительно блокировало подключения.

Не обязательно все время держать ограничения на 50 подключениях, его можно уменьшить, если злоумышленник делает менее 50 попыток присоединений с одного адреса.

Перед использованием iptables внимательно промониторьте свой сервер. Если он работает на своем максимуме и явно заметно, что его спамят подключением, включаем iptables. Когда прекратится Dos-атака, отключаем iptables. Если его не отключить, то будет идти большая нагрузка на процессор компьютера, что вызовет медленную работу системы.

Как бонус можно создать автоматическую очистку списка забаненных, удаляя из него адреса, которые уже не подключаются более 24 часов. Для реализации автоматической очистки делаем список ipset со временем существования, за это отвечает команда timeout:

Защита сервера от Dos-атак

Выше пример, где забаненный адрес из списка сохранится на 3600 секунд (60 минут).

Если предстоит бороться с 1 IP-адресом, то для этого не нужен ipset, можно просто использовать ресурсы самого iptables.

Список необходим только при большом количестве строк. Когда всего 10, 20 адресов, то хватит штатных средств самого iptables.

Защита от Dos-атаки с использованием модулей nginx-limit_conn и limit_req

Перед использованием этих 2 модулей их необходимо настроить.

Для примера установим ограничение количества одновременных подключений IP до 50, а количество одновременных запросов к динамическому контенту не более 2 в секунду.

Что касается всплеска запросов (burst), то ставим его до 5.

Если идет превышение указанных запросов в секунду, то их реализация задерживается и выстраивается в очередь на выполнение с указанной скоростью. Размер очереди равняется всплеску.

Запросы, не входящие в число всплеска (в примере установлено 5), завершаются с ошибкой. Если будут 6 запросов, то 5 станут в очередь, а 6-й будет завершен с ошибкой.

Исходя из данных условий, ограничение на подключение устанавливается в контексте server, на доступ к динамическому контенту ставится в location. Описание зон, которые станут использовать директивы, располагается в http.

Ниже показан пример конфигурации nginx с установленными ограничениями от Dos-атак.

Защита сервера от Dos-атак

Защита сервера от Dos-атак

Далее перезапускаем nginx и проверяем работу. Ограничение на исполнение динамических вопросов можно наблюдать, нажимая много раз на F5 в браузере.

При очень частом нажимании на F5 в браузере выскочит такое:

Защита сервера от Dos-атак

Также появится запись в логе с ошибками:

Защита сервера от Dos-атак

Во время установки ограничений нужно контролировать, чтобы в них не попали поисковые роботы.

Указать роботу Яндекса скорость сканирования сайта можно через robots.txt.

Указание Google делается через webmaster.

Вопросы – Ответы

Ответим на некоторые популярные вопросы.

Зачем проводится Dos-атака?

Имеют место разные мотивы. Зачастую атака проводится по следующим причинам:

  • отработка навыков новичком;
  • заказ конкурентов;
  • месть;
  • личная неприязнь хакера к человеку.

Это основные мотивы. Могут быть еще частные случаи, но они происходят редко.

Насколько можно предупредить Dos-атаку?

Полностью, если регулярно сканировать свой сайт или сервер. Злоумышленники пользуются невнимательностью и безграмотностью администраторов, это нужно помнить.

Заключение

Мы разобрались, как защитить сервис от Dos-атак. Еще раз вспомним, что мы рассмотрели в статье:

  • узнали об основных способах защиты;
  • научились защищать сервер с помощью iptables;
  • разобрались, как защищаться с использованием модулей.

Используйте информацию из статьи, и ваш сервер не сможет атаковать никакой хакер.

Если вы хотите знать больше, то записывайтесь на курсы. Вы получите не просто поверхностные компьютерные знания, а научитесь углубленному программированию.

Вы станете профессионалом с хорошей зарплатой.

Курс ведут опытные преподаватели, работающие в крупных фирмах. На занятиях вы получите исчерпывающую информацию и научитесь многим фишкам, позволяющим делать программирование быстрее.

Торопитесь записаться на курсы, набор студентов ограничен.

Присоединяйся к DevEducation — стань востребованным специалистом и построй карьеру в IT!