7 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что такое DDOS-атаки

Что такое DDOS-атаки?

Методы защиты и предотвращения атак с использованием сервиса защиты от атак типа «распределенный отказ в обслуживании» (DDoS), а также брандмауэра веб-доступа (WAF) и сети доставки контента (CDN)

ЧТО ТАКОЕ DDOS-АТАКИ?

Атака типа «отказ в обслуживании» (DoS) – это попытка причинить вред, сделав недоступной целевую систему, например веб-сайт или приложение, для обычных конечных пользователей. Обычно злоумышленники генерируют большое количество пакетов или запросов, которые в конечном счете перегружают работу целевой системы. Для осуществления атаки типа «распределенный отказ в обслуживании» (DDoS) злоумышленник использует множество взломанных или контролируемых источников.

В общем случае DDoS-атаки можно разделить на типы в зависимости от того, на каком уровне модели взаимодействия открытых систем (OSI) происходит атака. Атаки на сетевом уровне (уровень 3), транспортном уровне (уровень 4), уровне представления (уровень 6) и уровне приложений (уровень 7) наиболее распространены.

Модель взаимодействия открытых систем (OSI)

#Уровень 7ПриложениеОписаниеПример вектора
7ПриложениеДанныеСетевой процесс в адрес приложенияфлуд DNS-запросов, HTTP-флуд
6ПредставлениеДанныеПредставление и шифрование данныхSSL-нарушение
5СеансДанныеСеанс связи между хостамиН/Д
4ТранспортныйСегментыСвязь между конечными пунктами и надежностьSYN-флуд
3СетевойПакетыОпределение маршрута и логическая адресацияАтаки с отражением UDP-пакетов
2КанальныйКадрыФизическая адресацияН/Д
1ФизическийБитыСреда передачи, сигнал и двоичные данныеН/Д

Наносим удар по ddos ботнету своими силами

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

Как убить бота?

Итак, как же нам убить бота, ну или по крайней мере попытаться освободить его душу от вселившихся злых сил?

Для этого необходимо:

1). Определить ip адреса атакующих ботов
2). Определить кому принадлежат данные ip адреса (вышестоящая организация: ДЦ, провайдер, учереждение . ), из whois получить список контактных abuse email, на которые будем слать жалобы
3). Подготовить логи, подтверждающие факт проведения атаки.
4). Отправить лог по спискам abuse email

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

Ддос бывает разный

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

В общем это тема для отдельной статьи, я же постараюсь для понимания выбрать простой и доступный всем способ.
Итак, допустим, мы имеем TCP/UDP flood по разным портам, какие-то методы ддос сдерживают, доступ к машине есть, но мы хотим снизить мощность атаки и не допустить ее увеличение, ну или просто напакостить ддосерам.
Задача — нанести контрудар, лишить ботнетчиков самых активных ботов.

Собираем логи

Вариантов много, опять-таки тема для отдельной статьи. Есть много разных способов логирования трафика например tcpdump, iptrtaf, netflow…
У меня как-то исторически сложилось большинство логов было снято с использованием iptraf, который использовался для наблюдения за атакой и все скрипты были настроены на их распарсинг. Решение может не самое красивое, но достаточно универсальное. При самой минимальной модификации можно использовать любые логи и проделывать все нижеперечисленные манипуляции в реальном времени.

Итак, начался ддос, мы запускаем iptraf, в настройках (Configure) влючаем логирование (Logging), теперь когда мы запустим IP traffic monitor, оно спросит в какой файл сохранять лог, например
/var/log/iptraf/iptraf.log
Теперь iptraf для нас будет записывать основную информацию о каждом пакете (в т.ч. и дропнутом).
По личному наблюдению хуже серверу от этого не станет, данное логирование почти не тратит полезных ресурсов сервера.

Отправляем абузы

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

Скрипты

Ниже опишу каждый.

1). show_ips.sh — выводит список ip адресов из лога и количество пакетов, которые прошли за интервал сбора.

Параметры запуска:

