Inicio Rápido
Esta guía te lleva de cero a una aplicación web completamente protegida en menos de 5 minutos. Al final, PRX-WAF estará enviando tráfico a tu backend, bloqueando ataques comunes y registrando eventos de seguridad.
Requisitos Previos
Necesitas Docker y Docker Compose instalados. Consulta la Guía de Instalación para otros métodos.
Paso 1: Iniciar PRX-WAF
Clona el repositorio e inicia todos los servicios:
git clone https://github.com/openprx/prx-waf
cd prx-waf
docker compose up -dVerifica que todos los contenedores estén en ejecución:
docker compose psSalida esperada:
NAME SERVICE STATUS
prx-waf prx-waf running
postgres postgres runningPaso 2: Iniciar Sesión en la Interfaz de Administración
Abre tu navegador y navega a http://localhost:9527. Inicia sesión con las credenciales predeterminadas:
- Usuario:
admin - Contraseña:
admin
WARNING
Cambia la contraseña predeterminada inmediatamente después de tu primer inicio de sesión.
Paso 3: Agregar un Host Backend
Agrega tu primer host protegido a través de la interfaz de administración o vía la API:
Vía Interfaz de Administración:
- Navega a Hosts en la barra lateral
- Haz clic en Agregar Host
- Completa:
- Host:
example.com(el dominio que deseas proteger) - Host Remoto:
192.168.1.100(la IP de tu servidor backend) - Puerto Remoto:
8080(el puerto de tu servidor backend) - Estado de Guardia: Habilitado
- Host:
- Haz clic en Guardar
Vía API:
# Obtain a JWT token
TOKEN=$(curl -s -X POST http://localhost:9527/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin"}' | jq -r '.token')
# Add a host
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
}'Paso 4: Probar la Protección
Envía una solicitud legítima a través del proxy:
curl -H "Host: example.com" http://localhost/Deberías recibir la respuesta normal de tu backend. Ahora prueba que el WAF bloquee un intento de inyección SQL:
curl -H "Host: example.com" "http://localhost/?id=1%20OR%201=1--"Respuesta esperada: 403 Forbidden
Prueba un intento de XSS:
curl -H "Host: example.com" "http://localhost/?q=<script>alert(1)</script>"Respuesta esperada: 403 Forbidden
Prueba un intento de path traversal:
curl -H "Host: example.com" "http://localhost/../../etc/passwd"Respuesta esperada: 403 Forbidden
Paso 5: Monitorear Eventos de Seguridad
Visualiza los ataques bloqueados en la interfaz de administración:
- Navega a Eventos de Seguridad en la barra lateral
- Deberías ver las solicitudes bloqueadas del Paso 4
- Cada evento muestra el tipo de ataque, la IP de origen, la regla coincidente y la marca de tiempo
O consulta los eventos vía la 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"
}
]
}Paso 6: Habilitar el Monitoreo en Tiempo Real (Opcional)
Conéctate al endpoint WebSocket para eventos de seguridad en vivo:
# Using websocat or similar WebSocket client
websocat ws://localhost:9527/ws/eventsLos eventos se transmiten en tiempo real a medida que los ataques son detectados y bloqueados.
Qué Tienes Ahora
Después de completar estos pasos, tu configuración incluye:
| Componente | Estado |
|---|---|
| Proxy inverso | Escuchando en el puerto 80/443 |
| Motor WAF | Pipeline de detección de 16 fases activo |
| Reglas integradas | OWASP CRS (310+ reglas) habilitadas |
| Interfaz de administración | Ejecutándose en el puerto 9527 |
| PostgreSQL | Almacenando configuración, reglas y eventos |
| Monitoreo en tiempo real | Flujo de eventos WebSocket disponible |
Próximos Pasos
- Motor de Reglas -- Comprende cómo funciona el motor de reglas YAML
- Sintaxis YAML -- Aprende el esquema de reglas para reglas personalizadas
- Proxy Inverso -- Configura el balanceo de carga y el enrutamiento ascendente
- SSL/TLS -- Habilita HTTPS con certificados Let's Encrypt automáticos
- Referencia de Configuración -- Ajusta cada aspecto de PRX-WAF