Донецкий техникум промышленной автоматики

Веб під тиском

  1. Навантажувальний і стресове тестування
  2. розвідка боєм
  3. Стрес-тест
  4. Тестування або DDoS?
  5. потенційна загроза
  6. Що робити?

Будь-який веб-проект, будь то втрачений десь в Мережі блог або веб-додаток нового стартапу, має таку важливу характеристику своєї працездатності як «граничне навантаження»

Будь-який веб-проект, будь то втрачений десь в Мережі блог або веб-додаток нового стартапу, має таку важливу характеристику своєї працездатності як «граничне навантаження». Цей показник дає про себе знати, коли веб-додаток частково або повністю відмовляється виконувати покладені на нього функції з обробки запитів від користувачів. Для кого-то з власників це може означати втрату аудиторії, яка регулярно читає його блог, а для кого-то - втрату клієнтів, які через непрацюючий інтернет-магазину купили товар у конкурента.

У кожного веб-ресурсу є граничне значення кількості одночасно оброблюваних запитів користувачів. Тому розробники і власники веб-додатків приділяють особливу увагу процедурам навантажувального і стресового тестувань.

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

Навантажувальний і стресове тестування

Тестування навантаження інформаційної системи - процедура оцінки характеристик працездатності тестованої системи в рамках значень навантаження, що не перевищує граничний. Стресове тестування являє собою аналогічну процедуру, але проведену поза межами граничного значення навантаження. Стрес-тести в більшості випадків ведуть до аномальної поведінки тестованої системи або її відмови в обслуговуванні - аналогічно атакам distributed denial of service, DDoS.

Розподіл множин тестових сценаріїв по потужності навантаження на інформаційну систему
Розподіл множин тестових сценаріїв по потужності навантаження на інформаційну систему

Як видно на малюнку вище, навантажувальні тести виконуються в рамках граничного значення навантаження, а стрес-тести, як і сценарії DDoS-атак, реалізуються за межами даного значення. Однак цілі у стресового тестування і DDoS-атаки абсолютно різні. Завдання стресового тестування - отримати показники граничного навантаження тестованої системи, в той час як DDoS-атака має на меті «покласти» об'єкт, що атакується будь-якими ефективними методами і тим самим порушити працездатність цільової інфраструктури.

Стресове тестування виявляється необхідною процедурою, коли власнику інформаційної системи потрібно дізнатися, як вона буде вести себе при аномальних навантаженнях. Іноді є необхідність з'ясувати, як будуть справлятися з навантаженням наявні засоби захисту від DDoS-атак - для цього також використовуються процедури стресового тестування.

розвідка боєм

Стресовий-тестування є частиною процесу підвищення рівня захищеності зовнішніх ІТ-ресурсів цільової інфраструктури і дозволяє отримати наступні результати:

  • Визначити поточні граничні значення навантаження на зовнішні сервіси. Якщо ми знаємо точку відмови нашої інформаційної системи, то для підвищення відмовостійкості ми можемо оптимізувати наявні процеси або впровадити нові. Іншими словами, хто попереджений, той озброєний.
  • Перевірити стійкість зовнішніх сервісів до деяких сценаріях розподілених атак, спрямованих на відмову в обслуговуванні. Поглянувши на свій проект очима зловмисника, ми можемо зробити якісь висновки, наприклад, про необхідність встановлення засобів захисту від DDoS-атак або ефективності вже існуючих рішень.

На відміну від інших етапів розробки веб-проекту, будь то налагодження додатків або їхніх функціональне тестування (перевірка працездатності його функціоналу), навантажувальні тести маю важливу особливість, яка робить нетривіальним завданням процедуру їх реалізації: тестування проводиться на реальній інформаційній системі, яка може перебувати в процесі функціонування. Погодьтеся, тестувати макет нікому не цікаво (якщо тільки процедура тестування не є частиною процесу розробки високонавантаженого проекту), куди краще отримати картину продуктивності живого «зразка». Однак тестування чинного проекту може стати причиною тимчасового припинення будь-якого бізнес-процесу, а це значить, що ми можемо отримати справжнісінький відмову в обслуговуванні з усім, що випливають.

Саме для вирішення завдання тестування працюючого веб-додатки або зовнішніх інформаційних ресурсів, доступних з Інтернету (поштовий сервер, FTP-сервер і т.п.), створені спеціальні онлайн-сервіси навантажувального тестування, які цілком справляються зі своїми завданнями.

Стрес-тест

Концепція «All as a Service» дозволяє власникам веб-додатків не морочитися над налаштуванням складних систем навантажувального тестування, підготовкою хмарної інфраструктури і тому подібними діями. Все це вже зроблено в фоновому режимі і надається як онлайн-сервіс: ввів пару «логін: пароль», поставив параметри навантаження, оплатив обчислювальні потужності і знай собі, фіксуй поведінку свого веб-проекту.