После этого скрипт распарсит файл, используя в качестве исходного лога файл iptraf.log и фильтра «Dec 12», и выведет результат в файл ddos_ips.txt для последующего анализа другими скриптами.

* Можно применять и любые свои фильтры, выбирая данные к примеру за конкретный час

Вывод его будет такого вида:

Учитывая, что данный лог будет сделан в момент атаки, будет очень сильный разрыв между наименьшими и наибольшими значениями. Порой в тысячи и десятки тысяч раз. Тут, опять-таки, нет универсальных алгоритмов по какому признаку считать трафик аномальным, нужно смотреть и думать головой.
Но как правило в файле будет очень хорошо видно, ибо нормальный пользователь не может отправить несколько десятков тысяч запросов за несколько минут.
На основании этого лога определяем границу с которой считать айпишники ботами. Можно дополнительно провести ручную проверку некоторых адресов из топов по логам apache/nginx и логу иптрафа.
Например бот ломился по UDP, а у вас только webserver или TCP долбился по каким-то левым портам, кои у вас наглухо закрыты.
Голову на данном шаге очень важно включать, ибо повторюсь универсальных методов нет, все зависит от того что за сервер под атакой, какие сервисы запущены, какая нагрузка.
Можно доработать скрипт и вместе с количеством выводить например еще регион адреса и считать количество закрытых портов, по которым ломился бот, дополнить информацию из логов вэб сервера…
Тут целое поле для мыслительной деятельности, которые выходит за рамки данной статьи.

2). get_info.sh — извлекает abuse email из whois информации для каждого айпишника, полученного скриптом show_ips.sh на шаге 1.
Параметры запуска:

где, ddos_ips.txt это файл созданный на шаге 1
После этого abuse_email.txt будет содержать список email адресов для отправки писем.

Вывод его будет такого вида:

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

3). get_logs.sh — скрипт извлекает из лога iptraf информацию по каждому конкретному ip адресу, сохраняет в отдельный файл и упаковывает в Gzip

Параметры запуска:

где, pref префикс создаваемых логов для удобства их сортировки

В параметрах обязательно указать th_limit, это опять число коннектов из файла ddos_ips.txt отделяющих хорошие ip адреса от ботов.
На выходе в текущей папке будут созданы Gzip файлы содержащие логи по каждому отдельному ипу.

4). mail_send.sh — скрипт рассылающий абузы по спискам полученным из шага 2. скриптом get_info.sh

Параметры запуска:

где abuse_email.txt файл полученный на шаге 2

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

echo «Hi, today, our server x.x.x.x was attacked from your or your c$ip
Here are the logs yourcompany.com/abuse$pref$ip.txt.gz (TZ — Europe/Moscow) . bla bla bla . The Company Name Ltd.» | mail -s «[Abuse] ddos attack from your $ip» $email_row
(свой текст специально не привожу, чтобы не слали по шаблону и не попало в спамфильтр)

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

Читать еще:  Как выбрать ноутбук в 2016 году?

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

Вот его параметры:

parse_date — по этому выражению будет делаться Grep лога, если нужно отобрать записи за определенное число или час
pref — префикс для создаваемых файлов, например та же дата
iptraf_raw_file — откуда брать лог iptrafa

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

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

И что в результате? Неужели это подействует?

Что произойдет с полученной абузой? Возможно конечно ее проигнорируют, но, например, на следующий день айпишник опять попадет в черный список и опять уйдет абуза и т.д., возможно когда-то отреагируют.
Если ип это какой-то впс/вдс сервер и абуза попадет например в ДЦ с подробными логами, нормально оформлена, то она скорее всего будет изучена, а если логи будут очень вескими и сойдутся со статистикой ДЦ, то может и будет блок. Тут где-то 50/50, что в общем тоже неплохо.
Если подобное придет провайдеру, он скорее всего уведомит абонента (общался с некоторыми знакомыми, сказали что поступят именно так), а если жалоб придет несколько и опять-таки аргументированных, то может и заблочат до тех пор, пока клиент не поставит нормального антивируса.

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

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

