Как предотвратить ddos-атаки на маршрутизатор и повысить безопасность

Введение

Цель DDoS-атаки — сделать веб-сайт или IT-инфраструктуру компании недоступными для использования. Нападение осуществляется отправкой большого количества запросов с зараженных устройств (ботов), действующих по команде  злоумышленников. Инфраструктура жертвы зачастую не выдерживает нагрузки, превышающей норму на несколько порядков, и выходит из строя. DDoS-атака может привести к множеству негативных последствий для компании, основным из которых является недоступность основных сервисов для клиентов. Кроме того, DDoS-атаки могут использоваться как отвлекающий маневр для сокрытия других действий злоумышленников при осуществлении сложных целевых атак.

Количество, мощность и сложность DDoS-атак с каждым годом неуклонно растет. Согласно годовому отчету DDoS-GUARD за 2016 год, сервисом было зафиксировано 47933 DDoS-атак. Средняя мощность атак на серверы была 1,33 Гбит/с, при этом максимальная нагрузка достигала 293 Гбит/с. Россия в рейтинге «жертв» занимает второе место (25%) уступая первенство Китаю (39%). В мире больше всего страдает индустрия развлечений, профессиональные организации, сфера образования, ИТ и ритейл.

Справиться с DDoS-атаками своими силами очень сложно. Поэтому в данной области сформировался отдельный рынок решений и услуг, о котором мы уже рассказывали в статье «Защита от DDoS — обзор мирового и российского рынка». Защита от DDoS-атак может строиться одним из двух основных способов — собственными силами с использованием специализированных решений или путем заказа услуги по защите в специализированной компании по модели SaaS (Security as a Service). В данном обзоре мы расскажем о сервисе DDoS-GUARD от одноименной компании, предоставляющей услуги по защите от DDoS-атак.

Как работает DDoS-атака

Принцип работы DDoS кроется в названии: отказ в обслуживании. Любое оборудование имеет ограничение по пропускной способности и по количеству обрабатываемых запросов. И организатор атаки ставит задачу загрузить все каналы до максимума, чтобы реальные пользователи не могли пробиться к сервису из-за огромного количества мусорных запросов.

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

Обычно такие таки длятся несколько часов. Но бывали случаи, когда DDoS вёлся несколько суток.

Сами атаки разделяются по принципу воздействия на три вида:

  1. Переполнение канала. ICMP-флуд, UDP-флуд, DNS-амплификация
  2. Использование незащищенности стека сетевых протоколов. «Пинг смерти», ACK/PUSH ACK-флуд, SYN-флуд, TCP null/IP null атака
  3. Атака на уровне приложений. HTTP-флуд, медленные сессии, фрагментированные HTTP-пакеты

Как сделать ддос атаку самому

Рассмотрим на примерах, как в принципе можно провести ddos атаку. «Чтобы поймать преступника, нужно думать как преступник». По понятным причинам, я расскажу только немного теории, без практических примеров, во избежание, так сказать. Хотя у меня и примеров то нет. Я сам никогда всерьез не занимался ddos атаками.

У Яндекса есть отличный инструмент для нагрузочного тестирования — Яндекс.Танк. Когда я с ним знакомился, решил нагрузить несколько первых попавшихся под руку сайтов. К моему удивлению, я положил все сайты, которые пробовал нагрузить 🙂 Сразу скажу, что это были небольшие блоги таких же любителей блоггинга, как и я.

Для того, чтобы сделать ddos атаку самому на неподготовленный сайт достаточно из 3-5 разных мест запустить Яндекс.Танк и указать в качестве целей набор наиболее тяжелых страниц. Обычному динамическому сайту сразу станет плохо. Когда владелец спохватится и начнет разбираться, он достаточно быстро забанит ваши ip адреса сам, либо с помощью хостера и на этом ваша ддос атака закончится.

