Защита веб-приложений: WAF, DDoS-mitigation, bot protection и OWASP-практики
Веб-приложение публичной коммерческой компании одновременно решает две задачи: открыто принимает трафик реальных клиентов и блокирует автоматизированные атаки. От грубых SQL-инъекций и XSS до многоступенчатых DDoS L7, скрейпинга и фрода. Этот материал — подробное руководство по построению защиты веб-приложения для CISO среднего бизнеса в 2026 году: что такое WAF и как его выбрать, чем отличается DDoS-mitigation L3/L4 от L7, какие security headers обязательны, как защититься от ботов и сколько это стоит.
Карта угроз веб-приложению
Прежде чем строить защиту, важно описать модель угроз. Основные классы атак на коммерческое веб-приложение:
- Прикладные атаки (OWASP Top 10). SQL-инъекции, XSS, SSRF, IDOR, путь-обход, RCE. Цель — компрометация данных или захват инфраструктуры.
- DDoS L3/L4. Объёмные сетевые атаки на исчерпание полосы или таблицы соединений. Источник — ботнеты, отражённые атаки через DNS/NTP-амплификацию.
- DDoS L7. Прикладные атаки, имитирующие реальный пользовательский трафик. Сложнее фильтровать, особенно если злоумышленник использует резидентные прокси.
- Скрейпинг. Массовый автоматизированный сбор каталога, цен, отзывов конкурентами или агрегаторами. Не приводит к утечке, но искажает аналитику и нагружает инфраструктуру.
- Account takeover (ATO). Credential stuffing — массовый перебор украденных учёток из утечек других сервисов. Phishing с последующим использованием ваших cookies. Brute force паролей.
- Карточный фрод. Тестирование украденных банковских карт через ваш чекаут (карта проверяется мелкими покупками, потом сбывается дороже на другом сайте).
- Бизнес-логические атаки. Эксплуатация особенностей промокодов, накопительных скидок, реферальных программ. Чаще всего — ручные.
- Supply chain. Атака через CDN, npm-пакеты, сторонние SDK, JS-теги аналитики. Magecart-стиль — внедрение кода кражи карт через скомпрометированную аналитику.
WAF: что это и какие выбрать
Web Application Firewall — межсетевой экран уровня приложения, который анализирует HTTP-запросы и решает, пропустить ли их к серверу или заблокировать. Современный WAF работает в двух режимах: сигнатурный анализ (известные паттерны атак — например, всё, что напоминает SQLi-payload) и поведенческий анализ (отклонения от нормального профиля трафика).
Архитектурные варианты WAF
- Облачный WAF (proxy-mode). Весь трафик идёт через сервис провайдера, который фильтрует и пересылает на ваш origin. Подключение — изменение DNS A-записи. Преимущества: минимум администрирования, автообновление правил, защита от DDoS, скорость подключения (часы). Российские: Wallarm, BI.ZONE WAF, Servicepipe WAF.
- Reverse proxy WAF на собственном edge. Nginx + ModSecurity, либо HAProxy с lua-скриптами. Контроль полный, но управление правилами — на вас.
- Сертифицированные российские on-premise WAF. Positive Technologies Application Firewall (PT AF), ICL-Solar webProxy, InfoWatch ARMA. Обычно нужны при требованиях аттестации, в финансовом и государственном секторах. Для коммерческого бизнеса без КИИ — избыточны.
- WAF в составе CDN. Cloudflare WAF, AWS WAF. Удобны для глобальных проектов, но локализация для российских клиентов хуже, чем у локальных провайдеров, и есть санкционные риски.
Какой WAF выбрать коммерческому бизнесу
Для среднего бизнеса с трафиком от 1 до 50 ТБ в месяц мы рекомендуем облачный российский WAF, объединённый с DDoS-mitigation и bot protection. Это закрывает 80% задач за разумный бюджет:
- Wallarm (wallarm.com) — современная аналитика, защита API, обнаружение уязвимостей, активное русскоязычное сообщество, есть гибридная схема on-premise+cloud.
- Servicepipe (servicepipe.ru) — пакет «защита периметра», который объединяет WAF + DDoS + DNS, входит в реестр российского ПО.
- BI.ZONE (bi.zone) — экосистема от Сбера, удобен, если уже используется их Threat Intelligence.
- Qrator + Wallarm — связка DDoS-провайдера с WAF, исторически популярна в e-commerce.
DDoS-mitigation: L3/L4 vs L7
DDoS-атаки различают по уровням модели OSI. От уровня зависит, кто и как защищает.
L3/L4 — сетевой уровень
UDP/SYN-флуд, амплификация через DNS, NTP, memcached. Цель — забить канал к вашему дата-центру или таблицу состояний firewall-а. Размеры атак — до сотен Гбит/с и сотен миллионов пакетов в секунду. Защита возможна только на уровне магистрального провайдера или специализированного DDoS-сервиса с большими каналами. В России: Qrator, StormWall, Servicepipe, DDoS-Guard.
Подключается обычно через BGP-анонсирование вашей сети у провайдера-фильтра. Полностью прозрачно для приложения, требует одноразовой настройки сетевиков.
L7 — прикладной уровень
HTTP-флуд: миллионы запросов на ресурсоёмкие эндпоинты (поиск, login, чекаут). Запросы выглядят как легитимный пользовательский трафик. Часто идёт с резидентных прокси (взломанные домашние роутеры, IoT-устройства), что усложняет блокировку по IP. Защита — поведенческий анализ, CAPTCHA-челленджи, fingerprinting, rate-limiting.
Стратегия подключения
Минимум для коммерческой компании, доступной через интернет: облачный WAF + DDoS L7 в одном пакете + договор с магистральным DDoS-провайдером на случай L3/L4 (часто включён как «under attack» режим у того же сервиса). Опционально — собственный nginx+rate-limit как первая линия для рутинных атак.
OWASP Top 10 как чек-лист защиты
OWASP Top 10:2021 — основной публичный документ, который описывает 10 классов уязвимостей веб-приложений. Каждый класс — отдельная проверка как при разработке, так и при настройке защитных средств.
- A01 Broken Access Control. Решение — серверная авторизация на каждом запросе, тесты IDOR, ролевая модель.
- A02 Cryptographic Failures. Решение — TLS 1.2+, шифрование чувствительных полей, безопасное хранение паролей (bcrypt/argon2).
- A03 Injection. Решение — параметризованные запросы, ORM, валидация входа, WAF как страховка.
- A04 Insecure Design. Решение — threat modeling на этапе дизайна, security review архитектуры.
- A05 Security Misconfiguration. Решение — hardening базовых образов, отключение DEBUG в production, security headers.
- A06 Vulnerable Components. Решение — SCA в CI/CD, регулярные обновления, dependency scanning.
- A07 Authentication Failures. Решение — rate-limiting login, 2FA, отказ от слабых паролей, защита от credential stuffing.
- A08 Data Integrity Failures. Решение — подписи артефактов, валидация сериализованных объектов, SRI для JS из CDN.
- A09 Logging Failures. Решение — централизованный сбор логов (SIEM), мониторинг аномалий, ротация и защита логов от модификации.
- A10 SSRF. Решение — белый список разрешённых URL для исходящих запросов, валидация по DNS, метаданные IMDS v2 в AWS.
Полный текст с разбором каждой категории — на owasp.org/Top10.
Security headers: что и зачем
HTTP security headers — это «дешёвая» защита, которая внедряется правкой конфигурации веб-сервера за несколько часов. При этом она закрывает целый класс атак. Минимальный набор для современного веб-приложения:
| Заголовок | Что делает | Рекомендованное значение |
|---|---|---|
| Strict-Transport-Security | Принудительный HTTPS | max-age=31536000; includeSubDomains; preload |
| Content-Security-Policy | Белый список источников JS/CSS/img/font/connect | default-src 'self'; script-src 'self' 'nonce-XXX'; ... |
| X-Content-Type-Options | Запрет MIME-sniffing | nosniff |
| X-Frame-Options | Защита от clickjacking | SAMEORIGIN или DENY |
| Referrer-Policy | Контроль передачи реферера | strict-origin-when-cross-origin |
| Permissions-Policy | Отключение неиспользуемых API браузера | camera=(), microphone=(), geolocation=() |
Проверить текущую настройку — бесплатный инструмент securityheaders.com. Внедрение CSP — самая трудоёмкая часть: на больших приложениях с inline-скриптами и сторонними тегами обычно делают за 2–4 спринта с отдельным мониторингом нарушений в режиме Report-Only.
Bot protection: защита от автоматизации
Bot protection — отдельный класс защиты, который отличает реальных пользователей от автоматизированных скриптов. Уровни сложности ботов:
- Уровень 1. Скрипты на curl/Python requests, без браузерного окружения. Блокируются простыми правилами (отсутствие JS, ботские User-Agent, отсутствие cookies).
- Уровень 2. Headless Chrome / Playwright. Имитируют браузер, но имеют отличия в JS-окружении (отсутствие плагинов, дефолтные размеры экрана). Ловятся через fingerprinting.
- Уровень 3. Браузерные fingerprint-spoofers, резидентные прокси, ферма реальных устройств. Защита — поведенческий анализ, ML-модели, CAPTCHA только для подозрительного сегмента.
Российские и международные решения: Wallarm, DataDome, PerimeterX (теперь HUMAN), Cloudflare Bot Management. Yandex SmartCaptcha — встраиваемая капча от Яндекса, полезна как fallback. Для большинства e-commerce среднего размера достаточно WAF с включённым bot management в облаке.
Rate-limiting на уровне приложения
Помимо облачной защиты обязательно настройте rate-limiting на уровне приложения. Минимальные правила:
- Login: 5–10 попыток в минуту с одного IP, после превышения — задержка или CAPTCHA.
- Password reset: 3 запроса в час на email.
- Регистрация: 5 в час с IP, с проверкой на временные email и фрод-сигналы.
- Поиск: 60–120 запросов в минуту на пользователя.
- Чекаут / создание заказа: 10–20 в минуту, с дополнительной проверкой подозрительных паттернов.
- API-эндпоинты: отдельные quotas по API-ключу, плюс burst-limit.
В nginx это делается через limit_req_zone, в приложении — через Redis или специализированные библиотеки
(express-rate-limit, slowapi, django-ratelimit).
Логирование и SIEM-интеграция
Защита без видимости — это бессмысленно. Минимальные требования к логированию:
- Логи nginx/CDN с указанием IP, метода, URL, User-Agent, статуса ответа, времени обработки.
- Логи приложения с действиями пользователей: вход, выход, изменение данных, скачивание файлов, экспорт.
- Логи WAF с заблокированными запросами и категорией атаки.
- Логи аутентификации: успешные и неудачные попытки, смена пароля, активация 2FA, использование recovery.
- Логи административных действий: создание учётных записей, изменение прав, изменение конфигурации.
Хранение — централизованно (ELK/OpenSearch, Splunk, Vector + ClickHouse), с защитой от модификации и retention не менее 6 месяцев. Для compliance 152-ФЗ — год и более. Если есть SIEM (KUMA от Касперского, Positive MaxPatrol SIEM, Splunk) — настройте корреляционные правила: «5 неудачных входов + 1 успешный с того же IP» = подозрение на ATO, «массовая выгрузка БД» = алёрт.
Incident response при атаке
План реагирования на инциденты — обязательный документ. Минимальная схема для веб-приложения:
- Обнаружение. Триггер: алёрт SIEM, жалоба клиента, рост ошибок 5xx, упоминание в Telegram-каналах об «утечке».
- Триаж. Дежурный инженер за 15–30 минут оценивает: реальный инцидент или ложное срабатывание, класс (DDoS / ATO / утечка / RCE), масштаб.
- Эскалация. Уведомление CISO и руководства. Активация incident-команды (разработчик, devops, security, юрист).
- Сдерживание. Изоляция скомпрометированных систем, блокировка атакующих IP/учётных записей, переключение в «under attack» режим у CDN.
- Расследование. Сбор логов, восстановление цепочки событий, определение точки входа.
- Устранение. Закрытие уязвимости, ротация скомпрометированных секретов, восстановление целостности.
- Уведомления. При утечке ПДн — РКН в течение 24 часов. Внутренние стейкхолдеры. При необходимости — клиенты.
- Post-mortem. Разбор без поиска виноватых. Что предотвратило бы повторение. План работ.
Бюджет на защиту веб-приложения
Реалистичные ориентиры для коммерческого бизнеса (без КИИ):
| Уровень | Месячные расходы | Что включено |
|---|---|---|
| Стартер (до 1 ТБ трафика) | 50 000 – 100 000 ₽ | Облачный WAF + DDoS L3/L4 + базовый bot management |
| Средний (1–20 ТБ) | 150 000 – 400 000 ₽ | WAF + DDoS L3/L4/L7 + bot protection + кастомные правила |
| Корпоративный (20+ ТБ) | 500 000 ₽ – 1.5 млн ₽ | Многоуровневая защита, выделенный SOC, ML-аналитика, threat intelligence |
Дополнительно — единовременные CAPEX-затраты: pentest (от 500 000 ₽ раз в год), внедрение security headers (20–80 часов разработки), интеграция SIEM (от 1 млн ₽), внедрение secure-SDLC процессов.
Сравнение российских WAF-решений
Для коммерческого среднего бизнеса в 2026 выбор WAF почти всегда — между несколькими российскими вендорами. Зарубежные решения (Cloudflare, Akamai, F5, Imperva) формально работают, но создают риски по 152-ФЗ и санкционные риски по доступности.
| Решение | Тип | Когда выбирать |
|---|---|---|
| Wallarm | Cloud + On-prem | API-heavy SaaS, активные релизы, нужна интеграция с DevOps и SOAR; ML-детект 0-day |
| PT Application Firewall (PT AF) | On-prem, сертификат ФСТЭК | Системы с требованиями ФСТЭК (КИИ, госорганы), классическая корпоративная среда |
| Servicepipe | Cloud | Базовая защита от L7 + WAF, оптимально для среднего e-commerce; хорошее соотношение цены и качества |
| Qrator Labs | Cloud, фокус на DDoS | Когда главная угроза — объёмные DDoS; WAF подключается как опция |
| StormWall | Cloud, DDoS+WAF | Mid-market, хорошее покрытие L7 DDoS, единое окно с WAF |
| BI.ZONE WAF | Cloud | Связка с другими сервисами BI.ZONE (CTI, BUG BOUNTY, pentest) |
| ModSecurity + Coraza | On-prem, open-source | Для команд с in-house DevOps, ограниченным бюджетом и собственным SRE |
| EdgeЦентр Web Protect | Cloud (CDN + WAF) | Когда нужен российский CDN + WAF в одном пакете |
Полная карта решений с актуальными ценами и нюансами интеграции — в pdf-обзоре по запросу.
Расширенный кейс: маркетплейс косметики под комбинированной атакой
Маркетплейс косметики «Заказчик В», ~280 000 активных пользователей. В пятницу вечером после успешной рекламной кампании сайт неожиданно лёг: TTFB вырос до 14 секунд, потом 502. Параллельно поддержка получила 47 жалоб от клиентов «не могу войти в аккаунт».
Анализ показал три параллельные активности:
- DDoS L7 через массовые HTTP-запросы к /search с уникальными query-параметрами (cache-bypass), 240 000 RPS с 14 000 IP-адресов из 32 стран.
- Credential stuffing через эндпоинт /api/auth/login: ~12 000 попыток за 2 часа со словарём 2.1 млн утёкших паролей с других сервисов. ~600 учёток успели взять.
- Scraping каталога от двух Headless Chromium-кластеров через резидентные прокси, ~3 000 RPS с rotation user-agent и cookies.
Что сделали в первые 4 часа:
- Подключили экстренную DDoS-mitigation через Servicepipe (под-ключение за 90 минут через DNS-redirect).
- Активировали «under attack» режим: challenge-страница для всех новых сессий с проверкой JS-fingerprint.
- Запросили у Servicepipe blacklist по AS-номерам известных bullet-proof-хостингов.
- Поставили rate-limit 5 попыток/минуту на /api/auth/login + 2FA по SMS для всех новых сессий.
- Принудительно сбросили сессии всех скомпрометированных учёток + предложили смену пароля.
- Расследовали утечку: 600 учёток подтвердились валидными по данным наших клиентов из чужих утечек (HaveIBeenPwned), это не была компрометация маркетплейса.
Через 14 дней сделали постоянное решение: bot protection (DataDome), HCaptcha на регистрации и логине, rate-limit на критичных эндпоинтах, мониторинг логов через SIEM (Wazuh), правила корреляции для раннего детекта credential stuffing. Расходы: 380 тыс. ₽/мес на bot management + 220 тыс. ₽/мес на расширенный WAF/DDoS-пакет. Эффект: 0 успешных атак за 12 месяцев, drop конверсии scrapers на 94%.
Регуляторы и стандарты
- OWASP Top 10 — топ-10 рисков веб-приложений.
- OWASP ASVS — стандарт верификации безопасности.
- OWASP Secure Headers Project — справочник по security headers.
- fstec.ru — ФСТЭК, реестр сертифицированных WAF, требования для КИИ.
- publication.pravo.gov.ru — 152-ФЗ и связанные акты по требованиям к защите.
- cve.org — реестр известных уязвимостей.
- nvd.nist.gov — NIST NVD с метриками CVSS.
Связанные материалы
- Тестирование на проникновение: регулярная проверка эффективности WAF и кода.
- Безопасность API: отдельные практики для REST/GraphQL-эндпоинтов.
- Secure SDLC: чтобы новые релизы не приносили новые уязвимости быстрее, чем WAF успевает их закрыть.
- Защита персональных данных: правовые требования к защите веб-приложений с ПДн.
FAQ о защите веб-приложений
Что выбрать: облачный WAF (Cloudflare, Wallarm) или on-premise (ModSecurity, PT AF)?
Облачный WAF подключается за часы, не требует своих администраторов, автоматически обновляет правила и масштабируется под DDoS. Минусы — трафик идёт через стороннего провайдера, есть требования к локализации (для 152-ФЗ выбирайте российских вендоров: Wallarm, Servicepipe, StormWall, BI.ZONE). On-premise WAF (ModSecurity на nginx, PT Application Firewall) — больше контроля, нет внешней зависимости, но требует команды и постоянной работы с правилами. Для большинства коммерческих средних компаний оптимален облачный российский WAF.
Поможет ли WAF от DDoS-атаки L7?
Базовый WAF фильтрует прикладные атаки (SQLi, XSS), но против объёмной DDoS L7 (миллионы запросов в секунду) нужен специализированный сервис: Qrator, StormWall, Servicepipe, Cloudflare DDoS Protection. Часто эти услуги объединены с WAF в одном пакете. Если вы крутите свой WAF локально (ModSecurity на nginx) — DDoS-mitigation придётся подключать отдельно, иначе ваши серверы лягут под нагрузкой раньше, чем сработают правила фильтрации.
Какие security headers обязательно настроить?
Минимальный набор для любого веб-приложения: Strict-Transport-Security (HSTS) — принудительный HTTPS на 1 год, X-Content-Type-Options: nosniff — запрет MIME-sniffing, X-Frame-Options: DENY или SAMEORIGIN — защита от clickjacking, Content-Security-Policy — белый список источников JS/CSS/img (главный заголовок против XSS), Referrer-Policy: strict-origin-when-cross-origin, Permissions-Policy для отключения ненужных API браузера. Проверить настройку можно бесплатно на securityheaders.com.
Что такое bot protection и зачем он нужен e-commerce?
Bot protection отличает реальных пользователей от автоматизированных скриптов. Защищает от скрейпинга цен и каталога конкурентами, аккаунт-фрода (credential stuffing — массовый перебор украденных паролей), карточного фрода (тестирование украденных карт через ваш чекаут), искусственного раздувания корзин и резерваций. Решения: DataDome, Cloudflare Bot Management, Wallarm Bot Protection. Особенно важен для маркетплейсов, билетных сервисов, премиум-категорий e-commerce.
Сколько стоит защитить веб-приложение?
Базовый старт-пак (WAF + DDoS L3-L4 от российского провайдера + настройка security headers + bot protection лайт) — от 50 000 ₽/месяц на трафик до 1 ТБ в месяц. Средний бизнес с трафиком 5-20 ТБ/месяц и потребностью в bot management — 150 000-400 000 ₽/месяц. Корпоративный уровень с многоуровневой защитой, выделенным SOC, кастомными правилами — от 500 000 ₽/месяц. Сюда же добавляется CAPEX на pentest (раз в год) и работы по интеграции с SIEM.
Что делать прямо во время DDoS-атаки?
Если у вас уже подключена DDoS-mitigation — связаться с провайдером (Qrator, StormWall, Servicepipe), эскалировать инцидент, передать им информацию о характере трафика (геолокация атакующих, типы запросов). Если защиты не было — экстренное подключение возможно за 1-3 часа, но дороже стандартного тарифа в 5-10 раз. Параллельно: блокировать наиболее заметные источники на уровне nginx/iptables (тушит малую часть, но даёт время), отключить ненужные эндпоинты (поиск, тяжёлые отчёты), активировать under-attack режим у CDN. После атаки — обязательный разбор: какие пути усиливают нагрузку, что закэшировать, что rate-limit.
Можно ли защититься только за счёт WAF без правок кода?
Частично. WAF блокирует известные паттерны атак (SQLi-инъекции, типовые XSS-payload-ы, попытки путь-обхода), но не закроет логические уязвимости (IDOR, race conditions в платежах, ошибки авторизации), не починит небезопасную обработку файлов, не остановит утечку данных через настроенные «как надо» эндпоинты. WAF — это буфер, который даёт время закрыть уязвимости в коде, но не замена безопасной разработке. Зрелая схема: pentest находит уязвимости → разработка чинит → WAF блокирует попытки эксплуатации в окне между деплоем фикса и появлением новой атаки.
Когда WAF, когда RASP, когда CDN с защитой?
WAF — на периметре, фильтрует входящий HTTP по правилам и сигнатурам. RASP (Runtime Application Self-Protection) — встроен в среду исполнения приложения, видит контекст вызова и блокирует эксплуатацию в реальном времени (особенно эффективен против Java/.NET-уязвимостей). CDN с защитой (Cloudflare, Yandex CDN, EdgeЦентр) — для distributed-аудитории и offload статики, имеет встроенные базовые WAF/DDoS. Зрелая схема: CDN (edge-кэш + L3/L4 DDoS) → WAF (фильтрация прикладного трафика) → приложение с RASP (защита от 0-day и логических ошибок). Для среднего бизнеса хватает связки CDN + WAF, RASP — для критичных платёжных систем.
Что делать, если трафик идёт через зарубежный CDN?
Для систем с ПДн граждан РФ есть риск: ст. 18 152-ФЗ требует первичный сбор и хранение на серверах в России. CDN, кэширующий страницы с ПДн на зарубежных серверах, формально нарушает требование. Безопасные варианты: использовать российские CDN/WAF (Yandex CDN, Servicepipe, Qrator, StormWall, BI.ZONE) с серверами в РФ; настроить зарубежный CDN на кэширование только статики (картинки, CSS, JS), а API/ЛК с ПДн пускать минуя CDN; полностью отказаться от глобального CDN, если география пользователей — только РФ.
Как защититься от scraping каталога конкурентами?
Полностью предотвратить scraping невозможно (любой контент в открытом доступе доступен ботам), но можно значительно повысить стоимость операции для атакующего: bot protection с fingerprinting (DataDome, Cloudflare Bot Management, Wallarm Bot Protection), rate-limit на критичных эндпоинтах (поиск, листинг), требование CAPTCHA для подозрительных сессий, динамическая обфускация цены (рендеринг через JS с anti-debug), детект Headless Chromium/Puppeteer/Playwright, watermark в HTML (псевдо-уникальные классы CSS для отслеживания утечки). Реалистичная цель — не остановить, а сделать operacao 10x дороже у атакующего, чем покупка цен у официального API-партнёра.
Обсудить защиту веб-приложения Бесплатная 30-минутная встреча: текущая защита, узкие места, рекомендации по бюджету.