Как заддосить компьютер в локальной сети

Обновлено: 07.07.2024

Всем привет. Это блог Компьютер76, и сейчас очередная статья об основах хакерского искусства. Сегодня мы поговорим о том, что такое DDOS атака простыми словами и примерами. Перед тем, как бросаться специальными терминами, будет введение, понятное каждому.

Зачем используется DDOS атака ?

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

Вариант 1.

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

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

Вариант 2.

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

Как проводится DDOS атака ?

Что такое DDOS атака вы можете узнать и попробовать прямо сейчас.

Система откажется работать.

  • Для Windows предлагаю создать бат-файл в Блокноте с кодом:

Назовите типа DDOS.bat

Объяснять смысл обоих команд, я думаю, не стоит. Видно всё невооружённым взглядом. Обе команды заставляют систему исполнить скрипт и тут же его повторить, отсылая в начало скрипта. Учитывая скорость исполнения, система впадает через пару секунд в ступор. Game, как говориться, over.

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

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

скачать LOIC

скачать LOIC по прямой ссылке

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

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

low orbit ion canon

Этичный хакинг и тестирование на проникновение, информационная безопасность

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

Как работает домашняя локальная сеть

В домашней локальной сети основой является роутер — довольно сложное сетевое устройство. Это устройство обеспечивает работу локальной сети. При подключении нового устройства к локальной сети роутера, он с помощью протокола DHCP присваивает новому устройству IP адрес. В качестве диапазона IP адресов в домашних сетях обычно используются 192.168.1.0/24, 192.168.0.0/24 или 192.168.100.0/24.

То есть у вашего компьютера или телефона, подключённого к Интернету через роутер, имеется локальный IP адрес.

Возможно вы уже слышали про NAT и даже знаете, что эта технология позволяет Интернет-провайдеру использовать один единственный внешний (белый) IP адрес для всех или для множества его клиентов. Но NAT используется не только на уровне провайдера Интернет услуг, но и уже в вашем роутере. Рассмотрим NAT чуть подробнее.

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

Можно ли получить доступ к компьютеру в локальной сети, если есть доступ к роутеру?

Вроде бы, ответ очевиден — технология NAT не даёт такой возможности в принципе: подключение к локальным устройствам, у которых нет белого IP, а есть только локальный IP вида 192.168.0.*, невозможен.

Но я начал с того, что роутер это весьма сложное сетевое устройство. И это устройство поддерживает множество функций по настройке сети, в частности оно поддерживает:

  • настройку статичных IP адресов для устройств в локальной сети минуя протокол DHCP
  • Forwarding портов

Forwarding портов

Forwarding, который ещё называют «переадресацией» портов, «проброской портов», «перенаправлением портов» или «Port mapping» (сопоставление портов) позволяет делать очень замечательную вещь — с его помощью устройства за NAT, то есть устройство в локальной сети, имеющее локальный IP адрес, могут стать доступными глобально. Правила могут быть настроены весьма гибкой, можно сделать пересылку нескольких портов на один, или с одного на несколько, или несколько на несколько и так далее. Но для наших целей больше всего интересно следующее правило, которое словами можно выразить так:

Номера портов необязательно должны быть одинаковыми, поэтому правило может быть таким:

В результате мы получим доступ к порту 80 (его обычно прослушивает веб-сервер) устройства в локальной сети 192.168.0.5.

Это означает, что мы можем получить доступ к любому открытому порту и запущенному на нём службе в локальной сети! Это может быть веб-сервер, SSH, FTP, сетевые протоколы Windows и т.д.

Просмотр устройств локальной сети. Настройка статических адресов в локальной сети

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

Рассмотрим пример. В локальной сети провайдера есть роутер с IP адресом 100.69.64.23 к которому получен административный доступ.


Все (или практически все) роутеры могут показать информацию о подключённых в данный момент клиентах. Эта информация может быть:

  • на странице статуса роутера
  • на странице настройки DHCP
  • на странице статуса LAN (локальной сети)

Например, на этом роутере информация собрана на странице DHCP Clients List:


Например, для MAC 00:80:92:c4:6a:f9 найдена следующая информация:

Меня не интересуют мобильные телефоны и планшеты — как правило, на них все порты закрыты. Меня интересуют ноутбуки и настольные компьютеры, поскольку на них могут быть запущены службы, которые прослушивают порты.

Из всех устройств самыми интересными мне показались следующие

Причина в следующем:

  • их MAC-адреса, вроде бы, не принадлежат производителям мобильных телефонов
  • их IP адреса являются самыми первыми — то есть к роутеру весьма вероятно вначале подключаются проводные устройства, а затем устройства по Wi-Fi
  • эти устройства отсутствуют в списке беспроводных клиентов:


Если атака планируется длительной, то определённым устройствам можно присвоить статичные IP адреса. Дело в том, что проброска портов настраивается относительно IP адреса. А целевое устройство через некоторое время может сменить IP адрес на произвольный. Если это случиться, то правила переадресации портов будут работать — просто теперь они будут отправлять пакеты другому устройству, которое заняло этот IP адрес.

Чтобы этого избежать можно привязать IP к MAC-адресу — мне ещё не встречались роутеры, которые не умеют этого делать. Настройка выполняется достаточно просто.

Настройка переадресации портов

В зависимости от модели роутера эта вкладка может называться

  • Forwarding
  • Port Forwarding
  • Port mapping
  • Переадресация портов
  • другие варианты

Например, на рассматриваемом роутере эту вкладку я нашёл по пути Application → Port Forwarding:


Всего портов 1-65535 и роутеры позволяют делать переадресацию диапазонов, то есть 65 тысяч портов не придётся настраивать по одному.

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

Обратите внимание, что некоторые роутеры работают не на 80, а на 8080 или 443 порте.

Итак, если веб-интерфейс роутера работает на 80 порту и мы хотим получить доступ к локальным ресурсам устройства с IP 192.168.1.2, то нам нужно установить следующие три правила:

  • Переадресацию портов 1-79 на 1-79 порты адреса 192.168.1.2
  • Переадресацию портов 81-65534 на 81-65534 порты адреса 192.168.1.2
  • Переадресацию порта 65535 на 80 порт адреса 192.168.1.2

Первые два правила с диапазонами (надеюсь) очевидны. Третьим правилом мы перенаправляем запросы, пришедшие на порт 65535, на 80 порт локального компьютера, поскольку там может быть веб-сервер или что-то другое интересное.

Начнём с того, что сделаем контрольный замер, какие именно порты открыты:

Эта команда покажет открытые порты на роутере:


Добавляем первое правило:





Заново сканируем порты:


Констатируем — нас постигла неудача. 80-й порт — это порт самого роутера, а на устройстве с IP 192.168.1.2 просканированные порты закрыты.

Не отчаиваемся — переделываю все правила на переадресацию портов на IP 192.168.1.3:


И опять сканируем порты:

Поясню, хотя команда Nmap одна и та же, но на самом деле в предыдущий раз мы сканировали порты устройства в локальной сети с IP 192.168.1.2. А последняя команда уже сканирует порты на 192.168.1.3.

А вот здесь нам повезло:


Напомню, что все эти порты, кроме 80, открыты на устройстве, у которого даже нет белого IP адреса, у него IP адрес 192.168.1.3.

А как проверить 80 порт на 192.168.1.3? Делаем это так:

Порт оказался закрыт.

Чтобы собрать информацию об отрытых портах, изучим их баннеры:


Не очень интересно — видимо, это всё функции связанные с принтером.

А там мы видим интерфейс многофункционального устройства (принтер-копер-сканер) MFC-J5910DW:


Ещё раз для тех, кто потерялся, это устройство с IP адресом 192.168.1.3!


Также я сумел подключиться к FTP:


Заключение

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

Lorem ipsum dolor

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

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

Что такое Ддос-атака?

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

Реальная Ddos-атака практически невозможна без помощи других пользователей или специальных программ. Один человек с одного компьютера не способен «руками» отослать нужное количество запросов, чтобы веб - ресурс «лег». Поэтому многих и интересует, как можно сделать Ддос-атаку при помощи сторонних программ. Но об этом чуть ниже.

Почему Ddos-атаки имеют успех?

  • не надежны е межсетевы е экран ы ;

  • бреши в системе безопасности;

  • проблемы в операционной системе серверов;

  • нехватк а системной мощности для обработки запросов;

  • и др.

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

  1. Массовое направление на сервер некорректных инструкций, выполнение которых приводит к аварийному завершению работы.

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

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

  4. Массовая атака ложными адресами, что приводит к «забиванию» каналов связи.

Ddos-атака: как сделать

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

Программа для Ddos-атак по IP и URL

  1. Найти и скачать ее из и нтернета, она там есть в открытом доступе.

  2. Активировать это приложение при помощи файла «loic.exe».

  3. Ввести в открывшихся полях IP и URL атакуемого ресурса.

  4. Отрегулировать уровень передачи запросов.

  5. Нажать для старта кнопку «imma chargin mah lazer».

Еще инструменты, как сделать Ддос-атаку

  1. Fg Power Ddoser

  2. Silent Ddoser

  3. Dnet Ddoser

  4. Darth Ddoser

  5. H y po Crite

  6. Host Booter

  7. Good Bye v3/0-v5.0

  8. Black Peace Group Ddoser

  1. PHPDos

  2. TWBooter

  3. Dark Shell

  4. War Bot

  5. Infinity Bot

  6. Darkness

  7. Russkill

  8. Armageddon

  1. Wild Ddos

  2. Death Ddos Serice

  3. Ddos SerVis

  4. Beer Ddos

  5. No Name

  6. Oxia Ddos Service

  7. Wotter Ddos Service

  8. Ice Ddos

Заключение

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

Убедительная просьба, перед тем как планировать или организовывать Ddos-атаку, подумайте , нужно ли вам это? Хотим еще раз напомнить, что Ddos-атаки уголовно наказуемы!

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

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

Начнем мы с атак на отказ в обслуживании (DoS) :

Суть атаки заключается в том, что адрес отправителя пакета изменён на адрес получателя (это возможно сделать, так как в заголовке IP пакета нет ни одного
идентифицирующего поля , кроме Source Address, так вот в этом поле и пишем АйПи жертвы). Source Address = Destination Address, номера портов также идентичны. Source port Number = Destination Port
Number. Получается IP пакетик направленный сам на себя. Итак, в заголовке указываем АйПи жертвы, а порт . любой открытый порт на машине. Результат, как правило, у ВИН95 - синий экран, ВиН НТ замирал и не подавал признаков жизни в течении минуты . от ОДНОГО Ленд пакета, но кто запрещает послать тысячу ленд запросов . Пример такой атаки: land.c под *nix .

Эта капуста основана на глюке некоторых ОС (Линукс 2.0.0, Вин Нт) при сборе фрагментов в пакете. Ну, а почему? Да потому! После
сборки фрагментов в нашем пакетике остаются пустые места, то есть нет данных, и операционная система, ни черта не понимая, зависает.

Если ты отправишь запрос Echo Request/Replay адресу 215.255.255.255, то тебе придут ответы от всех компов, начиная с 215.0.0.1 до 215.254.254.254, таких компов может быть много :)) Это
называется широковещательный запрос. Вспоминай ленд атаку. дошло? Нет? Мда, тяжёлый случай 🙂 Ты уж и забыл, что можно в заголовке пакета поменять АйПи отправителя на АйПи жертвы, теперь все эти ответы пойдут не тебе, а тому чей адрес ты подставил.

Конечно все эти атаки хороши , но что, если у твоего друга фаерволл . Все порты закрыты.
Все? Не все! Ведь твой друг наверняка забирает почту, ходит по порносайтам и т.д., бери и отправляй дохрена запросов на 80 порт врага (при условии что коннект у него диал-ап) . . Вот и друг больше не может посмотреть на бритую с пирса 🙂

Теперь про шары 🙂

На этом позволь откланяться, с вами был Дон Хуан, да прибудет с
тобой сила и знание 🙂

image

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

А как этот сервис отреагирует, если против него будет организована распределенная DoS-атака? Защищен ли ресурс от потенциальных действий злоумышленников?

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

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

Сравнив политику различных облачных сервисов (кто-то безжалостно банит учетную запись, с которой, предположительно, были выполнены действия, приводящие к отказу ресурса) в отношении проведения нагрузочного тестирования с использованием их функционала, мы решили остановиться на Amazon Web Services (AWS). В их документах указано, что AWS допускает проведение нагрузочного тестирования, но просит согласовать его, отправив письмо на определенный адрес.

Есть несколько нюансов:

У нас спрашивают, кого будем «дубасить». Имеем ли мы на это право? Говорим, что это наш ресурс (по всей видимости, никто не проверяет, так ли это) и что тестирование полностью согласовано.

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

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

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

Скорее всего, в ответ на заполненную форму попросят какие-то разъяснения, поэтому переписываемся и отвечаем на вопросы до тех пор, пока не получим разрешение на тестирование.

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

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

• запускать тестовую атаку;

• собирать статистику о ходе проведения;

• останавливать тестовую атаку;

Создание образа инстанса

Выбор типа инстанса

Сначала соберем AWS-образ, который будет содержать необходимые инструменты и скрипты для управления. Первым делом надо выбрать, какой инстанс арендовать. Изучаем характеристики разных типов инстансов: смотрим на цену, объем максимального трафика, мощность CPU (последнее важно, потому что трафик создается мощностями процессора как-никак), затем тестируем реальную производительность и максимальное число запросов. По нашим оценкам, наиболее удобными для тестирования являются инстансы t3.small , но тут каждый выбирает на свой вкус.

Характеристики инстансов можно посмотреть вот тут. Также выбирать и сравнивать инстансы можно здесь.

Запрос на увеличение лимита

Нужно заранее подумать о том, сколько инстансов будет участвовать в тестировании. Дело в том, что Amazon предоставляет для каждого региона свои ограничения на число инстансов. Если у вас есть ощущение, что понадобится больше инстансов, чем доступно по умолчанию, то стоит как можно раньше запросить увеличение лимита. Для этого переходим в раздел Support, создаем обращение типа Service limit increase. Время обработки обращения может быть разным: кто-то отвечает уже на следующий день, предоставляя столько сущностей, сколько было запрошено, кто-то говорит, что не даст запустить больше, чем N инстансов. Были и такие регионы, которые отвечали на запрос около месяца.

Тюнинг производительности

Далее нужно создать образ инстанса, который будет запускаться во время тестирования. Для этого включаем инстанс выбранного типа, производим на нем все настройки, затем сохраняем то, что получилось, в качестве образа (в том же меню Actions, где есть возможность включения инстанса, а также функциональность по созданию образа Image Create Image).

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

Для этого внесем настройки в файл /etc/sysctl.conf :

• Повысим диапазон локальных портов и уменьшим время нахождения сокетов в состоянии FIN_WAIT:

Диапазон локальных портов определяет максимальное количество исходящих сокетов, которое хост может создать из определенного IP.

С настройкой по умолчанию (61 000–32 768) получается 28 233 сокета. С новыми настройками – 64 500.

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

Если указаны значения по умолчанию, система может обеспечить не более (61 000–32 768) / 60 = 470 сокетов в секунду.

Увеличивая port_range и уменьшая fin_timeout, мы можем повлиять на способность системы генерировать большее число исходящих соединений.

• Разрешим повторно использовать сокеты в состоянии TIME_WAIT, когда заканчиваются свободные:

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

Очень подробно о TIME_WAIT рассказано в этой статье.

• Включим опцию tcp_timestamps для работы вышеуказанной опции tcp_tw_reuse :

Сценарии тестовых атак

1. Атака на DNS

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

Для генерации подобного трафика подходит утилита DNSPerf.

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

Для DNSPerf предварительно подготовим файл с запросами dns_queries.txt (преимущественно ANY для увеличения времени и размера ответа от DNS-сервера):

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

2. Атака на ICMP

Следующим этапом тестирования является оценка устойчивости к большому количеству ICMP-трафика. Так как по техническим причинам у серверов часто должна оставаться возможность отвечать на ping-request, существует вероятность DDoS-атаки с использованием ping-запросов. Помимо указания настроек, исключающих возможность ping-to-death , нужно убедиться в устойчивости серверов к пиковым нагрузкам на ICMP. Для создания таких нагрузок лучше использовать известную утилиту hping3, которая позволяет регулировать количество запросов, интервал между отправками, а также размер пакетов.

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

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

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

Формат содержимого test_urls.txt :

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

Ни в одном из вариантов не используется подмена IP, так как Amazon не позволяет это реализовать. Какой бы src_IP ни был указан в пакете, на выходе с инстанса он будет изменен на правильный.

Все создаваемые запросы должны быть легитимными – никакой волны исходящего трафика без ответа, – так как политика Amazon в отношении DDoS довольно строгая. Даже согласованный стресс-тест отнимает минимум несколько дней на общение с техподдержкой, а при первых «вредоносных» действиях получаем бан порта, с которого выходил трафик, и требование немедленно объясниться.

Скрипты для запуска атак

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

Пример скрипта dns.sh :

Как видно из кода, скрипт можно будет запускать и останавливать, а также проверять статус (запущен/не запущен).

Скрипты мониторинга

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

Скрипт создает новую цепочку TRAFFIC_OUT и добавляет в нее фильтры для нужных протоколов: tcp, udp, icmp.

В цепочку OUTPUT добавляется перенаправление пакетов в TRAFFIC_OUT.

Количество переданных данных можно узнать командой:

Установим скрипт в качестве сервиса. Для этого создадим файл monitoring.service и переместим его в директорию /etc/systemd/system нашего образа:

Теперь можно добавить сервис в автозагрузку:

Управление инстансами

Теперь разберемся с удаленным (максимально автоматизированным) управлением инстансами.

Для этих целей можно использовать механизм AWS CLI – управление с помощью консоли.

Создаем Secret Key (Access keys (access key ID and secret access key)) и настраиваем консоль.

Теперь у нас есть доступ ко всем возможностям учетной записи.

Особенность работы с AWS состоит в том, что все действия выполняются для конкретного региона и их приходится повторять, если привлечено несколько регионов.

Для создания нового инстанса из образа, который мы выше смастерили (подразумеваем, что есть публичный ami-ID, который используем в скрипте), выполним следующие действия:

  • создаем security-group, который разрешает доступ к машине по SSH. В противном случае входящие SSH-соединения будут запрещаться:
  • создаем инстанс с созданными ранее ключом и security-group и указываем ID образа. Число инстансов, создаваемых единовременно, может быть произвольным:
  • ждем, пока машина проинициализируется. Это занимает какое-то время: сначала мы получаем ответ об успехе (instances.json), но в это время машина только создана, но еще не запущена (например, ей еще не присвоен IP-адрес). Необходимо дождаться завершения запуска (обычно для этого достаточно минуты).

Затем можно подключиться по SSH, если нам известен IP-адрес. Просто запрашиваем список машин, которые сейчас запущены. Среди их параметров находим PublicDnsName или PublicIpAddress.

Далее выполняем SSH-команды, указав SSH-ключ, созданный выше:

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

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

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

Разница между выключением и удалением заключается в том, что мы посылаем разные сигналы. Stop – чтобы выключить, terminate – чтобы выключить и сразу же удалить.

В целях мониторинга входящего трафика инстанса используем следующую команду с указанием ID инстанса: когда начинается замер трафика, когда заканчивается, за какой период значения суммируются:

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

Создаем и запускаем простейший «пинг»-скрипт, который отслеживает доступность целевых портов (53 и 80 в нашем случае).

Пример кода на Python, который позволяет автоматизировать проверку доступности:

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

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

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

Стоит обсудить еще один вопрос, связанный с организацией тестирования, — стоимость всего этого мероприятия.

Amazon предоставляет подробную информацию о тарифах, но нужно понимать, что приходится платить практически за все. Тем не менее многими расчетами можно пренебречь. В первую очередь стоит посчитать стоимость трафика (зависит от региона и от того, какой итоговый объем информации будет передан) и стоимость аренды инстансов (оплата поминутная). Эти пункты образуют примерно 99 % от стоимости всей атаки.

Поэтому стоимость атаки рассчитывается в каждом случае отдельно в зависимости от [масштаба боевых действий] максимальной мощности атаки и числа планируемых запусков.

Для того чтобы проиллюстрировать подсчет стоимости проведения нагрузочного тестирования, допустим, что хотим проверить устойчивость DNS-сервера к нагрузке в 10 Гб/c.

Нам известно, что используемые инструменты и возможности инстанса t3.small, запущенного в Мумбаи, позволяют выдать 500 Мб/c с одного запущенного инстанса. Цена за аренду сущности – 0,0224 $ в час, за трафик – 0,01093 $ за 1 Гб. То есть пик атаки означает одновременную работу 20 сущностей.

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

Формула расчета стоимости принимает вид:

Получается, что стоимость одной атаки мощностью в 10 Гб/c на DNS-сервер – примерно 70 $. Отметим, что это приблизительная оценка, так как объем трафика нельзя абсолютно точно спрогнозировать. Подробнее про цены можно почитать здесь. Более того, правильный подход – выполнить проверку несколько раз, чтобы откалибровать настройки тестируемого сервера.

На этом все про организацию нагрузочного тестирования. Желаем не убить ваши серверы в процессе проб и ошибок.

Читайте также: