Один сервер, черга M/M/1
Веб-сервер, що обробляє запити, поводиться приблизно як типова черга M/M/1: запити надходять з середнім рівнем інтенсивності λ (за розподілом Пуассона), обслуговуються з середнім рівнем інтенсивності μ, та чекають у черзі за принципом FIFO, якщо сервер зайнятий. Уся поведінка черги стиснута в одну безрозмірну величину – коефіцієнт використання ρ = λ / μ:
ρ = λ / μ // коефіцієнт використання, повинен бути рівний 1, і L та W відхиляються експоненціально, а не лінійно демонстрація в реальному часі · запити ботнету, що перевантажують чергу до ρ = 1● LIVE Це відхилення є ключем до розуміння DDoS-атаки: час відповіді не знижується плавно при наближенні навантаження до межі здатності, він різко зростає. Сервер, що комфортно працює на 70% використання, з швидким середнім часом очікування, може бути перевантажений збільшенням трафіку на 99%, і в результаті черга стає фактично нескінченною – кожен легітимний запит чекає за списком за великою кількістю трафіку атаки.
rho = lambda / mu // utilisation, must stay < 1 L = rho / (1 - rho) // average number of requests in the system W = L / lambda // average time a request waits (Little's law) // as rho -> 1, both L and W diverge -- not linearly, but explosively
Чому 'розподілений' має значення
Один атакувальний комп’ютер легко блокується за IP-адресою, а його власні обмеження пропускної здатності каналу також обмежують кількість лямбда (lambda), яку він може генерувати. Бонет з тисяч скомпрометованих або орендованих машин множить лямбда на кількість джерел і усуває блокування на основі IP-адрес, оскільки немає єдисної адреси для блокування. Атакувальники також використовують метод посилення: надсилають невелике запит з підробленою адресою джерела до відкритого DNS або NTP сервера, а сервер відповідає на нього значно більшим відповіддю безпосередньо жертві, перетворюючи скромний вихідний потік на потоп, вдесятикрат більший за його розмір, безкоштовно.
Карта пом’якшення безпосередньо відповідає черговому моделі
обмеження швидкості – обмежте лямбда від кожного джерела до того, як воно досягне сервера – це запобігає монопольній поведінці будь-якого одного джерела щодо мю, фільтрація трафіку – направляйте підозрілий трафік через шар фільтрації, який відкидає невідповідні або підроблені запити до того, як вони досягнуть реального сервісу – це зменшує ефективну лямбду, розподіл навантаження / розподіліть лямбда між багатьма серверами (багато мю), щоб anycast одна черга не відчувала повного обсягу атаки; anycast також дозволяє сусіднім маршрутизаторам поглинати навантаження локально. Усі ці методи математично є спробою або зменшити ефективну лямбду, яка впливає на будь-яку чергу, або збільшити ефективний мю, який її обслуговує – оскільки ρ = λ/μ є єдиним регулюючим елементом, а підтримка його нижче 1 є єдиним способом обмежити час відповіді.
rate limiting cap lambda per source before it reaches the server
-- keeps any single source from monopolising mu
traffic scrubbing route suspicious traffic through a filtering layer
that drops malformed/spoofed requests before they
reach the real service -- reduces effective lambda
load balancing / spread lambda across many servers (many mu's) so
anycast no single queue sees the full attack volume; anycast
additionally lets nearby routers absorb load locally
Економіка атаки
Проблема вартості захисника є дзеркалом чергового завдання: підтримка rho комфортно нижче 1 проти пікової атаки означає забезпечення потужностей, які майже весь час простаюють, що дорого, тоді як оренда обсягу ботнету для здійснення атак порівняно дешева. Ця асиметрія є точно тому, чому існують сервіси очищення на рівні хмар та мережі Anycast – вони дозволяють багатьом захисникам ділитися великим пулом mu в Інтернеті замість того, щоб кожен перевантажував власне сервер для гіпотетичного найгіршого сценарію, який може ніколи не настати.
Часті запитання
Що таке черга M/M/1 і чому вона пояснює DDoS?
Це стандартна модель одного сервера, який обробляє прибуття по одному запиту: запити надходять з частотою лямбда, обслуговуються зі швидкістю мю, а використання ро = лямбда/мю визначає все. Коли ро наближається до 1, середній час очікування розбігається замість того, щоб поступово зменшуватися — що є механізмом, який лежить в основі атаки типу «злив», коли черга сервера наближається до нескінченності.
Чому DDoS-атаки розподілені, а не походять з одного джерела?
Трафік з одного джерела легко блокується за IP-адресою та обмежений його власною пропускною здатністю. Розповсюдження атаки на ботнет багатьох скомпрометованих машин множить досяжну частоту запитів, перемагає простий блокування за IP-адресою та, в поєднанні з віддзеркаленням/ампліфікацією через відкриті DNS або NTP-сервери, може генерувати набагато більше трафіку, ніж могли б відправити власні машини нападника.
Як обмеження швидкості насправді зупиняє атаку?
Воно обмежує лямбда з будь-якого одного джерела до того, як воно досягне захищеного сервера, що є тією ж змінною, яка визначає довжину черги в моделі M/M/1. Підтримуючи ефективну сукупну частоту прибуття нижче швидкості обслуговування мю, обмеження швидкості підтримує ро нижче 1 і обмежує час очікування для легітимних запитів.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте DDoS Attack Visualizer і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію DDoS Attack Visualizer