Перейти к содержимому
HoginHogin
Назад

SafeLine WAF от Chaitin: self-hosted WAF без конфигурирования правил — и Pro-лицензия бесплатно за статью

7 мин чтения

Два дня назад мы собирали WAF из деталей: Coraza + OWASP CRS, SecLang-конфиги, час тюнинга исключений. Путь рабочий, но конструкторный — он предполагает, что вы готовы читать чужие правила и править их руками. У Chaitin Tech ставка противоположная: их SafeLine — self-hosted WAF «как продукт»: панель управления, semantic-движок детекта вместо regex-правил и ноль конфигурации на старте. Ниже — что он ловит из коробки, чем бесплатная редакция отличается от Pro, кому он подходит больше Coraza — и как устроена программа, по которой за статью вроде этой дают платную Pro-лицензию бесплатно.

Содержание

Открыть содержание

Проблема: сигнатуры против обфускации

Классический WAF-детект — это regex-сигнатуры по сырым кускам запроса: ModSecurity и CRS гоняют строки параметров через сотни правил вида «найти union select». Плюс подхода — прозрачность: каждое правило видно и правится. Минус — вечная гонка вооружений. Пейлоад ' OR 1=1-- матчится тривиально, но %27%20OR%202%3E1, спрятанный в кодировке или разбитый комментариями SEL/**/ECT, — уже нет. Ответ сигнатурного мира — больше правил на больше вариантов записи, и каждая новая сигнатура тащит риск ложного срабатывания на легитимном тексте. В статье про Coraza это проявилось как дилемма paranoia level: выше уровень — шире охват и больше false positives.

Semantic-анализ меняет точку приложения усилий: не «искать подстроку», а «понять запрос». Движок парсит HTTP-параметры в структуры — условный SQL-AST для инъекций — и ищет признаки атаки уже в структуре. Обфускация меняет байты, но не смысл: %27 и ' для парсера одно и то же.

Regex против semantic-анализа

Что такое SafeLine

SafeLine — self-hosted WAF от Chaitin Tech, китайской компании, выросшей из attack-defense-команд. Открытый репозиторий собрал 22 800+ звёзд, на сайте Chaitin отчитываются за 700 000+ установок. Продукт живёт не в коде репозитория, а в docker-образах: официальный инсталлер поднимает целый стек.

Что внутри:

Стек SafeLine

Детект заявлен не только шире, но и тише: собственный бенчмарк Chaitin на 33 669 образцах даёт ModSecurity (PL1) 69,7% детекта при 17,6% false positives, а SafeLine в режиме Balance — 71,7% при 0,07%. Цифры вендорские, воспринимайте соответственно, но порядок разрыва по FP совпадает с логикой подхода: когда срабатывание привязано к структуре, а не к подстроке, «похожий на SQL» текст в тикете почти не ловится.

Помимо сигнатурного детекта из коробки работают bot protection со встроенной JS-challenge и CAPTCHA, dynamic protection — шифрование HTML/JS при каждой выдаче, rate limiting против HTTP flood, auth challenge (пароль перед доступом к сайту) и Web ACL.

Честная оговорка: «open source» тут условен. В репозитории — инсталлер, compose-файл и обвязка; сам движок детекта поставляется закрытым образом из реестра Chaitin. «Бесплатно навсегда» — да; аудируемый код, как у Coraza или ModSecurity, — нет.

Бесплатная редакция против Pro

Бесплатная редакция (в репозитории — Community, на странице тарифов — Personal) не ограничена по времени. Платная линейка: Lite за $10/мес, Pro за $100/мес, выше — Ultimate «по запросу».

Personal — $0Lite — $10/месPro — $100/мес
Приложениядо 10до 20без лимита
Semantic-детект✓✓✓, мощнее + продвинутые конфиги
Гео-блок, threat intel, уведомления Discord/Telegram—✓✓
Экспорт журнала атак—✓✓
Кастомная страница блока, LB апстримов, master-slave——✓
Поддержка ARM——✓

Кому чего хватает: Personal закрывает сценарий «блог, пет-проект, два-три внутренних сервиса» — движок и детект те же. Lite покупают ради гео-блока и уведомлений. Pro — уже прод с командой: несколько узлов, синхронизация конфигов, кастомные страницы. Для личного сайта честной нужды в Pro нет — кроме, разве что, ARM-сервера: на ARM бесплатная редакция не работает вовсе.

SafeLine против Coraza: когда какой