Вам придется искать новые ip адреса для проведения очередной ддос атаки, что весьма хлопотно, а вот блокировать их будет легко. Дальше уже нужно включать голову и думать, как оперативно и легко менять ip адреса. В голову приходят готовые списки с прокси, скрипты, curl, python и т.д. Не буду дальше развивать эту мысль. В общем и целом, самому научиться ддосить на начальном уровне не так сложно. Достаточно базовых знаний linux и скриптинга.

Сразу скажу, что профессиональные службы по защите от ддос, наподобии StormWall или CloudFlare, такие ваши атаки отметут, даже не заметив. Это может быть интересно только в качестве саморазвития. Все современные и эффективные ddos атаки делают с помощью ботнет сетей.

Предотвратить и защититься

Считается, что основной способ защиты — фильтрация трафика на основе его содержимого, IP-адресов и других параметров. Это можно сделать двумя способами:

  • Использовать собственный сервер и ПО. Так можно контролировать свою инфраструктуру, настроить её под собственные нужды
  • Воспользоваться услугой защиты от DDoS. Так компания снижает издержки на закупку и обслуживание оборудования, зарплату специалистам. Вопросами защиты занимается сторонняя организация

услуги по анти-DDoS

Не стоит забывать, что атаки часто используют уязвимости в ИТ-инфраструктуре организации

Поэтому важно регулярно обновлять все программные компоненты. Также стоит проверить способность корпоративного сайта и ИТ-сервисов работать даже под высокой нагрузкой.

При сотрудничестве с облачными провайдерами компании могут получить комплексное решение по защите ИТ-инфраструктуры, веб-приложений и онлайн-сервисов от DDoS-атак любого уровня. Провайдеры используют более мощное оборудование и программно-технические решения. А ещё на их стороне большой опыт отражения атак. Они способны быстро восстановить контроль над ситуацией и создать условия, при которых нагрузка не влияет на уровень доступности инфраструктуры, приложений и сервисов.

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

Причины DDoS-атак

Почему могут атаковать ИТ-инфраструктуру компании? Возможны несколько вариантов:

  • Конфликт, недовольство действиями. На фоне личной неприязни происходит значительная доля кибератак в отношении бизнеса и государственных учреждений. Например, после масштабного рейда ФБР на хакеров в 1999 году было совершено нападение на веб-узлы ФБР. В итоге они несколько недель были нерабочими.
  • Политика. Несогласие с проводимой государством или оппозицией политикой может стать причиной кибератаки. Хактивисты (ИТ-специалисты, радикально подходящие к вопросу) могут поддерживать разные политические силы и выражать свой протест путём DDoS-а.
  • Развлечение. Атакующей стороной могут стать новички-хакеры, ИТ-экспериментаторы и просто люди, которые решили «похулиганить», заказав недолгую, но вредную нагрузку на каком-либо полулегальном ресурсе.
  • Вымогательство. Нередко хакеры перед атакой требуют от компании выкуп за отказ от своих намерений. Суммы бывают самые разные и зависят от аппетитов злоумышленника. При отказе платить следует «наказание».
  • Нечестная конкуренция. Заказной харакетр атаки — далеко не редкость. В «высокий сезон» конкуренты могут пытаться уронить сайты других компаний, чтобы переманить клиентов.
  • Маскировка. Пока вы боретесь с DDoS, то можете не заметить другую атаку. Использование мусорного трафика как прикрытия является эффективной и довольно популярной практикой.

Подробнее о DDoS-атаках

DDoS расшифровывается с английского как «Distributed Denial Of Service Attack». Эта аббревиатура обозначает хакерскую атаку с большого числа компьютеров на сервер с доведением его до отказа. После такого «покушения» пользователи не смогут получить доступ к сайту. Дело в том, что на сервер посылаются многочисленные запросы, значительно снижающие его пропускную способность. 

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

Защита от DDoS + CDN в подарок при заказе VDS Timeweb

