Анатомия DDoS-атаки

6 Августа 2018

Ddos атака что это такое и как защититься от ddos – попробуем разобраться вместе. 

Что такое DDoS-атака на сервер

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

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

Расшифровка термина ddos - Distributed Denial of Service, то есть распределенная атака на отказ. Есть и обычная ее версия – просто dos (Denial of Service). В этом случае отправка ложных запросов ведется с одного адреса. В случае с распределенной ддос атакой все сложнее – обращение к системе происходит с разных адресов. Бороться с DoS довольно просто – достаточно в правилах брандмауэра заблокировать адрес, с которого злоумышленник атакует ваш сервер. При распределенной ddos атаке на сайт одной только блокировкой адреса не обойдешься.

Как происходит ddos атака

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

Изучаем врага

Существуют разные типы ddos атак. Простейший вид DDoS – HTTP-запросы, отправляемые армией зараженных компьютеров атакуемому серверу. HTTP-запрос содержит заголовок, внутри которого содержатся различные инструкции, в том числе позволяющие отключить кэширование, что создаст еще большую нагрузку на систему.

Запросы HTTP могут, как получать информацию (GET) с сервера, так и отправлять информацию на него (PUT). Для проведения атаки хакер может использовать, как и GET, так и PUT-запросы. Вдаваться в подробности не будем, поскольку результат один – сервер перестает отвечать не только на запросы злоумышленника, но и настоящих посетителей.

Хакеры могут использовать и другие методы, например, SYN-флуд (TCP/SYN), UDP-флуд, ICMP-флуд. Наиболее распространенным видом является SYN-флуд. В первом случае устанавливаются полуоткрытые соединения с жертвой. Когда он получает SYN-пакет, он должен отправить пакет SYN-ACK, в ответ на который инициатор соединения должен ответить ACK пакетом, но программа злоумышленника написана так, что она не отправляет этот пакет. В результате соединение будет в «подвешенном» состоянии – они остаются в полуоткрытом состоянии до истечения тайм-аута и все это время сайт будет недоступен для новых клиентов.

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

Как правило, в качестве своих жертв злоумышленники выбирают популярные коммерческие и информационные сайты. В последнее время наблюдается тенденция проведения DDoS-атак с целью вымогательства: злоумышленники требуют деньги за прекращение атаки. Также ддос атака может быть выполнена на заказ конкурентов – с целью ведения информационной войны.

Если облака для вас
не просто теория
Широкий спектр услуг
по выделенным северам
и мультиклауд-решениям
Конфигурация VPS и бесплатный тест уже через 2 минуты
Организация вашей IT-инфраструктуры на основе мультиклауд-решения

Предотвращение и защита

Бороться с распределенными атаками на отказ довольно сложно, поскольку запросы поступают с разных адресов. Блокировать адреса атакующих компьютеров – идея плохая, поскольку пользователи этих компьютеров даже могут и не подозревать, что их компьютеры заражены, но в случае блокировки не смогут воспользоваться вашим ресурсом. С другой стороны, блокировка возможна в исключительных ситуациях или же как временная мера.

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

Так, если речь идет о веб-сервере Apache, то следующие директивы файла конфигурации существенно снижают негативные эффекты:

  • RequestReadTimeout – ограничивает время, в течение которого клиент может отправить запрос.

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

  • KeepAliveTimeout – задает таймаут для keep-alive подключений. Имеет смысл изменять это значение, если ваш сайт поддерживает такие соединения. Некоторые администраторы вообще отключают поддержку keep-alive, но помните, что это может вызвать проблемы с производительностью.

  • Подберите правильные значения LimitRequestBody, LimitRequestFields, LimitRequestFieldSize, LimitRequestLine и LimitXMLRequestBody для снижения потребления ресурсов на обработку данных с клиента.

  • Используйте директиву AcceptFilter, чтобы переложить часть нагрузки на плечи операционной системы. 
  • MaxRequestWorkers – обязательно сконфигурируйте эту директиву, чтобы разрешить серверу обрабатывать максимальное количество одновременных соединений без расходования всех имеющихся ресурсов. Какое-то определенное значение порекомендовать нельзя, поскольку оно рассчитывается, исходя из нагрузки на сервер и его конфигурации. Дополнительную информацию можно найти в документации по модулю mpm_worker.

  • Если сайт использует keep-alive подключения, вместо модуля mpm_worker используйте mpm_event, который оптимизирован для работы с keep-alive соединениями. При использовании mpm_worker подключение будет выполнять удержание потока, независимо от того, активное это соединение или keep-alive. Модуль mpm_event создает отдельные потоки для обычных активных соединений и для keep-alive. Такое поведение  обеспечивает высокую производительность.  

Кроме того, рассмотрите установку дополнительных модулей, позволяющих смягчить последствия DDoS. Один из таких модулей – mod_evasive (старое название mod_dosevasive). Он помогает защитить сервер от ddos атак и атак типа brute force. Модуль создает внутреннюю динамическую таблицу IP-адресов и URL, на основании которой запрещает одному и тому же IP-адресу:

  • Запрашивать одну и ту же страницу чаще, чем определено в настройках.

  • Создавать более 50 одновременных запросов в секунду.

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

Модуль поддерживает отправку уведомлений по email, так что его можно использовать и в качестве средства мониторинга, оповещающего администратора об атаке на сайт.

Дополнительную информацию по установке и настройке этого модуля можно получить в статье How To Protect Against DoS and DDoS with mod_evasive for Apache on CentOS 7

К сожалению, злоумышленники не ограничиваются только атаками веб-серверов. Они могут атаковать и серверы баз данных – способы защиты от ddos атак в этом случае будут, естественно, другими.

Если вы столкнулись с DDoS, обратитесь в службу поддержки Xelent – наши специалисты вам обязательно помогут.

Получить консультацию специалиста
Персональный ассистент
Cloud.Xelent