UPD: Кстати, бывают случаи, когда способ, описанный в статье, может стать реальным спасением от ддоса. Например если завалили всю ширину порта со сравнительно небольшого числа ботов на широких каналах или сетевая не справляется с потоком запросов. В таком случае помогут или блок на стороне вышестоящего маршрутизатора, что очень часто не представляется возможным во многих ДЦ, или борьба при помощи абуз. Последнее кроме своей простоты и доступности, дает возможность неплохо так напакостить ддосерам и разоружить их.

DDOS атака – варианты

игроки столпились у входа

Представьте, что вы играете в многопользовательскую онлайн игру. С вами играют тысячи игроков. И с большинством из них вы знакомы. Вы обговариваете детали и в час Х проводите следующие действия. Вы все единовременно заходите на сайт и создаёте персонаж с одним и тем же набором характеристик. Группируетесь в одном месте, блокируя своим количеством одновременно созданных персонажей доступ к объектам в игре остальным добросовестным пользователям, которые о вашем сговоре ничего не подозревают.

Основные способы реализации DoS-атак

Существуют два основных способа реализации DoS-атак.

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

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

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

Атаки, направленные на переполнение ресурсов операционной системы или приложений. Атаки данного типа нацелены не на канал связи, а на саму систему. Каждая система имеет множество ограничений по разным параметрам (процессорное время, дисковое пространство, память и др.), и смысл атаки заключается в том, чтобы заставить систему эти ограничения нарушить. Для этого на компьютер жертвы посылается огромное количество запросов. В результате перерасхода вычислительных мощностей на сервере система отказывает в обслуживании запросов легитимных пользователей.

Как проводятся DDoS-атаки на телефон

О развитии облачной телефонии вы, наверное, уже слышали. Если нет – это система, обеспечивающая подключение внутренних номеров к внешним телефонным линиям и мобильным сетям. Мощности и настройки облачной телефонии находятся на стороне провайдера, вы же можете заплатить за доступ к этому инструменту. К сожалению, им пользуются не только компании в своих Call Centers, но и хакеры. По поддельным данным они получают доступ к сервису, используют отработанные схемы и проводят ДДос на телефон.

Такая телефония имеет не один канал и не один номер, а на мобильные сети для одного номера установлен лимит входящих звонков. С помощью 10-канального транка можно заспамить мобильный любой компании, и она ничего не сможет сделать с этим сутки минимум.

Цели атак

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

  1. Такси.
  2. Эвакуаторы.
  3. Пиццерии и суши, доставка еды на дом.
  4. Прокаты автомобилей премиум-класса.
  5. Элитных жриц любви.

Цель таких атак одна – шантаж и вымогательство денег. Для фирм ставят условия: оплати 10-30% от дневного заработка после суточного шантажа или он продолжится целую неделю.

Схема проведения DDoS-атак

Рассмотрим подробнее схему проведения DDoS-атаки в ознакомительных целях, чтобы понять, как это работает, и постараться от нее защититься:

  1. Проведение: отмена ДДос за выкуп. То есть, блокировка его работы в течение суток, чтобы бизнес терпел убытки, и восстановление связи за деньги с последующим прекращением атак.
  2. Принцип работы: на номер абонента поступает вызов. При поднятии трубки звонок сбрасывается, и начинается новый вызов на этот номер. При сбросе происходит перезвон. Выключение телефона и включение через время тоже не решают проблему, так как программа постоянно пытается дозвониться до адресата.
  3. Усиление эффекта: использование нескольких транков параллельно с постоянным дозвоном от разных номеров.
  4. Подготовка: злоумышленник обычно тщательно готовится к проведению таких операций. Ищет подходящее оборудование на вторичном рынке, регистрирует сим карты для интернета на документы других людей, шифрует используемое оборудование, анонимизирует свою деятельность, подключает телефонию (или покупает звонилку) и использует программы на поддельные или вымышленные данные, проводит полный анализ потенциальной жертвы (от суточного трафика на сайте до количества филиалов в других городах).
  5. Исполнение: через DDos-атаки различных организаций в интернете или самостоятельно, через регистрацию в облачной телефонии по поддельным документам.
  6. Получение оплаты: все зависит от фантазии, рисков и знания финансовой безопасности злоумышленника. Используются схемы с фиатными деньгами, криптовалютами и обменниками.
  7. Завершение: после получения или не получения выкупа, через пару дней DDoS-атак – прекращение деятельности и уничтожение всего оборудования (ноутбука, жесткого диска, флешки, модема, телефона).

