<
  • Главная
Статьи

Все що потрібно знати про тестування навантаження сайтів.

  1. Стрес як сервіс
  2. розвідка боєм
  3. Перфоманс на сцені Web
  4. Load Impact
  5. BlazeMeter
  6. І їм подібні
  7. Зворотній бік медалі

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

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

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

Стрес як сервіс

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

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

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

Наприклад, ми знаємо, що наш блог може одночасно витримати 1000 користувачів. Ми починаємо перевірку і імітуємо активність 50 користувачів, потім 100 і, нарешті, 900. Ми займаємося навантажувальним тестуванням. Потім ми вирішили перевірити, як поведе себе блог, якщо його будуть читати відразу 1050 користувачів, а це значить, що ми приступили до процедури стресового тестування.

  1. Стресове тестування допомагає підвищити рівень захищеності зовнішніх ІТ-ресурсів цільової інфраструктури і дозволяє отримати наступні результати:
  2. Визначити поточні граничні значення навантаження на зовнішні сервіси. Якщо ми знаємо точку відмови нашої інформаційної системи, то ми можемо спробувати підвищити відмовостійкість: оптимізувати наявні процеси або впровадити нові. Іншими словами - хто попереджений, той озброєний.
  3. Перевірити стійкість зовнішніх сервісів до деяких сценаріях розподілених атак, спрямованих на відмову в обслуговуванні. Поглянувши на свій проект очима зловмисника, ми можемо робити прогнози «чорних днів» для свого бізнесу або розгорнути превентивний захист під наші потреби.
  4. Оцінити ефективність засобів захисту від DDoS-атак при реалізації відповідних сценаріїв розподілених атак. Наприклад, життя змусило нас встати під захист якого-небудь сервіс-провайдера Anti-DDoS, але ми хочемо перевірити, чи дійсно це ефективний захід або ж марна трата бюджету. DDoS - відповідь на наше питання.
  5. Зробити протидію даного типу загроз ефективніше і підготувати себе і своїх колег до взаємодії в ході DDoS-атаки. В даному випадку навантажувальний і стрес-тестування дають відповіді на питання «Здається, наш сервіс загинається ... Що робити?» Або «Нас атакують! Що робити?".
  6. Розробити рекомендації щодо підвищення захищеності від DDoS-атак.

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

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

Перфоманс на сцені Web

Завдання: створити контрольовану навантаження на сервіс, яка також повинна перевищити поточне значення граничної (якщо тільки ми не хочемо займатися прогнозуванням точки відмови нашого сервісу). Рішення: нетривіальне.

Можна попросити власника відвідуваного веб-проекту зробити редирект його користувачів на наш ресурс. У такому випадку потрібно знайти доброго власника, у якого відвідуваність проекту значно перевищує наші показники.

Можна налаштувати standalone-додаток на зразок Apache JMeter, написати для нього сценарій поведінки користувача і відправити бродити по нашому веб-додатком. Однак імітація сотні користувачів з локалхоста навряд чи створить відчутну навантаження для більш-менш серйозного додатки (якщо тільки ми вантажимо не свій блог на майданчику Google). В такому випадку краще розкидати цей скрипт з кількох машин або скористатися принадами хмарних IaaS-майданчиків на кшталт Amazon EC2. До речі, в нашому журналі був цікавий матеріал на тему використання додатків для навантажувального тестування (www.xakep.ru/post/43327).

Інтерфейс системи навантажувального тестування JMeter

Інтерфейс системи навантажувального тестування JMeter

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

Load Impact

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

Конфігурація навантажувального тестування в проекті Load Impact

Конфігурація навантажувального тестування в проекті Load Impact

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

Розподіл часу завантаження контенту в ході тестування навантаження Load Impact

Особливо радує гнучка система виведення результатів тестування. Графічне представлення величезного числа метрик дозволяє отримати детальну і наочну звітність про процес.

Звіт про нагрузочном тестуванні веб-додатки за допомогою сервісу Load Impact

