Resolución de Problemas
Esta página cubre los problemas más comunes al ejecutar PRX-WAF, junto con sus causas y soluciones.
Error de Conexión a la Base de Datos
Síntomas: PRX-WAF falla al iniciar con errores de "connection refused" o "authentication failed".
Soluciones:
- Verifica que PostgreSQL esté en ejecución:
# Docker
docker compose ps postgres
# systemd
sudo systemctl status postgresql- Prueba la conectividad:
psql "postgresql://prx_waf:[email protected]:5432/prx_waf"- Verifica la cadena de conexión en tu configuración TOML:
[storage]
database_url = "postgresql://prx_waf:[email protected]:5432/prx_waf"- Ejecuta las migraciones si la base de datos existe pero faltan las tablas:
prx-waf -c configs/default.toml migrateLas Reglas No Cargan
Síntomas: PRX-WAF inicia pero no hay reglas activas. Los ataques no son detectados.
Soluciones:
- Verifica las estadísticas de reglas:
prx-waf rules statsSi la salida muestra 0 reglas, el directorio de reglas puede estar vacío o mal configurado.
- Verifica la ruta del directorio de reglas en tu configuración:
[rules]
dir = "rules/"- Valida los archivos de reglas:
python rules/tools/validate.py rules/- Comprueba errores de sintaxis YAML -- un único archivo malformado puede evitar que se carguen todas las reglas:
# Validate one file at a time to find the problem
python rules/tools/validate.py rules/owasp-crs/sqli.yaml- Asegúrate de que las reglas integradas estén habilitadas:
[rules]
enable_builtin_owasp = true
enable_builtin_bot = true
enable_builtin_scanner = trueLa Recarga en Caliente No Funciona
Síntomas: Los archivos de reglas se modifican pero los cambios no surten efecto.
Soluciones:
- Verifica que la recarga en caliente esté habilitada:
[rules]
hot_reload = true
reload_debounce_ms = 500- Activa una recarga manual:
prx-waf rules reload- Envía SIGHUP:
kill -HUP $(pgrep prx-waf)- Verifica los límites de observación del sistema de archivos (Linux):
cat /proc/sys/fs/inotify/max_user_watches
# If too low, increase:
echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
sudo sysctl -pFalsos Positivos
Síntomas: Las solicitudes legítimas están siendo bloqueadas (403 Forbidden).
Soluciones:
- Identifica la regla de bloqueo en los eventos de seguridad:
curl -H "Authorization: Bearer $TOKEN" http://localhost:9527/api/security-eventsBusca el campo rule_id en el evento.
- Deshabilita la regla específica:
prx-waf rules disable CRS-942100Reduce el nivel de paranoia. Si estás ejecutando en paranoia 2+, intenta reducir a 1.
Cambia la regla al modo de registro para monitoreo en lugar de bloqueo:
Edita el archivo de reglas y cambia action: "block" a action: "log", luego recarga:
prx-waf rules reload- Agrega una lista blanca de IPs para fuentes de confianza:
curl -X POST http://localhost:9527/api/rules/ip \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"ip": "10.0.0.0/8", "action": "allow"}'TIP
Al implementar nuevas reglas, comienza con action: log para monitorear falsos positivos antes de cambiar a action: block.
Problemas con Certificados SSL
Síntomas: Las conexiones HTTPS fallan, errores de certificados o falla la renovación de Let's Encrypt.
Soluciones:
Verifica el estado del certificado en la interfaz de administración bajo Certificados SSL.
Verifica que el puerto 80 sea accesible desde internet para los desafíos ACME HTTP-01.
Verifica las rutas de los certificados si usas certificados manuales:
[http3]
cert_pem = "/etc/prx-waf/tls/cert.pem"
key_pem = "/etc/prx-waf/tls/key.pem"- Verifica que el certificado coincida con el dominio:
openssl x509 -in /etc/prx-waf/tls/cert.pem -text -noout | grep -A1 "Subject Alternative Name"Los Nodos del Clúster No Se Conectan
Síntomas: Los nodos trabajadores no pueden unirse al clúster. El estado muestra pares "disconnected".
Soluciones:
- Verifica la conectividad de red en el puerto del clúster (predeterminado: UDP 16851):
# From worker to main
nc -zuv node-a 16851- Verifica las reglas del firewall -- la comunicación del clúster usa UDP:
sudo ufw allow 16851/udp- Verifica los certificados -- todos los nodos deben usar certificados firmados por la misma CA:
openssl verify -CAfile cluster-ca.pem node-b.pem- Verifica la configuración de seeds en los nodos trabajadores:
[cluster]
seeds = ["node-a:16851"] # Must resolve to the main node- Revisa los registros con mayor verbosidad:
prx-waf -c config.toml run 2>&1 | grep -i "cluster\|quic\|peer"Uso Elevado de Memoria
Síntomas: El proceso PRX-WAF consume más memoria de la esperada.
Soluciones:
- Reduce el tamaño de la caché de respuestas:
[cache]
max_size_mb = 128 # Reduce from default 256- Reduce el pool de conexiones a la base de datos:
[storage]
max_connections = 10 # Reduce from default 20- Reduce los hilos de trabajo:
[proxy]
worker_threads = 2 # Reduce from CPU count- Monitorea el uso de memoria:
ps aux | grep prx-wafProblemas de Conexión con CrowdSec
Síntomas: La integración con CrowdSec muestra "disconnected" o las decisiones no se cargan.
Soluciones:
- Prueba la conectividad LAPI:
prx-waf crowdsec test- Verifica la clave de API:
# On the CrowdSec machine
cscli bouncers list- Verifica la URL del LAPI:
[crowdsec]
lapi_url = "http://127.0.0.1:8080"
api_key = "your-bouncer-key"- Establece una acción de reserva segura para cuando el LAPI no sea accesible:
[crowdsec]
fallback_action = "log" # Don't block when LAPI is downAjuste de Rendimiento
Tiempos de Respuesta Lentos
- Habilita la caché de respuestas:
[cache]
enabled = true
max_size_mb = 512- Aumenta los hilos de trabajo:
[proxy]
worker_threads = 8- Aumenta las conexiones a la base de datos:
[storage]
max_connections = 50Uso Elevado de CPU
Reduce el número de reglas activas. Deshabilita las reglas de paranoia nivel 3-4 si no son necesarias.
Deshabilita las fases de detección no utilizadas. Por ejemplo, si no usas CrowdSec:
[crowdsec]
enabled = falseObtener Ayuda
Si ninguna de las soluciones anteriores resuelve tu problema:
- Revisa los problemas existentes: github.com/openprx/prx-waf/issues
- Crea un nuevo problema con:
- Versión de PRX-WAF
- Sistema operativo y versión del kernel
- Archivo de configuración (con contraseñas redactadas)
- Salida relevante de los registros
- Pasos para reproducir
Próximos Pasos
- Referencia de Configuración -- Ajustar todos los ajustes
- Motor de Reglas -- Comprender cómo se evalúan las reglas
- Modo Clúster -- Resolución de problemas específicos del clúster