Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Быстрый старт

Это руководство проведёт вас от нуля до полностью защищённого веб-приложения менее чем за 5 минут. По завершении PRX-WAF будет проксировать трафик на ваш бэкенд, блокировать распространённые атаки и записывать события безопасности.

Предварительные требования

Вам нужны установленные Docker и Docker Compose. Другие методы см. в Руководстве по установке.

Шаг 1: Запустите PRX-WAF

Клонируйте репозиторий и запустите все сервисы:

bash
git clone https://github.com/openprx/prx-waf
cd prx-waf
docker compose up -d

Убедитесь, что все контейнеры запущены:

bash
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:

  1. Перейдите в Hosts в боковой панели
  2. Нажмите Add Host
  3. Заполните:
    • Host: example.com (домен, который вы хотите защитить)
    • Remote Host: 192.168.1.100 (IP-адрес вашего бэкенд-сервера)
    • Remote Port: 8080 (порт вашего бэкенд-сервера)
    • Guard Status: Включён
  4. Нажмите Save

Через API:

bash
# Получить 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: Проверьте защиту

Отправьте легитимный запрос через прокси:

bash
curl -H "Host: example.com" http://localhost/

Вы должны получить обычный ответ от вашего бэкенда. Теперь проверьте, что WAF блокирует попытку SQL-инъекции:

bash
curl -H "Host: example.com" "http://localhost/?id=1%20OR%201=1--"

Ожидаемый ответ: 403 Forbidden

Проверьте попытку XSS:

bash
curl -H "Host: example.com" "http://localhost/?q=<script>alert(1)</script>"

Ожидаемый ответ: 403 Forbidden

Проверьте попытку обхода пути:

bash
curl -H "Host: example.com" "http://localhost/../../etc/passwd"

Ожидаемый ответ: 403 Forbidden

Шаг 5: Мониторинг событий безопасности

Просматривайте заблокированные атаки в Admin UI:

  1. Перейдите в Security Events в боковой панели
  2. Вы должны увидеть заблокированные запросы из Шага 4
  3. Каждое событие показывает тип атаки, исходный IP, совпавшее правило и временную метку

Или запросите события через API:

bash
curl -H "Authorization: Bearer $TOKEN" \
  http://localhost:9527/api/security-events
json
{
  "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-эндпоинту для событий безопасности в реальном времени:

bash
# Используя websocat или аналогичный WebSocket-клиент
websocat ws://localhost:9527/ws/events

События поступают в реальном времени по мере обнаружения и блокировки атак.

Что у вас теперь есть

После выполнения этих шагов ваша конфигурация включает:

КомпонентСтатус
Reverse proxyПрослушивает порты 80/443
Движок WAF16-фазный конвейер обнаружения активен
Встроенные правилаOWASP CRS (310+ правил) включён
Admin UIРаботает на порту 9527
PostgreSQLХранит конфигурацию, правила и события
Мониторинг в реальном времениWebSocket-поток событий доступен

Следующие шаги

Released under the Apache-2.0 License.