Для защиты веб-приложений неплохо бы иметь такой инструмент как WAF (Web Application Firewall).
WAF — это комплекс программных фильтров, предназначенных для обнаружения и блокирования сетевых атак на веб-приложение.
WAF устанавливается перед защищаемым web-ресурсом встраивается в виде модуля в веб-сервер. WAF анализируем все поступающие запросы, анализирует их на наличие вредоносного кода и блокирует запрс нарушителя. WAF может также заблокировать IP адрес, с которого наблюдается атака, к примеру, с помощью fail2ban.
fail2ban — приложение, которое автоматически модифицирует правила на локальном firewall, блокируя IP адрес на выбранное время. Решение о блокировке принимается на основе лог файлов приложения.
Современные WAF помимо фильтров используют различные механизмы сигнатурного анализа, нейросети и различные индикаторы атак.
В корпоративном секторе на рынке имеются мощные средства защиты WAF, удовольствие дорогое. Для небольших компаний и персональных сайтов можно применять бесплатные Open Source решения.
Одним из известных WAF с открытым исходным кодом является ModSecurity. Приложение имеет готовые модули для веб-серверов на базе apache2 и nginx. Однако, ModSecurity не развивается и помечен как "End-of-Live 2024".
Альтернатива есть. Это open-appsec — новый ML WAF, с возможностью локальной или облачной установки и управления. Т.е. его можно поставить локально в закрытом контуре. Или подключить облачную веб- консоль управления. WAF имеет платную, так и бесплатную community версии. Внутри WAF используется ML-движок, который позволяет получить эффективную защиту при минимальном пороге входа.
В community-версии доступны компоненты безопасности:
- Web Application Attack Mitigation (ML-based WAF)
- Web API Attack Mitigation (ML-based WAF)
- IPS Engine with Snort 3.0 Support
- Rate Limiting
- Custom Source Identifiers (IP and XFF only)
И опции управления:
- Declarative code based deployment and configuration (DevOps style)
- Web-based Management of Protected Assets & Policy (SaaS)
- Web-based Event Management & Dashboards (SaaS)
- Log Storage in the Cloud
https://docs.openappsec.io/getting-started/getting-started
Установка open-appsec
Устанавливать будем на Ubuntu сервере с веб-сервером nginx.
Скрипт установки дотошный, проверяет версию nginx. Перед установкой обязательно проверяем с какими версиями совместим open-appsec. Посмотрим список совместимых версий:
https://downloads.openappsec.io/packages/supported-nginx.txt
Сравниваем со своей версией nginx:
dpkg -l | grep nginx
cat /etc*release*
Скачиваем пакет:
wget https://downloads.openappsec.io/open-appsec-install && chmod +x open-appsec-install
Пробуем установить. По умолчанию WAF устанавливается в режиме наблюдения, для установке в режиме защиты нужно добавить атрибутов, help в помощь:
./open-appsec-install -h
Ставлю в режиме защиты:
./open-appsec-install --auto --prevent
Если инсталлятору не понравится наша версия nginx, получим ошибку (да, да, наступил на эти грабли):
Unsupported nginx version: ...
Если версия понравится, то:
Successfully installed open-appsec...
Если попробовать теперь применить какую-нибудь попытку использования SQL инъекции (+SELECT+) или Path Traversal (../../), то получим в бубен 403 ошибку.
Если зарегистрироваться на сайте, почитать документацию, сгенерировать токен, то...
То можно получить возможность управления WAF из облака и доступ к наглядному Dashboard.