Обезопасьте свой проект и ускорьте его работу: при заказе любого тарифа вы получаете защиту от DDoS + CDN на 3 месяца бесплатно. Сообщите в поддержку промокод community3.

Заказать

Виды DDoS-атак 

При нападении на сервер могут использоваться самые разные способы и инструменты. Выделяют множество типов DDoS-атак, вот лишь некоторые из них:

  • HTTP GET флуд – злоумышленники отправляют множество бессмысленных запросов в систему для переполнения канала передачи данных. 

  • HTTP POST запрос – в тело запроса помещается большой объем данных, который в последующем будет долго обрабатываться на сервере. 

  • POST-флуд – атакующий отправляет множество POST-запросов, которые переполняют систему. Возможности ответить на них нет, в результате чего сервер производит автоматическую остановку.

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

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

  • Атака на устройства связи VoIP или SIP – для такого нападения понадобится IP-адрес пользователя и специальное программное обеспечение. 

  • SYN-флуд – этот метод подразумевает единовременный запуск кучи соединений типа TCP. Все они упакованы в SYN-пакеты, имеют несуществующий или недействительный обратный адрес. 

  • Fraggle-атака или UDP-флуд – превышение времени ожидания ответа от сервера с помощью UDP-пакетов. Полоса пропускания перенасыщается, происходит отказ в обслуживании. 

  • Smurf-атака (ICMP-флуд) – один из самых опасных типов нападения на сервер жертвы. Взломщик дает запрос поддельным ICMP-пакетом с подмененным mac-адресом. Все ответы при этом отправляются на ping-запрос атакующего. 

А работает ли защита?

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

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

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

Кроме того, если речь идёт о безопасности и доступности сайта или иного интернет-приложения, нужно сделать следующее:

  1. Подключая к нему внешний сервис anti-DDoS, сменить IP-адрес. Если это невозможно, то следует хотя бы «закрыть» обработку обращений ото всех IP-адресов кроме тех, что предоставил провайдер сервиса защиты.
  2. Если сервис критически важен, необходимо позаботиться о приобретении или аренде надёжных и производительных (причём по возможности — выделенных) хостинг-ресурсов для его развёртывания, чтобы исключить ситуацию, когда атака на другой сервис на этом же ресурсе приведёт к отказу вашего сервиса. Желательно также обеспечить резервирование мощностей и ресурсов.
  3. Чтобы уменьшить вероятность отказа при атаке на один или несколько IP-адресов, желательно стараться использовать все имеющиеся в распоряжении адреса, распределяя их между сервисами или пользователями.
  4. Полезно уведомить провайдера защиты о том, какие IP-адреса для каких целей используются — это поможет ему правильно выстроить «линию обороны» от DDoS-атак.

Подключая защиту сети через BGP, нужно помнить, что злоумышленник может легко провести трассировку до провайдера, обеспечивающего DDoS-фильтрацию, и узнать стыковой IP-адрес, который, как правило, не защищён, а потому уязвим для DDoS-атак. Следовательно, стыковые IP-адреса желательно, во-первых, закрывать с помощью ACL (это должен обеспечить провайдер), а во-вторых, скрывать от трассировки как извне, так и изнутри.

Анализ лог файла web сервера для защиты от ddos

Рассмотрим еще один простой, но все же более сложный тип ддос атаки, когда идут типовые запросы с разных IP. То есть простой ботнет, может быть даже собранный руками из нескольких дешевых vds серверов. Одновременных подключений будет не много, но если у вас тяжелый сайт и злоумышленник найдет его слабое место (например поиск), то этого может быть достаточно, чтобы положить сайт.

Банить будем тоже через iptables, а список адресов для бана будем извлекать из логов веб сервера. Для этого у вас должно быть включено логирование запросов к веб серверу. Например, в nginx за это отвечает такая настройка виртуального хоста:

access_log /web/sites/hl.zeroxzed.ru/log/access.log main;

Мы не будем каждый раз анализировать весь лог файл. Эта операция сама по себе будет сильно нагружать веб сервер. Возьмем последние 1000 строк из лог файла и посчитаем количество подключений с одного ip с типовым содержимым, например запрос главной страницы по протоколу http 1.0, «GET / HTTP/1.0». Если вы заметите другой постоянный признак ботнета, который вас атакует, используйте его. Это может быть один и тот же user agent или что-то еще. Допустим, если атакующий будет долбить в уязвимое место, то это будет адрес этой страницы.

# tail -1000 /web/sites/hl.zeroxzed.ru/log/ssl-access.log | egrep "GET / HTTP/1.0" | awk '{print $1}' | sort -n | uniq -c

Результатом этой команды будет примерно такой список.

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

#!/bin/sh

tail -1000 /web/sites/hl.zeroxzed.ru/log/ssl-access.log | egrep "GET / HTTP/1.0" | awk '{print $1}' | sort -n | uniq -c | sort -n | tail -n100 | awk '{if ($1 > 50 ) print $2}' > /root/ddos/much_gets.txt

sleep 3

list=$(cat /root/ddos/much_gets.txt)
for ipnet in $list
    do
	ipset -A much_gets $ipnet
    done

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

Обращаю внимание на строку, по которой вы будете фильтровать запросы. В данном случае я показал только пример

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

Важно это понимать и не применять решение бездумно. Будет только вред.

Не забудьте создать отдельный список в ipset и добавить отдельное правило в ipables. Можно использовать уже существующий список и добавленное правило из предыдущего примера, но я рекомендую все разделять. Так удобнее для последующего анализа.

Во время ddos атаки добавляете это правило в cron и выполняете каждую минуту. После завершения атаки скрипт можно отключить. В принципе, можно и на постоянку оставлять, но тут нужно хорошенько подумать и прикинуть, как оно должно выглядеть. Главный принцип — не навредить.

Облачная защита от CDN-провайдера

У компании нет своего оборудования, она арендует распределенные мощности CDN-провайдера и размещает на них сайт. 

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

Как технически устроена

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

Сам сервер располагается в облаке

Плюсы

  • Защиту нельзя обойти, как в варианте со сторонним облачным провайдером.
  • Меньше сетевая задержка при доступе к контенту сайта, так как за счет архитектуры решений CDN-провайдеров контент расположен наиболее близко к конечному пользователю.
  • Не нужно заботиться о ширине каналов, взаимодействии с разными провайдерами, размещать сервера, не нужен мониторинг железного оборудования.
  • Единый провайдер для всего мира и единый вход для взаимодействия.
  • Поддержка современных технологий, отказоустойчивость и стабильность работы.

Минусы

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

Что такое современная ddos атака

DDoS расшифровывается как Distributed Denial of Service — атака на информационную систему с целью довести ее до такого состояния, когда она не сможет обслуживать запросы клиентов, для которых она работает. Ддос атака может проводиться как на отдельный сайт, так и на сервер или сеть, обслуживающую масштабную информационную систему (например, ЦОД).

В чем же сущность ddos атаки? По своей сути это распределенная DoS (Denial of Service) атака. Отличие DoS от DDoS как раз в том, что DoS это просто одиночная атака, а DDoS это масштабная атака, состоящая из множества дос атак, выполняемых из разных мест.

Виды ддос атак

