Налаштування AWS WAF для захисту веб-додатків

Нефільтрований трафік на периметрі — це сплески навантаження та ризики, які зазвичай помічають уже постфактум. Ми налаштовуємо AWS WAF під ключ: вивчаємо профіль запитів, збираємо правила фільтрації та передаємо команді регламенти реагування. Ваші інженери отримують керований периметр замість ручного редагування списків.
Часті запитання

Чим небезпечний невідфільтрований трафік: налаштування AWS WAF

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

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

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

Штатні засоби захисту такого перевантаження веб-застосунку не бачать: підозрілі запити синтаксично коректні, звертаються до наявних адрес і відрізняються лише щільністю та розкидом джерел.

Налаштування AWS WAF переносить фільтрацію на периметр — до того, як запит займе обробник.

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

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

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

Що дає керована фільтрація запитів на периметрі

Фільтрація запитів на периметрі вирішує одне завдання: сміттєвий трафік не повинен доходити до застосунку та бази. Без неї потік сканерів, ботів і переборів облікових даних займає з'єднання, гріє шаблони й навантажує базу запитами, які ніколи не стануть замовленням.

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

AWS WAF ставиться перед застосунком і працює на рівні окремого запиту, а не з'єднання. Правила описують, що вважати нормою: частота звернень з однієї адреси, характерні сигнатури типових атак, неприпустимі методи й розміри тіла.

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

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

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

Результат вимірюється трьома числами: частка запитів, відсічених до застосунку, час відповіді під піковим навантаженням і кількість звернень до бази. На типовому вебі частка відсіченого сміття — десятки відсотків, і саме вона виходить з черги до застосунку.

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

Варіанти захисту периметра: що обирають і чому

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

Тому старт — режим спостереження: правила рахують збіги й не блокують, а логи показують, які шляхи та параметри потрапляють під підозру.

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

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

Варіант Коли підходить Обмеження
Готові набори правил Стандартний вебпроєкт, потрібен базовий бар'єр швидко Усереднені пороги, хибні спрацювання на нестандартних сценаріях
Власні правила фільтрації Нестандартні форми, публічний API, багато автоматизованих звернень Потрібні тестовий контур і регулярний перегляд умов
Режим спостереження Перший етап впровадження або зміна схеми трафіку Не захищає: запити доходять до застосунку
Захист лише на боці застосунку Внутрішні сервіси, трафік яких не йде через периметр Навантаження на застосунок, ресурси витрачаються до перевірки

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

Етапи впровадження: від аудиту трафіку до передачі регламентів

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

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

  1. Аудит трафіку та точок входу. Збираємо статистику за адресами, методами, заголовками й часткою автоматизованих клієнтів — отримуємо базову лінію, з якою звіряємо все подальше.
  2. Схема правил. Розкладаємо загрози за пріоритетами: що блокуємо жорстко, що обмежуємо за частотою запитів, що поки лише пишемо в журнал.
  3. Увімкнення в режимі спостереження. Правила рахують збіги, але не заважають відвідувачам: видно, кого зачепило б блокування, без впливу на конверсію та доступність.
  4. Розбір хибних спрацювань. За журналами виводимо з-під фільтра службові адреси, обмін із зовнішніми системами та повернення від платіжних провайдерів.
  5. Перехід у блокування. Правила вмикаємо по одному, з планом відкату й порогом, після якого автоматично повертаємося в спостереження.
  6. Перевірка на бойовому трафіку. Стежимо за часткою відмов, часом відповіді та проходженням ключових сценаріїв під навантаженням і в години пік.
  7. Передача регламентів. Віддаємо карту правил, порядок додавання винятків, чергові сценарії та точки ескалації.

Конфігурації правил, схема трафіку та регламенти реагування

Налаштування AWS WAF не закінчується вмиканням фільтра — воно закінчується комплектом артефактів, який ваша команда може відкрити, прочитати й застосувати без нас.

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

  • Конфігурація правил — опис кожного набору: що блокує, що лише рахує, у якому порядку спрацьовує. Зберігається декларативно, щоб правило відкочувалося однією зміною.
  • Схема проходження трафіку — шлях запиту від вхідної точки до застосунку з позначеними місцями перевірки та поведінкою при спрацюванні: блокування, перевірка або пропуск із записом.
  • Політики доступу — дозволені джерела, службові діапазони адрес, порядок винятків для внутрішніх перевірок і партнерських інтеграцій.
  • Регламент реагування — хто отримує повідомлення про сплеск блокувань, як відрізнити атаку від помилки в самому правилі й коли правило переводиться в режим спостереження.
  • Інструкція з аварійного режиму — покрокове зняття обмежень, якщо захист почав відсікати живих користувачів, із зазначенням відповідального.
  • Документація із захисту — паспорт конфігурації: дата останньої зміни, хто вніс і навіщо, які маршрути це зачіпає.
  • Чек-ліст після релізу застосунку — умови, за якими нова версія вважається коректно захищеною, і порядок перевірки на копії середовища.

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

Впровадження на бойовому проєкті: метрики до та після

Сервіс із високою часткою зовнішнього трафіку — каталог з особистими кабінетами та формами — тримав усю фільтрацію всередині застосунку.

При сплеску автоматичних запитів (парсери, перебір форм, часті звернення до пошуку) пул застосунків ішов у перевантаження: черга зростала, частина живих користувачів бачила помилки, а черговий інженер до пів години шукав джерело й перезапускав вузли.

Що змінили і що вийшло

Фільтрацію підняли на периметр — на AWS WAF. Спершу правила працювали в режимі спостереження: рахували, яку частку трафіку відсікли б, і звіряли з логами, щоб не зачепити легітимних роботів.

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

Частка запитів, відсічених на периметрі, у години сплесків сягала третини вхідного потоку — застосунки перестали бачити цей трафік узагалі. Час реакції на інцидент скоротився з годин до хвилин: нове правило вводиться правкою конфігурації, а не релізом коду. Окремо налаштували оповіщення щодо зростання блокувань, щоб зміна шаблону атаки була видна одразу.

Усунений клас відмов — переповнення пулу застосунків під автоматичним сплеском і помилки в живих користувачів слідом. Відкат — переведення правила в режим підрахунку або його вимкнення, без збірки й викочування: неправильне налаштування не валить сервіс.

Чим WAF відрізняється від захисту від масових атак і мережевого екрана?

Це три різні шари, які дивляться на трафік із різною глибиною. Мережевий екран і правила груп безпеки працюють із пакетами: адреса джерела, порт, протокол. Для них спроба ін'єкції в параметрі форми або підробка cookie — звичайний дозволений запит до вебсервера.

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

AWS WAF розбирає вміст запиту прикладного рівня: метод, шлях, заголовки, параметри рядка запиту, тіло та cookie.

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

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

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

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

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

Якщо шар прибрати, навантаження перерозподіляється на наступний — і відмова проявляється там, де її складніше помітити.

Часті технічні заперечення перед стартом робіт

Заперечення перед стартом майже завжди одні й ті самі, і стосуються вони не вибору правил, а ризику вронити живий трафік. Фільтр стоїть між користувачем і застосунком, тому помилка в налаштуванні видна одразу — на відміну від завдань, які можна викотити й полагодити по ходу. Нижче зібрали сумніви, які інженерні команди піднімають на першій же зустрічі.

Увімкнення фільтра зупинить сервіс на час налаштування?

Ні. Перший етап розгортаємо в режимі спостереження: правила рахують збіги й пишуть їх у журнал, але не блокують запити. Трафік іде як звичайно, а ми отримуємо реальну картину — які запити застосунок приймає і хто з легітимних клієнтів потрапляє під підозру. Переведення в блокувальний режим — окремий крок, уже після розбору журналу.

Хибні блокування відріжуть живих клієнтів?

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

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

Чи потрібен доступ до коду й репозиторію?

Ні. Працюємо з конфігурацією фільтра та точками входу: достатньо знати домени, маршрути й заголовки, які очікує застосунок. Доступ до вихідних кодів і баз даних не потрібен — правки в коді до завдання не входять.

Хто розбирає спрацювання після запуску?

Розбір ведемо за журналом: дивимося, що саме спрацювало, відокремлюємо автоматичні сканери від живих сесій і вирішуємо — залишити правило, звузити його чи внести адресу у винятки.

Після запуску віддаємо регламент: які звіти дивитися, з якою періодичністю і за якими ознаками розуміти, що правило час правити.

Обговоримо задачу і повернемося з планом впровадження

Щоб повернутися з оцінкою робіт, а не із загальними словами, нам потрібні вихідні дані щодо трафіку та точки входу застосунку. Опишіть задачу у вільній формі — що захищаєте, з якими інцидентами вже стикалися і який результат вважаєте успішним; решту зберемо самі під час розмови.

На дзвінку уточнимо й попросимо надіслати:

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

За цими даними ми розуміємо обсяг робіт і порядок етапів.

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

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

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139