Разговор про защиту сайта обычно начинается не с этого слова, а с фразы «у нас что-то странное в логах». Давайте сначала разберёмся с терминами, а потом уже поговорим про выбор.

Что такое WAF, если по-простому

Представьте вахтёра на входе в офис. Он смотрит на каждого, кто заходит, и решает: этот человек идёт по делу, а этот явно пытается пронести что-то не то. WAF - это такой же вахтёр, только для сайта, и работает он за миллисекунды на каждый запрос.

Расшифровывается как Web Application Firewall - «межсетевой экран для веб-приложений». Каждый раз, когда посетитель открывает страницу, что-то ищет или отправляет форму, на сервер уходит HTTP-запрос. WAF встаёт между посетителем и вашим сайтом и смотрит на каждый такой запрос: не пытается ли кто-то вытащить данные из базы, подсунуть свой код или залезть в папку, в которую нельзя.

Выглядит это примерно так:

  • посетитель отправляет запрос - обычный или с атакой внутри;
  • WAF разбирает его и сравнивает с набором правил: «а это не похоже на попытку взлома?»;
  • если запрос обычный - он уходит на сайт, и посетитель ничего не замечает;
  • если это атака - WAF отдаёт страницу с ошибкой, а запрос до сайта не доходит.

Важный момент: WAF не заменяет нормальный код и не лечит дыры в приложении. Сайт, где пароль от базы лежит в открытом виде, он не спасёт. WAF ловит тех, кто стреляет по площадям - а таких, если честно, большинство.

Пример из жизни. У интернет-магазина на 300 тысяч визитов в месяц приходит отчёт пентеста: SQL-инъекция в фильтре каталога, XSS в поиске, обход каталога в выгрузке прайса. Ничего экзотического. Сканер находит такое за вечер, и автоматический бот - тоже найдет.

Три стены, в которые упирается средний бизнес

Технический директор идёт искать WAF и довольно быстро понимает, что выбор невелик.

Облачный сервис. Все запросы идут через чужую инфраструктуру. Настроить можно за пару часов, и это здорово. Но потом выясняется, что вы не управляете ни движком, ни правилами, ни ценами. А что случится с ценой через год или с сервисом в целом - вопрос без ответа.

Enterprise-вендор. Цена такая, что её надо защищать на совете директоров. Внедрение - кварталы. А когда запрос вдруг блокируется, понять почему без звонка в поддержку не получится: правила - чёрный ящик.

Импортные решения. Десять лет были стандартом индустрии. Теперь просто недоступны: ни купить, ни получить поддержку, ни обновить базы сигнатур. Работать на них - это жить без обновлений защиты.

Есть ещё четвёртый путь - бесплатный open-source вроде ModSecurity. Он честный и вполне рабочий. Но управлять придётся самому: единой консоли нет, версионирования правил нет, события с нескольких серверов собрать нечем. Нужна команда, у которой дойдут руки.

Получается забавно: либо защиты слишком много по цене и сложности, либо она есть, но разобраться в ней некому. Посередине - дыра, в которой живёт большинство компаний.

Что на самом деле нужно от WAF

Если убрать маркетинг, требования у среднего бизнеса очень приземлённые. Ни одно из них не про «магический AI».

Работает без чужого облака

Система стоит у вас и не зависит от того, доступен ли чей-то сервис за границей. Работает даже в закрытом контуре без интернета.

Правила можно прочитать

Не чёрный ящик, а список понятных условий. Можно посмотреть, почему заблокировало запрос, и поправить.

Не просит отдельное железо

Пара vCPU справляется с нагрузкой - это норма, а не повод покупать новый сервер.

Встраивается в ваши процессы

Docker, Kubernetes, Nomad, управление через API - а не только через тяжёлую панель из 2010-х.

Под эти требования и сделан КиберРубеж - автономный WAF, который мы поставляем и внедряем.

Как устроен КиберРубеж

В системе две части - и это принципиально.

Нода - то, что стоит перед вашим сайтом. Принимает запросы, проверяет их по правилам, блокирует атаки, а остальное передаёт на сайт. Контрольная плоскость - «штаб»: в ней хранятся правила, собираются события и метрики, там же живёт веб-консоль, через которую всем этим управляют. Штаб разворачивается у вас, а не у нас.

Внешних зависимостей нет: ни вендорского образа, ни чужого облака. Все данные - правила, события, метрики, учётные записи - остаются у заказчика.

Правила - это данные, а не код внутри программы

Правило выглядит как обычная запись: идентификатор, название, тип атаки, уровень уверенности, действие и условия. Например, «в параметре запроса есть конструкция вида OR 1=1». Это запись в базе, а не строчка, зашитая в скомпилированную программу.

Почему это важно на практике:

  • правила можно читать и проверять, как код, и хранить в Git;
  • набор правил версионируется, а заменяется целиком: не бывает момента, когда на сервере перемешались старая и новая версии;
  • новое правило применяется на лету - без пересборки и перезапуска;
  • шумное правило можно отключить точечно, не отключая всё остальное.

Режимы: сначала посмотреть, потом блокировать

Главный страх при внедрении WAF - «включим и положим продажи». Поэтому режим можно менять на лету, без перезапуска.

РежимЧто происходит
offПроверка выключена, все запросы идут на сайт.
monitoringWAF всё замечает и записывает, но никого не блокирует. С него стоит начинать: посмотрите, что прилетало бы, если бы защита уже была включена.
safe_blockingБлокируются только те правила, в которых система уверена. Остальное - просто в журнал. Компромисс, когда уже хочется защищаться, но страшно поймать ложное срабатывание.
blockБлокируются все правила с действием «заблокировать». Обычно включают, когда неделю посмотрели в monitoring и убедились, что лишнего не ловится.

Обычно получается так: первая неделя в monitoring, разбор событий, отключение шумных правил, потом safe_blocking, а через некоторое время полный block. Никакого «включили и молимся».

От чего защищает и что видно

Движок ловит самые массовые типы атак: SQL-инъекции, XSS, обход каталога и инъекции команд. Это не «защита от всего на свете» - но именно такие атаки составляют основную часть мусора в логах любого публичного сайта.

Каждое срабатывание превращается в запись: какой сервер, какое правило, какой тип атаки, что сделали. В консоли видно количество запросов, долю блокировок, задержки и текущую версию правил. А сама нода отдаёт свой статус по локальному адресу - его легко подключить к обычному мониторингу, тому же Zabbix.

Безопасность самой системы

  • нода регистрируется по одноразовому токену - повторно им не воспользоваться;
  • пароли администраторов хранятся в виде хэшей Argon2id, а не открытым текстом;
  • статус ноды доступен только с самого сервера, снаружи его не видно;
  • процессы работают с минимальными правами;
  • вход ограничен по числу попыток, все данные на входе проверяются.

Что показывает нагрузочный тест

Производительность WAF легко превратить в маркетинг, поэтому покажем цифры из протокола приёмочных испытаний. Стенд: два vCPU, половина запросов - атаки.

p95 = 6,8 мс
при ~940 rps на 2 vCPU (10 000 запросов, 50% с атаками): p50 = 2,2 мс, ошибок 0%. Требование ТЗ - p95 не выше 50 мс при 1000 rps

Честная оговорка: это локальный стенд, а не боевой сайт с реальной базой и внешним TLS. В продакшене задержка будет выше - хотя бы потому, что к ней добавится время ответа вашего приложения. Но порядок цифр понятен: WAF не становится узким горлышком, которое надо компенсировать лишними ядрами.

И ещё деталь: память движка не зависит от того, какой размер запроса заявил клиент. Это защита от простого способа уронить прокси, отправив запрос с огромным Content-Length.

Честное сравнение с конкурентами

На рынке есть игроки крупнее и старше нас. Делать вид, что их нет, глупо - у каждого есть сильная сторона, и мы это показали в таблице.

РешениеТипСильная сторонаСлабое место
Positive TechnologiesEnterpriseЛидер рынка, зрелая экосистема, сертификация ФСТЭКВысокая стоимость и порог входа, рассчитан на крупного заказчика
SolidSoftСпециализированноеСтабильный продукт для защиты API и веба в крупном бизнесеОриентация на крупные внедрения, не на быстрый старт
BI.ZONEОблако / SaaSБыстрый запуск, комплексная безопасность как сервисПривязка к облачной инфраструктуре вендора
WAF облачных провайдеровSaaSВстроен в облако, минимальные усилия на стартеРаботает только внутри этого облака: переезд = новая настройка защиты
Open-source (ModSecurity и CRS)Самостоятельная сборкаБесплатно, полный контроль, огромное сообществоНет единого управления нодами, событий и версионирования правил - всё это строить самому
КиберРубежАвтономный сервисСвой контур, понятные правила, лёгкий движок, работа в закрытой сетиМолодой продукт; сертификации уровня крупных вендоров нет

Если свести различия к нескольким пунктам, получится так:

Не привязывает к поставщику

Правила, события и учётные записи живут у вас. Если поставщик завтра уйдёт с рынка, вы не останетесь без защиты.

Понятно, что происходит

Правило можно открыть и прочитать, а причину блокировки видно прямо в событии - не нужно писать в поддержку и ждать ответа.

Работает без интернета

Обновления правил можно привезти файлом. Система живёт даже в закрытом контуре, где наружу ничего не ходит.

Дружит с DevOps

Docker, Kubernetes, Nomad, управление через API - WAF встраивается в то, как вы уже работаете, а не живёт отдельной жизнью.

Кому КиберРубеж не подходит

Скажем честно, чтобы не тратить время друг друга.

  • Нужна сертифицированная поставка по требованию регулятора. Это отдельная история со своими сроками и бюджетом - тут стоит смотреть на вендоров, у которых сертификаты уже есть.
  • В компании сильная команда ИБ и всё уже построено на open-source. ModSecurity с актуальным набором правил закроет базу бесплатно. КиберРубеж нужен там, где хочется управляемости: одна консоль, версии правил, события со всех серверов в одном месте.
  • Нужен продвинутый анализ поведения и антибот «из коробки». Это другая задача и другие продукты.

Мы работаем с теми, кому нужна понятная базовая защита сайта и API, целиком под своим контролем, без облачной привязки и без внедрения на полгода.

С чего начать

КиберРубеж - это набор контейнеров: штаб и ноды. Разворачивается в Docker Compose на паре виртуальных машин, в LXC, в Kubernetes или Nomad - смотря что у вас уже используется. Требования к ноде скромные: два vCPU и около гигабайта памяти.

Поставка лицензируется по пакетам - отличаются лимитом серверов, частотой обновления правил и сроком хранения истории. И вот деталь, которая отличает эту схему от облачных сервисов: когда подписка заканчивается, защита не выключается. Нода продолжает работать на последнем наборе правил, а статус лицензии просто показывается отдельно. Вы не остаётесь без WAF ровно в тот момент, когда решаете, продлевать или нет.

Если вы давно откладываете защиту сайта со словами «нормальный WAF стоит как ещё один разработчик» - напишите нам. Развернём стенд, включим режим наблюдения и покажем, что именно прилетает на ваш трафик. Блокировать ничего не будем, пока вы сами не решите.