Для проведения ддос атак чаще всего используют ботнет. От размера ботнета зависит мощность атаки. Из определения понятно, что ddos — это когда много запросов направляют на какую-нибудь цель. А вот цели и типы запросов могут быть принципиально разные. Рассмотрю основные варианты ddos атак, которые встречаются в современном интернете. Их можно разделить на 2 основных типа:

  1. Атака на уровне L7, то есть на седьмом уровне модели OSI. Нагрузка на приложение. Обычно это HTTP Flood, но не обзательно. Атака может быть и на открытую в мир MySQL или другую базу, почтовый сервер или даже SSH. Данная атака направлена на то, чтобы как можно меньшим трафиком напрягать наиболее тяжелое и уязвимое место сервиса. Обычно вредоносные запросы маскируются под легитимные, что осложняет отражение.
  2. Уровень L3 L4, то есть сетевой и транспортный уровни модели OSI. Чаще всего это SYN или UDP flood. С помощью ддос атак этого типа стараются загрузить все каналы связи, чтобы таким образом помешать работе сервиса. Как правило, вредоносный трафик легко отличим от легитимного, но его так много, что фильтрация просто не справляется. Все входящие каналы забиваются флудом.

Рассмотрим подробнее конкретные цели для описанных выше атак. Начнем с L7 атак. В качестве цели могут использоваться следующие объекты:

  • Какая-то тяжелая страница на сайте. Атакующий простым просмотром сайта с помощью DevTools определяет наиболее тяжелые страницы. Чаще всего это поиск, большие каталоги товаров или заполняемые формы. Определив узкое место, туда направляется шквал запросов, чтобы положить сайт. Для эффективности, можно нагружать сразу все, что показалось тяжелым. С таким подходом можно и десятью запросами в секунду уронить неподготовленный сайт.
  • Загрузка файлов с сайта. Если вы размещаете более ли менее крупные файлы непосредственно на веб сервере, то через них его будет очень легко положить, если не настроить ограничения на скачивание. Обычными параллельными загрузками можно так нагрузить сервер, что сайт перестанет отвечать.
  • Атака на публичный API. Сейчас это очень популярный инструмент из-за его простоты и легкости использования. Защищать его сложно, поэтому он часто может быть целью ddos атак.
  • Любые другие приложения, которые доступны из инетрнета. Часто это почтовые программы, ssh сервер, серверы баз данных. Все эти службы можно нагрузить, если они смотрят напрямую в интернет.

С уровня L3, L4 обычно делают следующие ддос атаки:

  • UDP-flood. Это вообще классика. С подобными атаками сталкивались практчески все, кто держит открытыми dns и ntp сервисы. В них постоянно находят уязвимости, позволяющие использовать эти службы для ddos атак на сервера. Злоумышленники сканируют интернет, находят неправильно настроенные или уязвимые сервера, отправляют туда запросы, подделывая адрес источника. В ответ эти серверы шлют несколько запросов по поддельным адресам. Таким способом злоумышленники в несколько раз усиливают свои атаки.
  • SYN-flood. Тоже старый вид атак типа отказ от обслуживания. Злоумышленник отправляет большое количество SYN запросов на установку соединения. В общем случае, с помощью syn запросов забивают всю очередь на подключения. В итоге легитимные трафик перестает ходить, сервис не отвечает клиентам.

На основе описания основных типов ddos атак рассмотрим простые и очевидные способы противодействия.

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

Для защиты от простейшей атаки мы будем использовать firewall — iptables, модуль ядра ipset для хранения больших списков ip и самописные скрипты. По фаерволу смотрите мою статью — настройка iptables. Здесь я не буду на этом останавливаться.

Вопрос настройки ipset я подробно рассматривал в своей статье по блокировке ботов по странам. Советую посмотреть материал, так как он напрямую связан с этой статьей и дополняет ее.

Итак, приступим к созданию нашей простой защиты от dos атаки с большим количеством подключений с одного ip адреса. Для начала проверим команду, которая покажет нам количество подключений с каждого ip адреса:

# netstat -ntu | awk '{print $5}' | grep -vE "(Address|servers|127.0.0.1)" | cut -d: -f1 | sort | uniq -c | sort -n| sed 's/^*//'

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

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

#!/bin/sh

netstat -ntu | awk '{print $5}' | grep -vE "(Address|servers|127.0.0.1)" | cut -d: -f1 | sort | uniq -c | sort -n| sed 's/^*//' | awk '{if ($1 > 50 ) print$2}' > /root/ddos/much_conn.txt

sleep 3

list=$(cat /root/ddos/much_conn.txt)
for ipnet in $list
    do
	ipset -A much_conn $ipnet
    done

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

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

# ipset -N much_conn iphash

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

# ipset -L much_conn

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

# iptables -A INPUT -m set --match-set much_conn src -j DROP

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

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

Единственный момент, о котором хочу сказать. Сам я не проверял, сколько подключений открывают поисковые боты, когда приходят на сайт. Я подозреваю, что явно не 50 и даже не 30, но наверняка я не проверял. В общем, будьте аккуратны, когда используете это средство.

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

Было бы неплохо как-то автоматически очищать список забаненных, удаляя оттуда тех, кто уже сутки к вам не подключается, но это сильно усложняет задачу. Нужно как минимум вести лог по блокирующему списку, сохранять время последнего обращения. Обрабатывать все это, высчитывать. В общем, задача хоть и не сильно сложная, но уже не тривиальная. Мне не захотелось этим заниматься.

Есть хоть и не очень изящное, но простое решение этой проблемы. Создать список ipset с заданным временем жизни записи с помощью timeout. Например вот так:

ipset -N much_conn iphash timeout 3600

В данном случае запись с забаненным ip в списке ipset будет храниться в течении 3600 секунд или 60 минут.

Нужно понимать, что в данном примере с 1 ip адресом использовать ipset нет никакого смысла, можно сразу банить средствами самого iptables. Ipset нужен только тогда, когда этот список хотя бы в сотни строк. Если там несколько десяткой адресов, хватит и одного iptables.

Кто может стать жертвой DoS-атаки

Стать объектом кибератаки может практически любая организация и даже частное лицо. По некоторым данным, каждая шестая российская компания сталкивалась с подобной проблемой.

В группе риска находятся сайты:

Доски объявлений, сайты турфирм тоже сталкиваются с такими атаками, но реже. В августе 2021 года поисковый гигант Яндекс рассказал, что подвёргся крупнейшей в России DDoS-атаке. До этого, в 2020 году, был атакован Сбербанк.

Ещё одним сравнительно новым вектором атак стал «интернет вещей» (Internet of Things, IoT). Подключённые к интернету устройства нередко становятся частью ботнет-сети или каналом прослушки.

DoS vs DDoS: в чём разница

Помимо DDoS, в арсенале злоумышленников есть и другой тип атак. Он называется DoS (Denial-of-Service, отказ в обслуживании). Первым известным случаем DoS считается атака канадского хакера в феврале 2000 года, когда он решил перегрузить веб-сервера Amazon и eBay.

Во время DoS-атаки идёт рассылка запросов с одного устройства, а не сети, и нацелена она конкретный домен или виртуальную машину. Он похож на DDoS, так как в обоих случаях целью является нарушение доступа к сети или интернет-ресурсу. Но у DoS есть свои особенности: 

  • Одиночный вектор атаки. Трафик идёт из одной подсети
  • Заметность. Атака на сайт хорошо видна в системах мониторинга
  • Простота отражения. DoS-атаки без труда блокируются брандмауэром или сетевым маршрутизатором.

Такой тип атак не считается опасным, но требует наличия ПО, способного вовремя распознавать и блокировать угрозу.

Для DDoS характерны другие отличительные черты:

  • Многопоточность. Наличие множества каналов отправки запросов упрощает задачу блокирования атакуемого ресурса, так как быстро отфильтровать все атакующие IP-адреса нереально
  • Незаметность. Атака хорошо маскируется под естественный трафик, постепенно забивая ресурс «мусороными» запросами, поэтому отследить её начало непросто
  • Сложность отражения. Трудность определения времени начала атаки мешает фильтрации атакующих IP-адресов

Как вы понимаете, распределённый отказ от обслуживания работает «эффективнее», поэтому злоумышленники предпочитают этот метод. Тем более что отследить эту атаку и добраться до источника крайне трудно, потому что у неё нет центра.