Звіт про нагрузочном тестуванні веб-додатки за допомогою сервісу Load Impact

Прайс-лист для навантажувального тестування в рамках сервісу Load Impact дозволяє за 225 доларів генерувати навантаження, еквівалентну показнику відвідуваності нашого проекту в 100 тисяч відвідувачів на місяць. Дорого, але оцінити можливості сервісу можна в тестовому режимі, який дозволяє імітувати відвідуваність в 10 тисяч користувачів в місяць. Варто відзначити, що навіть безкоштовна навантаження в 50 користувачів дозволила за трихвилинний інтервал помітити аномалії в поведінці системи дистанційного банківського обслуговування невеликого банку. Зафіксуємо факт генерації навантаження за допомогою Load Impact в рамках демонстраційних можливостей і перейдемо до наступного сервісу.

BlazeMeter

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

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

Ініціалізацію навантаження можна проводити за розкладом, що наштовхує на думку про можливість активації даного сервісу в годину пік додатки-жертви.

Звіт про процедуру тестування навантаження, що надається сервісом BlazeMeter

Звіт про процедуру тестування навантаження, що надається сервісом BlazeMeter

Тут ми також бачимо гнучку тарифікацію в залежності від потреби клієнта. За 40 тисяч користувачів (при максимальній кількості IP-адрес 40 штук) доведеться віддати близько 299 доларів. В рамках безкоштовної демонстрації можливостей сервісу надається базова навантаження з 1000 одночасно підключених користувачів. «Маленький ботнет» - знову промайнула думка, яку ми зафіксуємо.

І їм подібні

Пробіжить по функціоналу ще кількох сервісів навантажувального тестування.

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

Що примітно, так це процедура верифікації усіх перевірених сервісом проектів. Раптом користувач Load Storm хоче вивести з ладу сайт конкурента. Для того щоб пройти процедуру верифікації, користувачеві потрібно розмістити на цільовому веб-ресурсі спеціальний файл з кодом, прочитавши який проект Load Storm повірить, що його користувач дійсно власник перевіряється системи.

Loaddy. Ще один представник онлайн-проектів, які дозволяють в експрес-режимі здійснити тестування навантаження без реєстрації. Крім цього, сервіс пропонує зареєстрованим користувачам безкоштовні перевірки, в яких обіцяється до 100 активних відвідувачів.

Тестування навантаження веб-ресурсу «без реєстрації і SMS» за допомогою сервісу Loaddy

Зворотній бік медалі

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

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

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

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

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

Проектів, подібних Load Impact, сила-силенна, і більшість з них надають свої ресурси нехай в дуже обмеженому, але дієздатному і безкоштовному варіанті. Чого вартий, наприклад, на тому ж Load Impact підняти кілька незалежних акаунтів (прив'язка до телефонним номером або кредитну картку не розпізнається ні на одному з описаних сервісів) і призначити їм одне і те ж час навантаження на ворожий сайт? BlazeMeter офіційно підтримує систему мультіаккаунтов. Деякі проекти надають демонстраційну навантаження взагалі без реєстрації, а це може означати, що власник якого-небудь «збиткового» ботнету з 50-100 зомбі за допомогою таких сервісів може в сотні разів збільшити ефективність DDoS-атаки. Як? Все просто - на одного бота доводиться десять незалежних запитів на тестування навантаження в різні сервіси типу Load Impact і Loaddy. Ті, в свою чергу, незалежно один від одного ініціюють сотні запитів. Результат: цільової ресурс задихається від обсягів цілком «легітимного» трафіку. І все це «без реєстрації і SMS».

Рейтинг матеріалу

[Голосів: 0 Рейтинг: 0]

Довіряємо ми йому?
Раптом він підглядає наші фотографії або вихідний код наших додатків, який ми у нього зберігаємо?
Що робити?
Що робити?
Як тут непідготовленому до такого повороту подій власнику ресурсу зрозуміти, хто свій, а хто чужий?
Як?


Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью