Быстрый старт
Это руководство проведёт вас от нуля до полностью защищённого веб-приложения менее чем за 5 минут. По завершении PRX-WAF будет проксировать трафик на ваш бэкенд, блокировать распространённые атаки и записывать события безопасности.
Предварительные требования
Вам нужны установленные Docker и Docker Compose. Другие методы см. в Руководстве по установке.
Шаг 1: Запустите PRX-WAF
Клонируйте репозиторий и запустите все сервисы:
git clone https://github.com/openprx/prx-waf
cd prx-waf
docker compose up -dУбедитесь, что все контейнеры запущены:
docker compose psОжидаемый вывод:
NAME SERVICE STATUS
prx-waf prx-waf running
postgres postgres runningШаг 2: Войдите в Admin UI
Откройте браузер и перейдите по адресу http://localhost:9527. Войдите с учётными данными по умолчанию:
- Имя пользователя:
admin - Пароль:
admin
WARNING
Немедленно смените пароль по умолчанию после первого входа.
Шаг 3: Добавьте хост бэкенда
Добавьте первый защищённый хост через Admin UI или API:
Через Admin UI:
- Перейдите в Hosts в боковой панели
- Нажмите Add Host
- Заполните:
- Host:
example.com(домен, который вы хотите защитить) - Remote Host:
192.168.1.100(IP-адрес вашего бэкенд-сервера) - Remote Port:
8080(порт вашего бэкенд-сервера) - Guard Status: Включён
- Host:
- Нажмите Save
Через API:
# Получить JWT-токен
TOKEN=$(curl -s -X POST http://localhost:9527/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin"}' | jq -r '.token')
# Добавить хост
curl -X POST http://localhost:9527/api/hosts \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"host": "example.com",
"port": 80,
"remote_host": "192.168.1.100",
"remote_port": 8080,
"guard_status": true
}'Шаг 4: Проверьте защиту
Отправьте легитимный запрос через прокси:
curl -H "Host: example.com" http://localhost/Вы должны получить обычный ответ от вашего бэкенда. Теперь проверьте, что WAF блокирует попытку SQL-инъекции:
curl -H "Host: example.com" "http://localhost/?id=1%20OR%201=1--"Ожидаемый ответ: 403 Forbidden
Проверьте попытку XSS:
curl -H "Host: example.com" "http://localhost/?q=<script>alert(1)</script>"Ожидаемый ответ: 403 Forbidden
Проверьте попытку обхода пути:
curl -H "Host: example.com" "http://localhost/../../etc/passwd"Ожидаемый ответ: 403 Forbidden
Шаг 5: Мониторинг событий безопасности
Просматривайте заблокированные атаки в Admin UI:
- Перейдите в Security Events в боковой панели
- Вы должны увидеть заблокированные запросы из Шага 4
- Каждое событие показывает тип атаки, исходный IP, совпавшее правило и временную метку
Или запросите события через API:
curl -H "Authorization: Bearer $TOKEN" \
http://localhost:9527/api/security-events{
"events": [
{
"id": 1,
"host": "example.com",
"source_ip": "172.18.0.1",
"attack_type": "sqli",
"rule_id": "CRS-942100",
"action": "block",
"timestamp": "2026-03-21T10:05:32Z"
}
]
}Шаг 6: Включите мониторинг в реальном времени (необязательно)
Подключитесь к WebSocket-эндпоинту для событий безопасности в реальном времени:
# Используя websocat или аналогичный WebSocket-клиент
websocat ws://localhost:9527/ws/eventsСобытия поступают в реальном времени по мере обнаружения и блокировки атак.
Что у вас теперь есть
После выполнения этих шагов ваша конфигурация включает:
| Компонент | Статус |
|---|---|
| Reverse proxy | Прослушивает порты 80/443 |
| Движок WAF | 16-фазный конвейер обнаружения активен |
| Встроенные правила | OWASP CRS (310+ правил) включён |
| Admin UI | Работает на порту 9527 |
| PostgreSQL | Хранит конфигурацию, правила и события |
| Мониторинг в реальном времени | WebSocket-поток событий доступен |
Следующие шаги
- Движок правил — понимание работы движка правил YAML
- Синтаксис YAML — изучение схемы правил для пользовательских правил
- Reverse Proxy — настройка балансировки нагрузки и маршрутизации
- SSL/TLS — включение HTTPS с автоматическими сертификатами Let's Encrypt
- Справочник конфигурации — тонкая настройка каждого аспекта PRX-WAF