Список мер, если вы подверглись DDoS-атаке

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

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

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

Защитите удаленных пользователей. Обеспечьте работу вашего бизнеса: занесите в белый список IP-адреса доверенных удаленных пользователей, которым необходим доступ, и сделайте этот список основным. Распространите это список в сети и отправьте его поставщикам услуг доступа.

Определите класс атаки. C каким типом атаки вы столкнулись: Объемная? Маломощная и медленная? Ваш поставщик услуг сообщит вам, является ли атака исключительно объемной.

Оцените варианты борьбы с адресами источников атак. В случае сложных атак ваш поставщик услуг не сможет преодолеть/определить количество источников. Заблокируйте небольшие списки атакующих IP-адресов в вашем межсетевом экране. Более крупные атаки можно блокировать на основе данных о геопозиционировании.

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

Усильте свой периметр защиты. Возможно, вы столкнулись с ассиметричной атакой DDoS 7 уровня. Сосредоточьтесь на защите на уровне приложений: используйте системы логинов, систему распознавания людей или технологию Real Browser Enforcement.

Ограничьте сетевые ресурсы. Если предыдущие меры не помогли, то необходимо ограничить ресурсы – таким образом будет ограничен «плохой» и «хороший» трафик.

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

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

Дополнительные материалы

Как защититься от DDoS-атаки?

Популярные виды атак

HTTP-флуд — на атакуемый сервер отправляется множество обычных или шифрованных HTTP-сообщений, которые забивают узлы связи.

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

SYN-флуд — используется один из базовых механизмов действия протокола TCP (алгоритм «запрос-ответ»: SYN пакет — SYN-ACK пакет — ACK пакет). На сайт жертвы поступает вал фальшивых SYN-запросов без ответа. Канал забивается очередью TCP-подключений от исходящих соединений, требующих свой ACK пакет.

UDP-флуд — порты хост-машины жертвы нагружаются пакетами по протоколу UDP, ответы на которые перегружает сетевые ресурсы.

MAC-флуд — порты сетевого оборудования забиваются потоками «пустых» пакетов с разными MAC-адресами.

«Пинг смерти» (Ping of death) — массовая отправка компьютеру жертвы ICMP-пакетов большой длины, в результате чего происходит переполнение буфера.

DNS-спуфинг — из-за подмены IP-адреса в кэше сервера пользователь перенаправляется на фейковую страницу. При переходе преступник получает доступ к персональным данным пользователя.

Заключение

Я рассмотрел наиболее простые способы для защиты web сервера от не менее простых ddos атак, которые больше похожи на баловство. Серьезная атака, которая просто зальет весь входящий канал сервера, даже не заметит наших защит. Но тем не менее, мне приходилось убеждаться в эффективности этих способов в отражении некоторых атак.

Существует до сих пор огромное количество веб серверов, которые вообще никак не защищены даже от утилиты ab 🙂 Я знаю о чем говорю, так как мне попадаются в работу такие серверы. И есть так же много всяких ботов и простых программ, которые можно найти на просторах интернета и побаловаться, заваливая сайты, которые не готовы к нагрузкам вообще.

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

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

Онлайн курс Infrastructure as a code

Если у вас есть желание научиться автоматизировать свою работу, избавить себя и команду от рутины, рекомендую пройти онлайн курс Infrastructure as a code. в OTUS. Обучение длится 4 месяца.

Что даст вам этот курс:

  • Познакомитесь с Terraform.
  • Изучите систему управления конфигурацией Ansible.
  • Познакомитесь с другими системами управления конфигурацией — Chef, Puppet, SaltStack.
  • Узнаете, чем отличается изменяемая инфраструктура от неизменяемой, а также научитесь выбирать и управлять ей.
  • В заключительном модуле изучите инструменты CI/CD: это GitLab и Jenkins

Смотрите подробнее программу по .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector