Защита от ddos-атак с точки зрения оператора связи. часть 1

В чем суть DDoS-атаки?

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

Суть DdoS атаки сводится к наличию у компьютера множества портов. Серверная или клиентская часть система постоянно слушает эти порты, так как через них проходит важная информация:

  • Управление удаленными ПК для ремонта, обучения, настройки.
  • Выполнение технических корректировок и обновлений системы.
  • Синхронизация времени, служебные посылки и стандартные ответы сервера и т.п.

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

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

Почему после проведения ddos атак, подвергнувшийся нападения сайт «лежит» (недоступен)?

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

Анализ лог файла 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 и выполняете каждую минуту. После завершения атаки скрипт можно отключить. В принципе, можно и на постоянку оставлять, но тут нужно хорошенько подумать и прикинуть, как оно должно выглядеть. Главный принцип — не навредить.

Как распознать DDoS атаку и определить ее источники?

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

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

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

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

Лог сайта – это файл, в который записывается информация о поступающих запросах. Бывает лог ошибок, он короткий и в нем отражаются только те запросы, в ответ на которые сервер был вынужден дать ошибку. Но нам нужен лог посещений, в него пишется каждый запрос поступающий сайту, фиксируется – время, IP адрес, с которого поступает запрос, тип запроса (GET, POST, HEAD) целевой URL, код выданного ответа, идентификатор пользователя (браузер, данные роботов и т.д.).

Пример одиночной записи лога доступа:

biznessystem.ru 104.194.196.238 - - [27/Nov/2016:11:01:26 +0300] "GET /2014/01/kak-otkryt-fajl-rar-kak-polzovatsa-winrar/ HTTP/1.1" 200 74658 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13" 0

Последовательно здесь указано: мой домен, IP адрес источника запроса, дата и время, тип запроса и адрес страницы, код ответа сервера (200), данные источника запроса (браузер, операционная система).

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

Признаки DoS атаки:

Большое число запросов с одного IP адреса, превышающее адекватные потребности живого человека (тысячи);
Интервал между запросами существенно меньше, чем нужен человеку

Например, живой человек не будет открывать новую страницу сайта каждую секунду (она даже загрузиться не успеет);
Повторение одинаковых запросов, как будто кто-то постоянно обновляет страницу.
Запросы к страницам, которых не существует или которые не предназначены для пользователей – это не всегда признак именно DoS атаки, но всегда должно обращать внимание, может быть вас пытаются взломать, ища уязвимые места.. В случае DDoS атакие признаки все те же, только многочисленные мусорные запросы будут идти  не с одного IP адреса, а с множества

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

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

При анализе лога было обнаружено 11253 запроса с IP 213.159.212.73. Причем, все эти запросы были отправлены в течение 40 минут.

В данном случае налицо были признаки: много запросов, маленькие интервалы (по 3-4 новых страницы в секунду), обращение к несуществующим страницам (404 ошибка), обращение к запрещенным страницам (403 ошибка).

Варианты защиты от DDoS-атак с подключением по BGP

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

  1. Включить постоянную защиту (Always-ON) и пропускать весь входящий трафик через фильтры StormWall. В этом случае все Ваши сети окажутся под моментальной защитой (DDoS-атака никогда не застанет Вас врасплох), но при этом гибкость управления входящим трафиком будет ограничена.
  2. Подключить защиту, но анонсировать не все Ваши сети сразу, а лишь те из них, которые, по Вашему мнению, требуют защиты в определенный момент времени. Например, если Вы ожидаете начала атаки или атака уже началась, то вручную направляете анонс сети в StormWall (и убираете его с других провайдеров).
  3. Автоматизировать анонсирование защищаемых сетей при начале атаки, подключив бесплатный сенсор Anti-DDoS. Этот сенсор, устанавливаемый на стороне клиента, сразу после выявления начала атаки автоматически переключает атакуемую сеть в режим защиты и убирает эту сеть с незащищенных провайдеров, а после завершения атаки возвращает ее обратно.Сенсор развертывается на виртуальной машине, он может получать информацию о трафике с помощью NetFlow, sFlow или Mirror/SPAN и интегрируется с Вашим граничным маршрутизатором или группой маршрутизаторов с помощью BGP, отправляя сигналы о постановке на защиту с использованием BGP Community.

Что такое DDoS-атака?

Хакеры в последние годы оценили возможности Интернета для проворачивания своих не вполне законных и полностью беззаконных действий. Сегодня уже невозможно встретить хакера-кустаря, ломающего систему «тет-а-тет»: это и опасно для него, да и не очень интересно. Зачем это делать, если можно заставить выполнять взлом одних программ другими? Одним из таких технологий является DdoS атака, которую не следует путать с операционной системой MS-DOS.

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

Отказ подвергнутому нападению системы осуществляется с целью овладению «вражеской» системой. Но чаще ddos атаки это временная мера экономического давления. То есть вынужденный простой атакованного ресурса ударит по карману его владельцев и сделает его временно недоступным.

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

Защита от DDoS-атак

С другой стороны, каждый, кто пытается предпринять попытку DDoS-атаки, должен понимать, что на «той» стороне тоже не дураки сидят. Они запросто могут вычислить адреса, с которых такая атака производится, а это чревато самыми печальными последствиями.

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

DDoS атака – что это и в чем отличие от DoS?

Прежде чем перейти к рассказу о ДДоС атаках, стоит упомянуть об их младшем брате – DoS атаке (сокращение от Denial of Service – отказ в обслуживании). О ДоС атаках редко говорят и пишут, хотя, многие реальные ситуации должны интерпретироваться именно как DoS с одной буквой D. ДДоС, в свою очередь, является частным случаем первой и имеет существенные особенности.

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

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

Наличие дополнительной «D» означает Distributed Denial of Service – распределенный отказ в обслуживании.

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

Принципиальное отличие в классификации этих типов становится понятным только на этапе формирования комплекса мер по защите – защищаться от DDoS значительно сложнее, об этом поговорим ниже.

Виды DoS атак по уровню воздействия

  1. Массовые спамные – это атаки, при которых система нагружается за счет огромного количества запросов. Даже на обработку простых действий тратится процессорное время сервера, и, при их большом, количестве сервер не справляется;
  2. Умные точечные – при такой атаке запросы шлются к тем элементам системы, которые являются наиболее уязвимыми (потребляют максимум процессорной мощности). Общее количество запросов может быть небольшим, а сервер виснет.

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

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

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

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

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

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

DDOS атака с помощью программ.

Для более наглядного примера воспользуйтесь программой Low Orbit Ion Cannon (Ионная пушка с низкой орбиты). Или LOIC. Самый скачиваемый дистрибутив располагается по адресу (работаем в Windows):

https://sourceforge.net/projects/loic/

ВНИМАНИЕ! Ваш антивирус должен отреагировать на файл как на вредоносный. Это нормально: вы уже знаете, что качаете

В базе сигнатур он помечен как генератор флуда – в переводе на русский это и есть конечная цель бесконечных обращений на определённый сетевой адрес. Я ЛИЧНО не заметил ни вирусов, ни троянов. Но вы вправе засомневаться и отложить загрузку.

Качаем:

Так как нерадивые пользователи забрасывают ресурс сообщениями о вредоносном файле, Source Forge перекинет вас на следующую страницу с прямой ссылкой на файл:

В итоге мне удалось скачать утилиту только через Tor .

Окно программы выглядит вот так:

Пункт 1 Select target позволит злоумышленнику сосредоточиться на конкретной цели (вводится IP адрес или url сайта), пункт 3 Attack options позволит выбрать атакуемый порт, протокол (Method) из трёх TCP, UDP и HTTP. В поле TCP/UDP message можно ввести сообщение для атакуемого. После проделанного атака начинается по нажатии кнопки IMMA CHARGIN MAH LAZER  (это фраза на грани фола из популярного некогда комикс–мема; американского мата в программе, кстати, немало). Всё.

Причины

Причин для таких действий может быть много. Чаще всего это деньги. К примеру, по запросу определенного человека нужно «положить» сайт конкурентов в бизнесе или политике. А самая первая атака в 1999 году осуществлялась на сервера ФБР после ужесточения последними мер к хакерам. Также стоить помнить: посещаемый сайт — это не просто развлечение для владельца, а доход. На одной простой контекстной рекламе действительно популярная площадка может иметь по нескольку сотен тысяч рублей в день. Так что дудос-атака — это не просто развлечение или акция протеста.

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

Заключение

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

Онлайн курсы по Mikrotik

Если у вас есть желание научиться работать с роутерами микротик и стать специалистом в этой области, рекомендую пройти курсы по программе, основанной на информации из официального курса MikroTik Certified Network Associate. Помимо официальной программы, в курсах будут лабораторные работы, в которых вы на практике сможете проверить и закрепить полученные знания. Все подробности на сайте .

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

  • Знания, ориентированные на практику;
  • Реальные ситуации и задачи;
  • Лучшее из международных программ.

Заключение

Иногда eBPF вообще и XDP в частности представляется скорее как инструмент продвинутого администратора, нежели как платформа для разработки. Действительно, XDP — инструмент вмешательства в обработку пакетов ядром, а не альтернатива ядерному стеку, как DPDK и прочие варианты kernel bypass. С другой стороны, XDP позволяет реализовать довольно сложную логику, которую, к тому же, легко обновлять без паузы в обработке трафика. Верификатор не создает больших проблем, лично я не отказался бы от такого для частей userspace-кода.

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

Ссылки:

  • Полный код на GitHub
  • bpftrace Cheat Sheet
  • XDP Tutorial
  • PoC: compiling to eBPF from Rust
Добавить комментарий

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

Adblock
detector