При такой схеме есть три варианта проведения атак.

Читать еще:  Intel планирует до конца года представить 144-слойную флеш-память 3D-NAND

3 варианта проведения DDoS-атаки на телефон

Когда поступает звонок, при поднятии трубки может происходить следующее:

  1. Флуд-бот сбрасывает звонок и начинает звонить заново (способ, использованный в ознакомительной схеме).
  2. Абонент-жертва слышит аудиозапись, побуждающую к действию и вызову соответствующих эмоций (аудио с измененным голосом (синонимизированным) на предмет перевода средств на счет вымогателя).
  3. Абонент не будет слышать ничего. Пустота в эфире и постоянные звонки могут повлиять на более выразительные эмоции некоторых людей.

Пример облачной телефонии, ранее использовавшейся для спам-атак

Ранее, для флуд-атак использовались неприметные и развивающиеся компании облачных АТС. Например, программа Zadarma позволяла:

  1. Зарегистрироваться и получить 20 рублей для опробования функционала.
  2. В настройках найти и запустить Sip Killer.
  3. Применить нужные для постоянного дозвона параметры (можно дополнительно подтянуть аудиозапись с проигрыванием в трубку абонента звуком).
  4. Запустить SIP-звонилку.

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

Способы защиты от DDos-атак на смартфон

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

Какие существуют средства защиты:

  1. Максимум, что можно сделать при дозвоне напрямую – занести номера надоедливого флуд-бота в черный список (заблокировать).
  2. Если номеров несколько и они неизвестны, можно заблокировать дозвон всех номеров, не входящих в телефонную книгу (для бизнеса этот вариант не подходит).
  3. Рекомендуется в качестве дозвона не использовать прямой номер, а многоканальный, типа 2030, 5555 4947 и так далее.
  4. Также, рекомендуется устанавливать в начале дозвона, до соединения с оператором, проверку на ботов – голосовое сообщение с приветствием. Например: «Здравствуйте, вас приветствует компания «Пять рельсов», для получения справки жмите 1, для связи с оператором жмите 0».

100% защиту это не гарантирует, но дилетантов, что попытаются ставить палки в колеса, можно нейтрализовать.

Основные способы реализации DoS-атак

Существуют два основных способа реализации DoS-атак.

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

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

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

Атаки, направленные на переполнение ресурсов операционной системы или приложений. Атаки данного типа нацелены не на канал связи, а на саму систему. Каждая система имеет множество ограничений по разным параметрам (процессорное время, дисковое пространство, память и др.), и смысл атаки заключается в том, чтобы заставить систему эти ограничения нарушить. Для этого на компьютер жертвы посылается огромное количество запросов. В результате перерасхода вычислительных мощностей на сервере система отказывает в обслуживании запросов легитимных пользователей.

Классификация DDoS-атак

Рассматривая методы предотвращения таких атак, полезно разделить их на две группы: атаки уровня инфраструктуры (уровни 3 и 4) и атаки уровня приложения (уровни 6 и 7).

Атаки уровня инфраструктуры

К атакам уровня инфраструктуры обычно относят атаки на уровнях 3 и 4. Это наиболее распространенный тип DDoS-атак, который включает в себя такие векторы, как SYN-флуд, и другие атаки отражения, такие как UDP-флуд. Подобные атаки обычно массовые и направлены на то, чтобы перегрузить пропускную способность сети либо серверы приложений. Тем не менее, такой тип атак имеет определенные признаки, поэтому их легче обнаружить.

Атаки уровня приложения

К атакам уровня приложений обычно относят атаки на уровнях 6 и 7. Эти атаки менее распространены, но в то же время являются более сложными. Как правило, они не столь массовые, как атаки уровня инфраструктуры, но нацелены на определенные дорогостоящие части приложения и приводят к тому, что оно становится недоступным для реальных пользователей. В качестве примера можно привести поток HTTP-запросов на страницу входа в систему, дорогой API поиска или даже потоки XML-RPC WordPress (также известные как атаки WordPress Pingback).

К кому обращаться за помощью?

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

Техподдержка вашего оператора ничего не сможет вам предложить, кроме так подключить платные услуги «Черный список» и «Определитель скрытых номеров», если номер звонившего скрыт.

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

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

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

Почему это вообще возможно?

База данных, она же БД, любого веб приложения сконфигурирована таким образом, что сервер просто обязан что-то ответить на запрос удалённого хоста. Ну представьте, что вы вводите пароль и логин на какой-то из социальных страниц, а в ответ – тишина. Не хочу, мол, отвечать. И вы знаете, что сервер вам по любому вернёт либо подтверждение входа либо запрет на его посещение. Нам с вами, чтобы “спровоцировать” сервер на какое-то действие стоит лишь кнопкой мыши по заранее подготовленной веб-форме нажать . А в это время на стороне сервера запускаются порой сложнейшие механизмы аутентификации, подбора и выдачи SQL операторов, идёт подгрузка дополнительного гипертекста и т.д. и т.п. И вот что могут хакеры дальше…

Наносим удар по ddos ботнету своими силами

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

Как убить бота?

Итак, как же нам убить бота, ну или по крайней мере попытаться освободить его душу от вселившихся злых сил?

Для этого необходимо:

1). Определить ip адреса атакующих ботов
2). Определить кому принадлежат данные ip адреса (вышестоящая организация: ДЦ, провайдер, учереждение . ), из whois получить список контактных abuse email, на которые будем слать жалобы
3). Подготовить логи, подтверждающие факт проведения атаки.
4). Отправить лог по спискам abuse email

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

Ддос бывает разный

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

Читать еще:  Компьютерные приколы и шутки

В общем это тема для отдельной статьи, я же постараюсь для понимания выбрать простой и доступный всем способ.
Итак, допустим, мы имеем TCP/UDP flood по разным портам, какие-то методы ддос сдерживают, доступ к машине есть, но мы хотим снизить мощность атаки и не допустить ее увеличение, ну или просто напакостить ддосерам.
Задача — нанести контрудар, лишить ботнетчиков самых активных ботов.

Собираем логи

Вариантов много, опять-таки тема для отдельной статьи. Есть много разных способов логирования трафика например tcpdump, iptrtaf, netflow…
У меня как-то исторически сложилось большинство логов было снято с использованием iptraf, который использовался для наблюдения за атакой и все скрипты были настроены на их распарсинг. Решение может не самое красивое, но достаточно универсальное. При самой минимальной модификации можно использовать любые логи и проделывать все нижеперечисленные манипуляции в реальном времени.

Итак, начался ддос, мы запускаем iptraf, в настройках (Configure) влючаем логирование (Logging), теперь когда мы запустим IP traffic monitor, оно спросит в какой файл сохранять лог, например
/var/log/iptraf/iptraf.log
Теперь iptraf для нас будет записывать основную информацию о каждом пакете (в т.ч. и дропнутом).
По личному наблюдению хуже серверу от этого не станет, данное логирование почти не тратит полезных ресурсов сервера.

Отправляем абузы

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

Скрипты

Ниже опишу каждый.

1). show_ips.sh — выводит список ip адресов из лога и количество пакетов, которые прошли за интервал сбора.

Параметры запуска:

После этого скрипт распарсит файл, используя в качестве исходного лога файл iptraf.log и фильтра «Dec 12», и выведет результат в файл ddos_ips.txt для последующего анализа другими скриптами.

* Можно применять и любые свои фильтры, выбирая данные к примеру за конкретный час

Вывод его будет такого вида:

