WAF на ModSecurity для корпоративного сайта: как мы спасли интернет-магазин от утечки 14 000 email клиентов
Меня зовут Семёнов Евгений Сергеевич, я директор компании АйТи Фреш. За пятнадцать лет в отрасли я видел десятки утечек клиентских баз — почти все происходили через одну и ту же дыру: незащищённую веб-форму на корпоративном сайте. В этой статье я хочу на конкретном кейсе показать, что такое WAF (Web Application Firewall), почему открытое решение ModSecurity подходит подавляющему большинству российских компаний и как мы внедряли его для одного из наших клиентов из e-commerce.
Почему обычный сайт оказывается беззащитным
Когда руководитель компании говорит «у нас же стоит SSL-сертификат, мы защищены», я обычно молча открываю логи Nginx и показываю, сколько запросов вида ?id=1 UNION SELECT приходит на их сайт каждый день. У среднего корпоративного сайта это от тысячи до десятка тысяч подозрительных обращений ежесуточно. SSL шифрует канал, но не фильтрует, что именно по нему передаётся.
Большая часть атак на сайты российских компаний — автоматические. Боты сканируют интернет в поисках типовых уязвимостей: формы обратной связи без защиты от инъекций, файлы .env в корне сайта, забытые админки phpMyAdmin, устаревшие плагины WordPress. Ручные атаки бывают, но против известного бренда с понятной клиентской базой. Именно поэтому WAF — не каприз для гигантов, а базовая гигиена для любой компании, у которой на сайте есть динамика.
WAF, или Web Application Firewall — это «умный» фильтр, который стоит между интернетом и вашим веб-сервером. Он анализирует каждый HTTP-запрос: куда он идёт, что в нём, похож ли он на легитимный трафик пользователей или на попытку сломать сайт. Если запрос подозрительный — блокирует его, не пропуская к приложению.
Кейс: интернет-магазин, который подвергся утечке клиентской базы
В феврале 2026 года к нам пришёл руководитель интернет-магазина — назову компанию условно «МагазинОнлайн». Бизнес средний: 15 000 уникальных посетителей в день, ассортимент около 2 миллионов SKU, 28 сотрудников в штате. За месяц до обращения произошёл инцидент: злоумышленник через SQL-инъекцию в форме поиска товаров получил дамп таблицы с email-адресами 14 000 клиентов. Контактные базы потом всплывали в спам-рассылках, клиенты звонили и жаловались, репутация просела.
Что мы увидели на аудите:
- Сайт работал на PHP 8.2 + Laravel, фронт через Nginx 1.24, база MySQL 8.0.
- Никакой защиты не было: ни WAF, ни ограничения на количество запросов с одного IP, ни блокировки сканеров.
- Логи за последнюю неделю показали 47 832 подозрительных обращения — это в среднем 4–6 атак в минуту.
- Топ-3 атакующих IP-адреса сделали по 6–13 тысяч запросов каждый и не были забанены.
Задача звучала просто: поставить защиту, которая блокирует атаки, но не мешает реальным покупателям. Бюджет — минимальный. Срок — две недели до старта весенней распродажи. Решение очевидное: ModSecurity с набором правил OWASP Core Rule Set.
Почему именно ModSecurity, а не Cloudflare или AWS WAF
Когда речь заходит о WAF, у бизнеса есть три класса решений: облачные (Cloudflare, AWS WAF, Imperva), коммерческие on-premise (FortiWeb, F5, ПТ AF от Positive Technologies) и open-source (ModSecurity, NAXSI). У каждого варианта свои сильные стороны:
| Решение | Стоимость в год | Кому подходит |
|---|---|---|
| Cloudflare WAF | от 240 000 ₽ (Pro+) | Сайты без чувствительных данных, готовые пускать трафик через зарубежный CDN |
| Positive Technologies AF | от 850 000 ₽ | Госкомпании и крупный бизнес с требованиями ФСТЭК |
| ModSecurity + OWASP CRS | 0 ₽ (плюс работа инженера) | Корпоративные сайты, интернет-магазины, личные кабинеты — почти всё |
| NAXSI | 0 ₽ | Высоконагруженные проекты с простыми API |
«МагазинОнлайн» хранил данные банковских карт через интеграцию с эквайрингом и не был готов пускать трафик через зарубежные CDN. Бюджета на ПТ AF не было. Поэтому ModSecurity подошёл идеально: бесплатное ПО, ставится прямо на тот же сервер, что и Nginx, не требует менять архитектуру.
Как мы разворачивали защиту: семь шагов вместо длинной портянки команд
Не буду перегружать статью кодом — вместо этого опишу логику работы. Если вам нужны технические детали, мои инженеры с радостью покажут на демо-стенде.
- Поставили модуль ModSecurity на тот же сервер, где работал Nginx. Это безопаснее, чем выносить WAF на отдельный сервер: меньше точек отказа.
- Подключили набор правил OWASP CRS. Это коллекция из примерно 200 правил против самых частых атак: SQL-инъекции, XSS, попытки прочитать
/etc/passwd, обращения к админкам. - Включили режим наблюдения, а не блокировки. Первые семь дней WAF только записывал в лог подозрительные запросы, но ничего не блокировал. Мы посмотрели, какие правила срабатывают на легитимный трафик магазина.
- Нашли и отключили ложные срабатывания. Например, в каталоге товаров была категория «etcetera» — правило WAF принимало это за попытку прочитать системные файлы. Создали исключение под URL каталога.
- Включили блокировку. После того, как ложных срабатываний не осталось, перевели WAF из режима наблюдения в режим активной защиты.
- Подружили с fail2ban. Если один IP-адрес делает больше десяти заблокированных запросов за пять минут — бан на час через iptables. Это разгружает WAF: повторные запросы атакующего не доходят даже до анализа.
- Настроили уведомления в Telegram. Каждый бан и каждое срабатывание критичного правила приходит в чат службы безопасности.
На всё ушло двенадцать рабочих дней. Старший инженер занимался установкой, средний — тюнингом правил под специфику магазина, я провёл финальный аудит и подписал акт.
Что получилось через месяц после запуска
Самая показательная статистика — сравнение «было/стало» за тридцать дней работы:
| Показатель | До WAF | После WAF |
|---|---|---|
| Заблокировано атак в сутки | 0 (защиты не было) | ≈ 2 800 |
| Успешных SQL-инъекций | 1 (та самая утечка) | 0 |
| Уникальных IP в бане за неделю | 0 | ≈ 850 |
| Прирост задержки страниц | — | + 8 мс (95-й перцентиль) |
| Жалоб клиентов на «не работает» | — | 3 за месяц (все ложные блокировки, исправлены) |
За тридцать дней WAF заблокировал около 84 000 атак и забанил больше трёх тысяч уникальных IP. Скорость загрузки сайта осталась прежней — пользователи ничего не заметили. Самое главное: за прошедшие два месяца ни одной успешной утечки данных, ни одного компрометирующего инцидента.
Подводные камни, о которых редко пишут
WAF — не «поставил и забыл». За пятнадцать лет я видел десятки случаев, когда инженер настраивал систему, отчитывался, уходил, и через полгода защита превращалась в декорацию. Вот основные грабли:
- Правила OWASP CRS нужно обновлять. Новые атаки появляются ежемесячно, и старые правила перестают работать. Минимум — раз в месяц
git pullи проверка changelog. Критические обновления (свежие CVE) выходят чаще. - Тюнинг — не разовая работа. Сайт меняется: появляются новые формы, разделы, интеграции. Каждое такое изменение может породить ложные срабатывания. Если их не лечить, маркетинг придёт с криком: «У нас не оформляются заказы!»
- WAF не заменяет правильно написанный код. Это слой защиты, а не индульгенция от безалаберности. Подготовленные SQL-запросы, экранирование вывода, валидация ввода — всё это по-прежнему обязанность разработчиков.
- Платёжные системы — отдельная история. Тинькофф, ЮКасса, СберPay шлют webhooks с большими JSON-пакетами, которые WAF может посчитать атакой. Их IP-диапазоны нужно добавить в исключения.
- Логи WAF растут быстро. При 30 000 атак в сутки лог-файл за неделю распухает до 2–3 ГБ. Нужна ротация и архивирование, иначе диск кончится в самый неподходящий момент.
Все эти моменты учтены в нашей подписке на абонентское обслуживание. Если коротко: один наш инженер раз в неделю просматривает дашборд WAF, обновляет правила, разбирает странные срабатывания и пишет короткий отчёт клиенту.
Сколько стоит WAF под ключ для среднего бизнеса
Я уже устал от вопросов «сколько» в общем виде, поэтому отвечу на конкретном кейсе «МагазинОнлайн». Все суммы за апрель 2026 года, с НДС:
| Этап | Стоимость | Срок |
|---|---|---|
| Базовый аудит сайта и инфраструктуры | 15 000 ₽ | 1–2 рабочих дня |
| Установка ModSecurity + OWASP CRS, базовая настройка | 23 000 ₽ | 2 рабочих дня |
| Тюнинг правил, исключения, интеграция с fail2ban | 18 000 ₽ | 5–7 рабочих дней (включая мониторинг) |
| Документация и передача клиенту | 5 000 ₽ | 1 рабочий день |
| Поддержка и обновления (в составе абонентки) | от 4 500 ₽/мес | постоянно |
Итого первичные работы — около 61 000 руб. за полное развёртывание. Это разовые затраты. Дальше — небольшая абонентка за поддержание правил в актуальном состоянии. Для сравнения, лицензия Cloudflare Pro на сайт со средним трафиком обойдётся в 240–360 тыс. руб. в год, а ПТ AF — в 850 тыс. и выше.
Когда ModSecurity не подходит
Из честности скажу: бывают сценарии, когда ModSecurity — не лучший выбор.
- Сайты с экстремальным трафиком. Если у вас 50 000+ запросов в секунду, ModSecurity начинает съедать заметную часть CPU. Тут уже стоит думать о NAXSI или о выносе WAF на CDN-уровень.
- Простой сайт-визитка без форм. Если на сайте только статичные страницы и одна форма обратной связи, достаточно правильной настройки Nginx, fail2ban и капчи. Тяжёлая артиллерия не нужна.
- Госкомпании с требованиями ФСТЭК. ModSecurity не сертифицирован, поэтому при формальных требованиях нужен ПТ AF или аналог.
- Команда без квалификации. WAF без специалиста, который умеет читать логи и править правила, через полгода превращается в пыль. Если внутри компании нет таких людей и нет договора на абонентку — ставить нельзя.
Что делать прямо сейчас, если у вас на сайте есть формы
Дам короткий чек-лист — пять шагов, которые любой руководитель может пройти за вечер, чтобы понять, насколько защищён его сайт.
- Откройте Google Search Console или Яндекс.Вебмастер. Если там есть предупреждения о вредоносном коде или взломе — у вас уже проблема.
- Попросите сисадмина или подрядчика показать логи веб-сервера за последние сутки. Если они не могут или говорят «у нас логи не хранятся» — это сигнал бедствия.
- Уточните, стоит ли fail2ban или аналог. Если нет — ставьте немедленно, это бесплатная защита от перебора паролей.
- Спросите, когда последний раз обновлялись CMS и плагины (WordPress, Bitrix, Tilda). Если ответ «не помню» — высокий риск.
- Закажите внешний аудит. У нас в АйТи Фреш он бесплатный для новых клиентов в Москве и в радиусе 50 км от МКАД.
Получите бесплатный аудит безопасности сайта
Я лично разбираю каждый запрос на аудит и приезжаю к новым клиентам. За 2–3 рабочих дня вы получите письменный отчёт со списком уязвимостей вашего сайта, рекомендациями и честным расчётом стоимости защиты. Без обязательств заключать договор.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы перед заказом
- Стоит ли ставить ModSecurity, если у меня небольшой корпоративный сайт-визитка?
- Если на сайте только статика и контактная форма — нет, достаточно правильной настройки сервера и fail2ban. WAF нужен там, где есть динамика: личный кабинет, оформление заказа, форма поиска по базе, админка. Тогда ModSecurity действительно спасает.
- Сколько стоит развернуть WAF под ключ?
- В АйТи Фреш базовый аудит и развёртывание ModSecurity с OWASP CRS стоит от 38 000 руб. за один сайт, плюс две недели тюнинга против ложных срабатываний — 12 000 руб. сверху. Дальше — поддержка в рамках обычной абонентки.
- WAF сильно тормозит сайт?
- При уровне Paranoia 2 средний прирост задержки — 5–10 мс на запрос. Пользователи этого не замечают. Главный ресурс — CPU: при 1000 запросов в секунду уходит примерно 15 % одного ядра.
- Зачем ModSecurity, если есть Cloudflare?
- Cloudflare — отличное облачное решение, но он терминирует TLS у себя и видит весь ваш трафик. Для интернет-магазинов с платёжными данными или для компаний, которые не готовы пускать персональные данные через зарубежные CDN, ModSecurity на собственном сервере — единственный вариант.
- Кто будет следить за WAF после установки?
- Это самый важный вопрос. WAF без сопровождения через 3 месяца становится бесполезным: правила устаревают, появляются ложные срабатывания. У нас в АйТи Фреш WAF — часть подписки на абонентское обслуживание, инженер раз в неделю проверяет логи и обновляет CRS.