IskWaf 3.2.0 — большое обновление WAF для MODX 3

IskWaf — это простой и гибкий межсетевой экран уровня веб-приложения (WAF) для MODX Revolution 3.x: правила по IP/стране/User-Agent/Referrer/URI, локальная капча, логирование, отчёты и GeoIP/ASN на базе IP2Location LITE. В версии 3.2.0 добавлено сразу несколько крупных возможностей. Делюсь, что нового.


1. Realtime-проверка страны


Раньше страна для блокировки бралась только из таблицы деталей, которую наполняет CRON — то есть новые IP «проскакивали» до очередного запуска крона. Добавлен режим реального времени: настройка iskwaf_country_check_mode.
cached — как раньше (из таблицы, наполняется кроном).
realtime — страна определяется прямым запросом к локальной базе IP2Location в момент запроса, блокировка мгновенная; результат сохраняется в таблицу.
Требуется файл geoip_db/IP2LOCATION-LITE-DB11.BIN.

2. Белый список стран


Новая настройка iskwaf_allowed_countries. Если она заполнена — пропускается трафик только из перечисленных стран, все остальные блокируются (поисковые боты при этом проходят, т.к. проверяются раньше). Белый список имеет приоритет над чёрным (iskwaf_blocked_countries). Если страну IP определить не удалось — он не блокируется (fail-open).

3. Улучшенная верификация поисковых ботов


Чтобы настоящие боты (Google, Yandex, Bing, DuckDuckGo) не попадали под блокировки по стране/ASN, переработан механизм проверки в гибридный.
Сначала быстрая локальная проверка по ASN (Googlebot=AS15169, YandexBot=AS13238, bingbot=AS8075, Applebot=AS714) — без сетевых задержек и устойчиво к подделке User-Agent.
Затем, при необходимости, двойная DNS-проверка (rDNS + fDNS) как резерв.
Метод настраивается (iskwaf_bot_verification_method: asn_dns / asn / dns). Успешная верификация кэшируется на 24 часа.

4. Правила по ASN в реальном времени и приоритет allow-списков


Мгновенная блокировка по ASN/имени компании (iskwaf_enable_realtime_asn_rules) — не дожидаясь, пока CRON создаст /24-правило.
Разрешающие списки (iskwaf_auto_allow_as_names / iskwaf_auto_allow_as_numbers) получили наивысший приоритет: они работают всегда и срабатывают раньше блокировки по стране. Доверенная компания не блокируется, даже если её страна в чёрном списке.

5. Экспорт и импорт правил в CSV


На каждой вкладке правил (IP, User-Agent, Referrer, Request URI) появились кнопки «Экспорт CSV» и «Импорт CSV».
Экспорт — с BOM (корректная кириллица в Excel), разделитель настраивается (iskwaf_csv_delimiter, по умолчанию «;»).
Импорт — файл выбирается через штатный файловый менеджер MODX, читается на сервере. Каждая строка валидируется (формат IP/CIDR, тип паттерна, компилируемость regex, тип правила). Некорректные строки пропускаются с указанием причины, корректные импортируются. Режимы «пропускать дубликаты» и «обновлять существующие».

6. Инспекция запросов — защита от SQL-инъекций


Новый дополнительный слой защиты: проверка входных данных запроса по сигнатурам атак.
Проверяются значения GET, POST, Cookie и (опционально) сырое тело запроса — iskwaf_payload_scan_sources.
Режимы (iskwaf_payload_inspection_mode): off (по умолчанию), log (только лог) и block (403). Рекомендуется сначала log, подобрать сигнатуры, и только потом block.
Сигнатуры (iskwaf_payload_signatures) — свои regex по строкам; если пусто, используется встроенный набор под типичные SQL-инъекции (UNION SELECT, INFORMATION_SCHEMA, SLEEP, BENCHMARK, ORD/MID, UPDATEXML и др.). Значения нормализуются перед сравнением.
Важно: это компенсирующая мера, а не замена исправлению уязвимого кода. Для запросов к коннекторам компонентов (которые могут не вызывать OnHandleRequest) можно подключить файл iskwaf-guard.php.

7. Улучшения логирования


В заметках блокировки по стране теперь видно причину, режим и источник, например: Reason: country not in whitelist. Mode: realtime (source: table).
Для ASN-правил — что именно сработало и откуда взялись данные: Match: allow by AS name. Mode: realtime (source: ip2location_db).
На вкладке «Логи» добавлена колонка «Инъекция» — помечает «ДА» срабатывания инспекции запросов.

8. Прочее


Настраиваемый разделитель CSV (iskwaf_csv_delimiter, по умолчанию «;»).

Новые системные настройки (кратко)


iskwaf_country_check_mode — cached | realtime
iskwaf_allowed_countries — белый список стран (ISO alpha-2, через запятую)
iskwaf_enable_dns_verification — Да/Нет, верификация ботов
iskwaf_bot_verification_method — asn_dns | asn | dns
iskwaf_enable_realtime_asn_rules — Да/Нет, мгновенная блокировка по ASN
iskwaf_csv_delimiter —; |, | tab
iskwaf_payload_inspection_mode — off | log | block
iskwaf_payload_scan_sources — get,post,cookie,body
iskwaf_payload_max_body — размер тела для инспекции (байт)
iskwaf_payload_signatures — regex-сигнатуры (по одной на строку)

Рекомендации при обновлении


Для realtime-режимов нужны локальные базы IP2LOCATION-LITE-DB11.BIN (страна) и IP2LOCATION-LITE-ASN.BIN (ASN) — их скачивает CRON-скрипт.
Если используете блокировку по стране — включите верификацию ботов, иначе настоящий Googlebot/Yandex из «неудобной» страны может быть заблокирован.
Инспекцию запросов сначала запускайте в режиме log и понаблюдайте за ложными срабатываниями.

Документация: iskwaf.ru (рус.) и iskwaf.com (англ.).
Ivan K.
1 час назад
modx.pro
8
0

Комментарии: 0

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0