Стратегії захисту від DDoS, ефективне тестування для запобігання атакам

13 листопада 2023 1 хвилина Автор: Cyber Witcher

Захистіть свій цифровий світ: Ефективні стратегії протидії DDoS-атакам

Щодня ми стикаємося з новими викликами в області кібербезпеки, а атаки типу DDoS (Distributed Denial of Service) стають все більш складними та руйнівними. В цій статті ми розглянемо ефективні стратегії захисту від таких атак та важливість тестування систем для їх попередження. У цій статті ви знайдете важливу інформацію про стратегії захисту від DDoS-атак та значення ефективного тестування для попередження таких атак. Ми розглядаємо різні підходи та технології, які можна використовувати для захисту ваших цифрових ресурсів, а також акцентуємо увагу на важливості постійного вдосконалення систем безпеки. Ця стаття надасть вам знання про ключові стратегії та рішення, які допоможуть вам забезпечити надійний захист вашого онлайн-присутності від високотехнологічних кіберзагроз. Перш за все, важливо розуміти, що DDoS-атака – це спроба зробити онлайн-сервіс недоступним, перевантажуючи його трафіком з різних джерел.

Такі атаки можуть призводити до серйозних збоїв у роботі веб-сайтів, серверів та інших онлайн-ресурсів. Однією з найефективніших стратегій захисту є використання спеціалізованих систем захисту від DDoS, які можуть виявляти та блокувати підозрілий трафік. Також важливо мати розподілену мережу доставки контенту (CDN), яка може розподіляти навантаження та знижувати ризик впливу атаки на одну точку. Крім апаратних рішень, належить увагу приділити та інформаційній безпеці. Регулярне оновлення програмного забезпечення, використання надійних паролів та двофакторна аутентифікація – це основні кроки, які допоможуть захистити ваші системи. Велике значення має регулярне тестування ваших захисних систем. Проведення тестів на проникнення допомагає виявити потенційні слабкі місця в захисті та вчасно їх усунути. Спеціалізовані фірми можуть проводити таке тестування, імітуючи різні типи атак, щоб перевірити готовність системи до відсічі реальним загрозам.

Тестуємо інфраструктуру та додаток на стійкість до DDoS-атак

Сьогодні розповім, як можна протестувати свою ІТ-інфраструктуру або додаток на предмет стійкості до DDoS-атак на рівнях L4 та L7. Відразу скажу, що це не можна назвати серйозним тестом навантаження, це простий і безкоштовний метод тесту.

У нього два завдання:

  1. Дізнатися, якої мінімальної потужності достатньо, щоб інфраструктура почала відчувати проблеми чи лягла зовсім. Це те, що ми тестували.

  2. Цю методику можна використовувати, щоб оцінити швидкість реакції використовуваного сервісу захисту від DDoS-атак. Це не про те, щоб спробувати задовольнити з однієї віртуальної машини потужні вузли фільтрації anti-ddos-сервісів. Швидше такий тест покаже, як швидко спрацьовує захист і починає блокувати шкідливий трафік, чи для всіх типів атак це відбувається однаково швидко і чи взагалі відбувається?

Про інструмент

Для тестування будемо використовувати MHDDoS . Цей інструмент став відомим під час численних DDoS-атак у 2022 році. Початкова версія програми модифікувалася. Її доробили під велику розподілену інфраструктуру і уможливили додаватися в якості учасника DDoS-атак user-friendly способом. Зробили свого роду DDoS як сервіс.

Вибір припав на MHDDoS ще й тому, що він легко розгортається на будь-якій інфраструктурі (написаний на Python) і має непогану для open-source проекту документацію.

MHDDoS вміє атакувати на різних рівнях – L4, L7. Є стандартні (syn-flood, tcp-flood), атаки рівня додатків (post-, get-запити, s low Ddos ), ампліфікаційні та заточені під конкретні сервіси (Apache, наприклад). Усього 56 типів атак на будь-який смак.

Також заявлено можливість організувати атаку через проксі та використовувати різні IP-адреси: автори використовують 96 джерел з відкритими проксі, списки яких постійно оновлюються. Використання проксі дозволяє збільшити її потужність та ускладнити її блокування. Але ми цього не робили.

Крім того, за допомогою MHDDoS можна запускати атаки, спрямовані на обхід сервісів DDoS.

Консоль MHDDoS з усім багатим меню атак.

Як це працює

Програма є скриптом на Python. Для любителів контейнерів є Docker-образ. Завантажуємо скрипт із Github, встановлюємо оточення – і софт готовий до використання.

Після запуску вибираєте потрібний тип атаки, наприклад L7 get-запити. Вказуєте, яку адресу атакуємо. У випадку з атакою L7 можна вибрати конкретну URL-адресу, куди підуть запити. Вибираєте потужність, кількість потоків: скільки генеруватиметься запитів за секунду.
Встановлюєте тривалість атаки.

Також для L7 програма вимагає вибрати тип проксі та файл зі списком. Якщо вкажемо порожній файл, атака піде без проксі. Якщо проксі немає, програма запропонує завантажити проксі з відкритих джерел.

Конструкція команд у MHDDoS.

Тестовий стенд

Як стенд ми візьмемо дві віртуальні машини (4 ядра і 8 Гб RAM) з Rocky Linux, між якими розтягнута 10G мережа. На машині, яка потрапить під атаку, розгорнуть OWASP Juice shop . Зазвичай він використовується для вивчення веб-уразливостей, але сьогодні потрапить під DDoS-атаку :).

Фаєрвольних правил, правил блокування за кількістю звернень та інших механізмів захисту на машині, що атакується, не налаштовано. У нашому випадку сервіс працюватиме по HTTP, і нашій машині не доведеться витрачати додаткові ресурси на обробку TLS-з’єднання.

Під капотом OWASP Juice Shop – легковажний веб-сервіс із бекендом на Node JS.

На машині, що атакує, відповідно, запускатиметься MHDDoS.

Власне перевірна DDoS-атака

L4. Почнемо тестування зі спроби забити смугу згенерованими пакетами. Вибираємо атаку по UDP. Почнемо зі 100 потоків:

sudo python3 start.py UDP owasp.nubes.ru:80 100 60 yes

На піку отримуємо до 80 Мбіт/сек, небагато для UDP-трафіку. На цьому етапі я спробував запустити програму в однопотоковому режимі:

sudo python3 start.py UDP owasp.nubes.ru:80 1 60 yes

З одного ядра, утилізованого в 100%, вдалося отримати близько 200 Mbit/c в UDP-режимі, що вже набагато серйозніше. 100-мегабітний канал можна забити. Навантаження на RAM і CPU машини, що атакується, практично не зросла.

Запуск атаки.
Трафік, отриманий у мультипотоковому режимі.
Трафік, отриманий однопоточному режимі.

Як другий сценарій проведемо L4 TCP-атаку. Атакуватимемо відкритий сервіс SSH:

sudo python3 start.py TCP owasp.nubes.ru:22 100 60 yes

У ході атаки вдалося утилізувати під 100% RAM і CPU машини, що атакується. Процесори атакуючої машини утилізували приблизно наполовину. При DDoS-атаці з однієї IP-адреси кількість TCP-коннектів зросла незначно, при повноцінній DDoS це значення може кратно збільшитися.

Утилізація CPU атакуючої машини L4 TCP.
Утилізація CPU машини L4 TCP, що атакується.

Вийшло, що співвідношення ресурсів, витрачених на атаку та утилізованих на сервері, що атакується, приблизно 1:2.

Які висновки можна зробити:

  1. Мінімальна необхідна потужність для виведення з ладу сервера. Якщо сервіс ніяк не захищений, може вистачити навіть такої «шкільної» атаки для завантаження його інфраструктури.

  2. Мінімально необхідна потужність, щоб забити канал. У моєму випадку я з однієї машини забив 100Mbit смугу.

L7. Для L7-атаки я вирішив спробувати пропоновані авторами проксі. При першому запуску скрипта з порожнім проксі-сервером вона опитує списки безкоштовних проксі, закладених розробниками. Хоч скрипт і попереджає, що перевірка проксі може тривати багато часу, але в моєму випадку за 4 години процес так і не зрушив з місця, а терпіння закінчилося. Тому атакувати із дефолтним списком проксі у мене так і не вийшло.

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

Пізніше я склав собі список безкоштовних проксі з 200 хостів із ними і продовжив атаку. Запускаємо GET-запити на OWASP Juice Shop. Тут нам обов’язково треба вибрати тип проксі, файл зі списком проксі-серверів та кількість підключень до серверів.

sudo python3 start.py get http://owasp.nubes.ru/:80 0 100 proxy.txt 50 600 yes

Що маємо: CPU на машині, що атакується повністю утилізовано, 8 GB RAM пам’яті теж.

Утилізація CPU машини, що атакується при GET-атаці.

Навантаження на CPU атакуючої машини майже не зросло.

Утилізація CPU атакуючої машини при GET-атаці.

А що ж із додатком?

На етапі планування лабораторного стенду я думав, як замірятиму вплив DDoS-атаки на сервіс і як виміряти уповільнення в роботі.

Але це не стало в нагоді: в будь-якому режимі, незалежно від кількості потоків, OWASP Juice Shop падав через пару секунд після запуску атаки, видаючи ERR_CONNECTION_TIMED_OUT у вкладці браузера. Сервіси, розгорнутий у контейнері та класичним методом, видавали однакові результати.

Які висновки можна зробити:

  1. При інших рівних ресурси, витрачені на DDoS-атаку, набагато менше тих, які будуть утилізовані на сервері, що атакується.

  2. MHDDoS можна використовувати для імітації DDoS-атак. Реалізувати DDoS можливо, але доведеться роздобути проксі-сервери (у спільнотах по DDoS приватні проксі для атак продають за ціною від 20 $).

  3. Невеликий віртуальної машини або домашнього ПК в руках скрипт-кіддиз достатньо, щоб покласти невеликий веб-сервіс або забити 100 Мбіт-ну інтернет-смугу.

  4. Не варто нехтувати захистом від DDoS, якщо навіть такі безкоштовні скрипти можуть вплинути на вашу інфраструктуру.Як самий базовий захід увімкніть хоча б модулі захисту від DDoS на мережному обладнанні. Якщо їх немає, зробіть правила блокування кількості підключень з одного IP. Це допоможе у разі атаки з малої кількості адрес. А якщо DDoS-атаки вам не рідкість, то краще підключити спеціалізований anti-DDoS-сервіс .

Інші статті по темі
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.