Coraza + CRSSafeLine
Формадвижок-библиотека, слой в вашем проксипродукт: свой реверс-прокси + панель
ПравилаSecLang, CRS, полный контрользакрытый движок, настройка из UI
Порог входазнать SecLang, тюнить исключенияпять минут, ноль правил
Прозрачностьopen sourceядро закрыто, образы вендора
Ресурсыодин контейнер, ~150–200 МБстек из ~6 контейнеров, от 1 ГБ RAM
Куда встраиваетсяCaddy, Traefik, Envoy, HAProxy, Goтолько собственный прокси SafeLine
ARM✓только платные редакции

Выбор сводится к вопросу «кто у вас отвечает за WAF». Если разработчик, у которого уже стоит Caddy или Traefik и который хочет WAF-слой внутри существующей инфраструктуры, — Coraza. Если времени и expertise нет, а защитить сайт надо сегодня, — SafeLine снимает вопрос конфигурации целиком. Они и не конкуренты за одно место: SafeLine заменяет связку «прокси + WAF», Coraza — только WAF внутри неё.

Что нужно, чтобы завести SafeLine перед приложением

Требования скромные: Linux x86_64, Docker 20.10.14+, compose v2, 1 CPU / 1 ГБ RAM / 5 ГБ диска и поддержка SSSE3 — последнее отсекает часть самых дешёвых VPS, проверьте заранее: lscpu | grep ssse3.

Официальный инсталлер — одна команда под root:

bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/manager.sh)" -- --en

Он скачает compose-файл и .env в /data/safeline, поднимет стек и в конце напечатает адрес консоли https://<IP>:9443 и сгенерированный пароль. Ручной путь — три шага, если хотите видеть, что именно крутится:

mkdir -p /data/safeline && cd /data/safeline
wget https://waf.chaitin.com/release/latest/compose.yaml
cat > .env <<'EOF'
SAFELINE_DIR=/data/safeline
IMAGE_TAG=latest
MGT_PORT=9443
POSTGRES_PASSWORD=замените-меня
SUBNET_PREFIX=172.22.222
IMAGE_PREFIX=chaitin
REGION=-g
EOF
docker compose up -d

Дальше — консоль. Защищаемый сайт добавляется через UI: Applications → Add application, указываете домен и адрес апстрима — например app:80 для контейнера рядом или 127.0.0.1:8080 для сервиса на хосте. SafeLine пропишет server-блок в tengine и начнёт принимать трафик на 80/443. Остаётся направить DNS на хост с WAF — для локальной проверки хватит строки в /etc/hosts.

Как проверить, что всё работает

Три curl, как в прошлый раз:

curl -i http://ваш-домен/                                                 # 200 — приложение отвечает
curl -i "http://ваш-домен/?id=1%20OR%201%3D1--"                          # 403 — SQLi, страница блока SafeLine
curl -i "http://ваш-домен/?q=%3Cscript%3Ealert(1)%3C%2Fscript%3E"        # 403 — XSS

Каждый блок сразу виден в Attack Logs консоли: тип атаки, IP, география, тело запроса и — главное преимущество панели перед grep по JSON-логам Coraza — воспроизведение запроса одной кнопкой. Там же в один клик включаются bot protection и dynamic protection: первый же заход покажет JS-challenge вместо страницы.

Бюджет ресурсов проверяется docker stats: полный стек укладывается в гигабайт — уже не «контейнер на 150 МБ», но и не enterprise-appliance.

Pro-лицензия за статью: Content Contributor Program

Теперь крючок, из-за которого эта статья существует. Chaitin раздаёт Pro-лицензии за контент — Content Contributor Program:

Чек-лист подачи: написать туториал (можно по этой статье) → опубликовать у себя → зайти в Discord SafeLine → отправить Carrie ссылку в личные сообщения → дождаться решения. Платить не нужно ничего: Pro-ключ просто приходит в личку.

Дисклеймер, который я обязан сделать: эта статья подана в программу. Chaitin не видел текст до публикации и не влиял на редакцию — порядок такой: пишешь что думаешь, потом отправляешь ссылку. Денег программа не платит, и сама лицензия не вечна: через 3–6 месяцев Pro либо продлевается новым контентом, либо откатывается в бесплатную редакцию — конфигурации и данные при этом остаются на месте.

Итог

SafeLine — «WAF за пять минут» для тех, кому тюнинг Coraza/CRS не по зубам или просто не нужен: один инсталлер, панель, semantic-движок, ноль правил — и бесплатная редакция без срока. Цена простоты — закрытое ядро и стек на гигабайт памяти против одного прозрачного контейнера. Выбор честный: контроль — Coraza, скорость — SafeLine. А Pro при желании тоже становится бесплатной — ценой одной честной статьи.


Поделиться:

Следующая статья
WAF на минималках: защищаем приложение Coraza + OWASP CRS без enterprise-бюджета