Учитывая, что данный лог будет сделан в момент атаки, будет очень сильный разрыв между наименьшими и наибольшими значениями. Порой в тысячи и десятки тысяч раз. Тут, опять-таки, нет универсальных алгоритмов по какому признаку считать трафик аномальным, нужно смотреть и думать головой.
Но как правило в файле будет очень хорошо видно, ибо нормальный пользователь не может отправить несколько десятков тысяч запросов за несколько минут.
На основании этого лога определяем границу с которой считать айпишники ботами. Можно дополнительно провести ручную проверку некоторых адресов из топов по логам apache/nginx и логу иптрафа.
Например бот ломился по UDP, а у вас только webserver или TCP долбился по каким-то левым портам, кои у вас наглухо закрыты.
Голову на данном шаге очень важно включать, ибо повторюсь универсальных методов нет, все зависит от того что за сервер под атакой, какие сервисы запущены, какая нагрузка.
Можно доработать скрипт и вместе с количеством выводить например еще регион адреса и считать количество закрытых портов, по которым ломился бот, дополнить информацию из логов вэб сервера…
Тут целое поле для мыслительной деятельности, которые выходит за рамки данной статьи.

2). get_info.sh — извлекает abuse email из whois информации для каждого айпишника, полученного скриптом show_ips.sh на шаге 1.
Параметры запуска:

где, ddos_ips.txt это файл созданный на шаге 1
После этого abuse_email.txt будет содержать список email адресов для отправки писем.

Вывод его будет такого вида:

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

3). get_logs.sh — скрипт извлекает из лога iptraf информацию по каждому конкретному ip адресу, сохраняет в отдельный файл и упаковывает в Gzip

Параметры запуска:

где, pref префикс создаваемых логов для удобства их сортировки

В параметрах обязательно указать th_limit, это опять число коннектов из файла ddos_ips.txt отделяющих хорошие ip адреса от ботов.
На выходе в текущей папке будут созданы Gzip файлы содержащие логи по каждому отдельному ипу.

4). mail_send.sh — скрипт рассылающий абузы по спискам полученным из шага 2. скриптом get_info.sh

Параметры запуска:

где abuse_email.txt файл полученный на шаге 2

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

echo «Hi, today, our server x.x.x.x was attacked from your or your c$ip
Here are the logs yourcompany.com/abuse$pref$ip.txt.gz (TZ — Europe/Moscow) . bla bla bla . The Company Name Ltd.» | mail -s «[Abuse] ddos attack from your $ip» $email_row
(свой текст специально не привожу, чтобы не слали по шаблону и не попало в спамфильтр)

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

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

Вот его параметры:

parse_date — по этому выражению будет делаться Grep лога, если нужно отобрать записи за определенное число или час
pref — префикс для создаваемых файлов, например та же дата
iptraf_raw_file — откуда брать лог iptrafa

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

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

И что в результате? Неужели это подействует?

Что произойдет с полученной абузой? Возможно конечно ее проигнорируют, но, например, на следующий день айпишник опять попадет в черный список и опять уйдет абуза и т.д., возможно когда-то отреагируют.
Если ип это какой-то впс/вдс сервер и абуза попадет например в ДЦ с подробными логами, нормально оформлена, то она скорее всего будет изучена, а если логи будут очень вескими и сойдутся со статистикой ДЦ, то может и будет блок. Тут где-то 50/50, что в общем тоже неплохо.
Если подобное придет провайдеру, он скорее всего уведомит абонента (общался с некоторыми знакомыми, сказали что поступят именно так), а если жалоб придет несколько и опять-таки аргументированных, то может и заблочат до тех пор, пока клиент не поставит нормального антивируса.

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

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

UPD: Кстати, бывают случаи, когда способ, описанный в статье, может стать реальным спасением от ддоса. Например если завалили всю ширину порта со сравнительно небольшого числа ботов на широких каналах или сетевая не справляется с потоком запросов. В таком случае помогут или блок на стороне вышестоящего маршрутизатора, что очень часто не представляется возможным во многих ДЦ, или борьба при помощи абуз. Последнее кроме своей простоты и доступности, дает возможность неплохо так напакостить ддосерам и разоружить их.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector