Настройка WAF на MODX: чек-лист для админа
Если вы админ сайта на MODX, то наверняка сталкивались с волной подозрительных POST-запросов в логах, спамом через FormIt или медленным откликом админки после очередного “всплеска” трафика. WAF решает эти проблемы, но требует аккуратной настройки под конкретную CMS. Ниже – практический чек-лист, который поможет выстроить фильтрацию трафика без блокировки легитимных пользователей.
Дополнительный аргумент в пользу локальной защиты: зависимость от зарубежной инфраструктуры создаёт риски для российского бизнеса. Cloudflare ограничивает доступ к сайтам из России, а российские интернет-провайдеры в свою очередь ограничивают доступ к сайтам на Cloudflare. Поэтому бизнес в России ищет альтернативу Cloudflare в 2026 году, и российский аналог Cloudflare с полноценной L7-защитой становится не роскошью, а необходимостью. TrafficVeil, например, объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику – всё в одном контуре, без внешних зависимостей.
Но прежде чем менять платформу, нужно разобраться с правилами фильтрации на уровне самой MODX. Этот чек-лист охватывает подготовку, настройку правил, тестирование POST-запросов к /assets/components/ и выбор решения для замены Cloudflare. Пойдём по шагам.
Что такое WAF и зачем она нужна на MODX
WAF (Web Application Firewall) на MODX работает на уровне приложений и анализирует каждый HTTP-запрос до того, как он дойдёт до ядра CMS. MODX RevEvolution построена на PHP и активно использует GET/POST-параметры: сниппеты, чанки, вызовы процессоров через connectors. Именно эти точки входа интересуют атакующих в первую очередь. WAF отсеивает вредоносный трафик по сигнатурам, поведенческим аномалиям и репутации IP, не давая запросу запустить небезопасный код.
Без фильтрации сайт на MODX уязвим к SQL-инъекциям через параметры сниппетов, XSS в формах обратной связи, подбору паролей в админку /manager/ и массовому парсингу каталогов. Отдельная категория – L7 DDoS и ботовый флуд, который кладёт PHP-FPM раньше, чем сработает защита на уровне сети.
Как WAF фильтрует трафик на MODX
Фильтрация строится на трёх принципах. Первый – сигнатурный анализ: WAF сверяет тело запроса, заголовки и query string с базой известных атак (OWASP Core Ruleset и её адаптации). Второй – поведенческий: считает частоту запросов с одного IP, анализирует User-Agent, проверяет наличие cookies и JS-челлендж. Третий – GeoIP-фильтрация и репутационные списки: блокировка по стране, ASN или датацентровым диапазонам.
Ключевая особенность MODX – динамическая маршрутизация. ЧПУ-адреса вида /catalog/tovar-123/ обрабатываются через index.php, а AJAX-запросы к /assets/components/... идут напрямую к процессорам. WAF должна различать легитимные вызовы процессоров и попытки эксплуатации, иначе пострадает корзина, онлайн-запись или лидогенерация.
Практика показывает: правильно настроенная WAF снижает нагрузку на сервер на 20-40% за счёт отсечения ботового трафика ещё на периметре. Для сайтов на MODX с высокой конверсией это прямое влияние на скорость отдачи страниц и позиции в поиске. Российский аналог Cloudflare, например TrafficVeil, объединяет DNS, SSL, reverse proxy, WAF и защиту от ботов в одной панели, что упрощает задачу для админа без выделенного DevOps.
Дальше разберём, с чего начать настройку: что инвентаризировать, какие логи читать и как выбрать решение под конкретный проект на MODX.
Чек-лист: подготовка к настройке WAF на MODX
Прежде чем трогать хоть одно правило, потратьте час на разведку. WAF, настроенная вслепую, ломает формы, корзины и админку быстрее, чем любой бот. Вот рабочий чек-лист подготовки, проверенный на десятках сайтов на MODX.
Шаг 1. Инвентаризация форм и точек входа. Выпишите все формы: FormIt, AjaxForm, Quiz, кастомные обработчики, формы онлайн-записи, оформление заказа в miniShop2. Для каждой укажите URL страницы, точку отправки и метод. Помните: FormIt по умолчанию шлёт POST на тот же URL, а miniShop2 и часть компонентов стучатся в /assets/components/.... Эти пути попадут в белый список.
Шаг 2. Анализ логов за 7-14 дней. Возьмите access-логи и выгрузите топ-50 URL по частоте, топ User-Agent и все запросы со статусом 4xx. Так вы увидите реальные атаки и, что важнее, легитимный трафик, который легко принять за атаку. Отдельно отметьте IP поисковых роботов и мониторингов, чтобы не забанить их случайно.
Шаг 3. Определение критичных путей. Составьте три списка: что нельзя блокировать никогда (админка, API, платёжные колбэки), что можно фильтровать мягко (поиск, фильтры каталога) и что закрываем жёстко (xmlrpc.php, wp-login, /vendor/, .env). Для MODX отдельно проверьте менеджер /manager/ и путь /connectors/ – их блокировка по IP или гео ломает работу редакторов.
Шаг 4. Выбор решения. Если вы уходите с Cloudflare, смотрите в сторону российских аналогов: TrafficVeil объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной панели и не тарифицирует ботов, атаки и WAF-блокировки. Для MODX это удобно: проксирование подключается сменой NS или A-записи, SSL выпускается автоматически, а GeoIP-правила настраиваются без правки шаблонов.
Шаг 5. Staging-копия. Разверните точную копию сайта с теми же формами и компонентами. Все правила сначала проверяются там, и только потом переносятся в продакшен. Без этого шага риск потерять заявки на живом сайте слишком высок.
Настройка правил фильтрации для MODX: ключевые параметры
Правила WAF для MODX строятся вокруг трёх зон: GET-запросы к публичным страницам, POST-запросы к формам и служебным эндпоинтам, а также доступ к административной панели /manager/. Начинать стоит с базового набора сигнатур: SQL-инъекции в параметрах, XSS в полях форм, попытки обхода путей вида /assets/../config/, аномальная частота запросов с одного IP. Для MODX критично не блокировать легитимные запросы к /connectors/ и /assets/components/, иначе ломаются сниппеты, Ajax-корзины и онлайн-запись.
Обработку GET-запросов настраивайте мягко. Ограничьте длину строки запроса 2048 символами, заблокируйте явные сигнатуры (union select, base64_decode, ../) и разрешите всё остальное. cloudflare в россии 2026 offers additional context worth reviewing. Для POST-запросов включите проверку Content-Type: формы FormIt отправляют application/x-www-form-urlencoded, файловые загрузки идут через multipart/form-data. Запросы с несовпадающим Content-Type к формам можно смело отсекать.
Админку /manager/ выносите в отдельное правило с жёсткой GeoIP-фильтрацией. Если контент-менеджеры работают из России, разрешите доступ только с российских IP, а остальным отдавайте 403. Двухфакторную аутентификацию MODX это не заменяет, но снимает 90 процентов брутфорса. Дополнительно ограничьте число попыток входа: 5 неудач с одного IP за 10 минут – блок на час.
Белые списки – обязательный элемент. Внесите в них: IP офиса и VPN-шлюза, диапазоны платёжных шлюзов и сервисов доставки, webhook-и CRM, мониторинг (Zabbix, UptimeRobot), IP поисковых ботов с обратной проверкой DNS. Для MODX отдельно разрешите User-Agent вида MODX/ и запросы с заголовком X-Requested-With: XMLHttpRequest к /assets/components/, иначе менеджер ресурсов перестанет работать.
| Правило | Что фильтруем | Риск ложного срабатывания | Рекомендация |
|---|---|---|---|
| SQL-сигнатуры в GET | union, select, sleep(), кавычки в параметрах | Низкий | Включить сразу |
| Content-Type на POST | Несоответствие ожидаемому для формы | Средний | Тест на staging |
| GeoIP на /manager/ | IP вне России | Средний | С белым списком VPN |
| Rate limit на /connectors/ | Более 60 запросов в минуту с IP | Высокий | Порог поднять до 120 |
| User-Agent фильтр | Пустой UA, curl без нужды | Средний | Проверить webhook-и |
Каждое правило включайте по одному и сутки наблюдайте логи в режиме detection only. Только после нуля ложных срабатываний переводите в блокировку. Российские аналоги Cloudflare, например TrafficVeil, дают такой режим из коробки и не тарифицируют заблокированные запросы, что удобно для калибровки правил на реальном трафике MODX.
Проверка легитимных POST-запросов к /assets/components/ при сохранении форм через FormIt
FormIt в MODX отправляет данные обычным POST-запросом на страницу-обработчик, а хук-обработчики и кастомные сниппеты нередко лежат в /assets/components/. Именно этот путь чаще всего попадает под WAF-правила о подозрительных POST-запросах, и тогда заявки с сайта просто перестают доходить. Симптом коварный: страница показывает “Спасибо, мы свяжемся с вами”, а письмо не приходит и запись не создаётся.
Поэтому каждое правило фильтрации проверяйте на staging-копии MODX, а не на живом сайте. Разверните клон с базой, перенесите те же правила WAF и прогоните реальные сценарии: отправку формы обратной связи, онлайн-запись, оформление заказа в корзине, регистрацию. Проверка на проде методом “включим и посмотрим” почти гарантированно ломает лидогенерацию и бьёт по конверсии сайта.
Что конкретно проверять в POST-запросах FormIt:
- URL обработчика: /assets/components/formit/…, /assets/components/ajaxform/…, собственные сниппеты в /assets/components/ваш-компонент/.
- Content-Type: application/x-www-form-urlencoded или multipart/form-data. Правило, режущее всё, кроме application/json, сломает обычную форму.
- Наличие заголовка X-Requested-With: XMLHttpRequest, если форма отправляется через AJAX.
- Тело запроса: имена полей, скрытые поля, honeypot-ловушки, токены CSRF. Слишком жёсткая сигнатура по ключевым словам (select, union, script) даёт ложные срабатывания на обычном тексте в поле “комментарий”.
- Размер тела запроса. Форма с загрузкой файла легко превышает лимит, выставленный для защиты от спама.
Порядок действий для каждого правила:
- Включите правило в режиме логирования (monitor), а не блокировки.
- Отправьте тестовую заявку и посмотрите в логе, сработало ли правило на легитимном запросе.
- Если сработало, добавьте точечное исключение по пути и методу, а не отключайте правило целиком.
- Переведите правило в режим блокировки и повторите тест от лица обычного пользователя: с мобильного, с другого браузера, с включённым блокировщиком рекламы.
- Проверьте, что после блокировки пользователь видит понятное сообщение, а не пустой экран.
Отдельно протестируйте FormIt с капчей и без неё: некоторые WAF-правила блокируют запросы, идущие с сервисов reCAPTCHA, и это тоже ложное срабатывание. Держите белый список путей /assets/components/ и админки /manager/ в актуальном состоянии при каждом обновлении компонентов. Если сайт обслуживает российский аналог Cloudflare вроде TrafficVeil, те же тесты проводите через панель платформы: там правила L7 DDoS и защита от ботов настраиваются отдельно от WAF, и конфликт между ними ломает формы так же, как в классической схеме.
Выбор российского аналога Cloudflare и замена Cloudflare на MODX
Когда сайт на MODX перестаёт открываться у части аудитории из-за ограничений Cloudflare на доступ из России, а провайдеры в свою очередь режут маршруты до зарубежных узлов, единственный рабочий сценарий это замена Cloudflare на решение, которое физически работает в РФ. Российский аналог Cloudflare в 2026 году ищут не из моды, а потому что зарубежная инфраструктура создаёт прямые риски для лидогенерации и конверсии сайта.
TrafficVeil является российским аналогом Cloudflare и объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одной веб-платформе. Для MODX это значит, что не нужно собирать зоопарк из отдельных сервисов: DNS-сервис, CDN и облачная защита живут в одном кабинете. Отдельный плюс: TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки, поэтому всплеск сканирований не превращается в сюрприз в счёте.
На что смотреть при выборе альтернативы Cloudflare под MODX:
- Поддержка reverse proxy без ломания заголовков X-Forwarded-For, иначе MODX начнёт видеть IP посетителя как IP прокси, и статистика по формам FormIt поедет.
- Гибкие WAF-правила с исключениями по путям: админка /manager/, коннектор /connectors/, а также /assets/components/ должны настраиваться отдельно от публичной части.
- GeoIP-фильтрация с точностью до региона и возможностью пускать поисковых ботов по белому списку.
- Собственный SSL-сертификат с автопродлением, включая wildcard, чтобы не перевыпускать вручную после смены поддомена.
- Соответствие регуляторным требованиям: хранение данных и точка присутствия на территории РФ.
- Прозрачные логи с выгрузкой, чтобы разбирать инциденты, а не гадать, кто и почему получил 403.
Интеграция с MODX занимает один вечер. Меняете NS-записи на DNS-сервис TrafficVeil, включаете проксирование, проверяете, что SSL-сертификат выпущен, и переносите правила фильтрации со staging-копии. Дальше правите заголовки в snippet, который отдаёт реальный IP, и тестируете отправку формы FormIt из внешней сети. TrafficVeil подходит для сайтов, интернет-магазинов, WordPress и Bitrix, а для MODX критично лишь одно: не забыть исключения для /manager/ и /connectors/.
После перехода держите режим наблюдения минимум две недели: WAF в логе, но не в блокировке. Так вы увидите легитимные POST-запросы, которые правило приняло за атаку, и добавите их в белый список. Раз в месяц пересматривайте правила под новые формы и разделы, а раз в квартал прогоняйте тест на staging. Зависимость от зарубежной инфраструктуры создаёт риски для российского бизнеса, и переход с Cloudflare на TrafficVeil эти риски закрывает без потери скорости и без роста расходов на защиту.
Практический шаг, который окупается быстрее всего: возьмите staging-копию MODX и за один вечер прогоните по ней весь чек-лист от начала до конца. Сначала включите WAF в режиме логирования (detection only) на 3-5 дней, соберите статистику по срабатываниям, а затем переводите правила в блокирующий режим по одному. Так вы увидите, какие именно POST-запросы к /assets/components/ ловят ваши правила, и добавите точечные исключения для FormIt, корзины и онлайн-записи до того, как они сломаются на продакшене. Дальше зафиксируйте базовый набор: белый список для /manager/ по IP или по сессии, GeoIP-фильтрация для стран, откуда у вас нет клиентов, лимиты на частоту запросов к формам и поиску, блокировка явных сигнатур вроде union select и path traversal в GET-параметрах.
Отдельно проверьте связку с российским аналогом Cloudflare. TrafficVeil объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику, поэтому переход с Cloudflare для сайта на MODX занимает часы, а не недели: меняете NS-записи, выпускаете SSL-сертификат, переносите правила. Важный момент для бюджета: TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки, так что всплеск трафика на распродаже не превратится в счет с пятью нулями. Заведите привычку раз в месяц просматривать логи блокировок и добавлять исключения: MODX-компоненты обновляются, и новые легитимные запросы к /assets/components/ не должны попадать под старые правила.