Конфігурація навантажувального тестування в одному з розглянутих проектів: задаємо сценарій навантаження, вибираємо потужність навантаження, оплачуємо використовувані обчислювальні ресурси і отримуємо звіт
Конфігурація навантажувального тестування в одному з розглянутих проектів: задаємо сценарій навантаження, вибираємо потужність навантаження, оплачуємо використовувані обчислювальні ресурси і отримуємо звіт

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

У звіті про тестуванні багато статистичних даних
У звіті про тестуванні багато статистичних даних. Наприклад, розподіл часу завантаження контенту в ході тестування навантаження

Результат навантажувального тестування веб-додатки за допомогою веб-сервісу
Результат навантажувального тестування веб-додатки за допомогою веб-сервісу

Тестування навантаження як веб-сервіс - безсумнівно, дуже корисна і зручна процедура. Однак дана реалізація процедури тестування не так нешкідлива, як може здатися на перший погляд.

Тестування або DDoS?

Спробуємо поглянути на онлайн-сервіси навантажувального тестування з позиції зловмисника. Уявімо, що нас не хвилює етична сторона розподілених атак, спрямованих на відмову в обслуговуванні, у нас є тільки бажання зробити недоступним веб-ресурс конкурента. Чи можна для цього використовувати сервіси навантажувального тестування?

Для експерименту я вибрав кілька популярних сервісів тестування і як об'єкт для тестів використовував свій блог, який «дрейфує» по не самим слабким інстанси амазоновского хмари (Amazon EC2). Результат: навіть в безкоштовному тестовому режимі, коли користувачеві надається дуже невелика кількість обчислювальних ресурсів сервісів, навантаження виявилося досить, щоб помітно збільшити час відгуку мого блогу.

Тестовий режим онлайн-систем навантажувального тестування дозволяє імітувати відвідуваність в 10000 користувачів / місяць, що може виявитися фатальним для багатьох невеликих веб-проектів. Навіть навантаження в 50 користувачів за трихвилинний інтервал часу може внести аномалії в поведінку якогось нескладного веб-проекту.

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

Так, з з 6 розглянутих нами сервісів тестування тільки на одному просять розмістити на тестованому ресурсі спеціальний файл, отримавши доступ до якого сервіс переконається, що адміністратор тестованого ресурсу сповіщений про процедуру. Більш того, два з розглянутих веб-сервісів дозволяють здійснити тестування навантаження взагалі без реєстрації, користувачеві досить ввести URL тестованого ресурсу.

Простота використання даних інструментів дає можливість анонімно «протестувати» чужий веб-проект без будь-яких проблем з реєстрацією та згоди на тест з боку власника тестованого ресурсу. Той факт, що тестування без реєстрації є ще й безкоштовним, може зробити ці сервіси дуже привабливим інструментом для DDoS-атак.

Тестування навантаження веб-ресурсу за допомогою сервісу, який не вимагає реєстрації
Тестування навантаження веб-ресурсу за допомогою сервісу, який не вимагає реєстрації. Заходимо на сайт, вводимо URL тестованого ресурсу і дивимося звіт про результати процедури

потенційна загроза

На наш погляд, онлайн-сервіси навантажувального тестування можуть бути інструментом для анонімного здійснення деяких сценаріїв DDoS-атак. Швидке створення сценаріїв навантаження, простота і зрозумілість у поєднанні з пулом обчислювальних ресурсів - ось особливості такої «бот-мережі». Зловмисник легко може підняти кілька незалежних акаунтів і призначити їм одне і те ж час навантаження на атакується сайт.

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

Деякі сервіси надають демонстраційну навантаження взагалі без реєстрації, а це може означати, що власник якого-небудь «збиткового» ботнету з 50-100 зомбі за допомогою таких сервісів може в сотні разів збільшити ефективність DDoS-атаки. Один бот генерує 10 незалежних запитів на тестування навантаження в різні веб-сервіси. Ті, в свою чергу, незалежно один від одного ініціюють сотні запитів. Результат: цільової ресурс задихається від обсягів цілком «легітимного» трафіку.

Що робити?

Як же можна уникнути нелегітимного використання ресурсів сервісу навантажувального тестування? Для початку зазначимо, що власники подібних сервісів «умивають руки», знімаючи з себе всю відповідальність в призначеному для користувача угоді:

«The Use of the Service and the ability to produce accurate and effective results from it highly depends on the User's expertise in operating the Service . Therefore, You shall be responsible for ensuring that you are competent to write the scripts required to receive optimal results from the Service ... »

Іншими словами: ви несете відповідальність за все, що ви робите.

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

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

Хакер # 175

Тестування або DDoS?
Чи можна для цього використовувати сервіси навантажувального тестування?
Як тут непідготовленому власнику ресурсу зрозуміти, хто свій, а хто чужий?
Що робити?
Як же можна уникнути нелегітимного використання ресурсів сервісу навантажувального тестування?