WP Seguro
Firewall de tres capas para WordPress
Sitio oficial · Descargar · Documentación · Cambios
WP Seguro es un plugin de seguridad para WordPress, libre y de código abierto. Detecta y bloquea bots, fuerza bruta, inyección SQL, XSS, path traversal y escáneres de vulnerabilidades. Intercepta cada petición lo más temprano posible, en muchos casos antes de que WordPress llegue a cargar, para que la protección no se pague en rendimiento.
- Firewall de tres capas: bloqueo previo a PHP, análisis en un MU-plugin y panel de administración.
- Detectores de ataques: SQLi, XSS, path traversal, escáneres, abuso de XML-RPC y de la REST API, con patrones afinados para no bloquear texto legítimo.
- Login blindado: freno a la fuerza bruta y sin enumeración de usuarios.
- Puntuación de riesgo: cada petición suma puntos y la acción depende del umbral alcanzado, con un modo sombra que sugiere el umbral para tu tráfico.
- Monitor de integridad: detecta archivos de código modificados, nuevos o eliminados en el núcleo, plugins y temas, y PHP en la carpeta de subidas.
- Chequeo de endurecimiento:
wp-config.php, errores visibles, listado de directorios, versión de PHP y más, con cómo corregirlo; HSTS y Content-Security-Policy en modo reporte. - Registro de actividad: quién hizo qué y cuándo en usuarios, contenido, plugins y ajustes.
- Rate limiting por IP, con escalada del bloqueo al rango cuando varias IPs del mismo /24 atacan.
- IP real detrás de CDN: Cloudflare (IPv4 e IPv6), Sucuri y proxies propios, sin que la IP pueda falsificarse con un header.
- Crawlers verificados por rDNS: Googlebot pasa, quien se hace pasar por Googlebot no.
- Tráfico en vivo y geolocalización opcional (ipinfo.io o MaxMind GeoLite2, por API o base MMDB local). Sin geolocalización el plugin funciona completo; sólo se pierden los datos de país/ASN.
- Reglas personalizadas, whitelist, exportación y notificaciones.
| Capa | Mecanismo | Momento | Qué hace |
|---|---|---|---|
| 0 | auto_prepend_file |
Antes de cualquier PHP del sitio | Descarta IPs y rangos bloqueados leyendo un archivo plano. Sin base de datos, sin WordPress. |
| 1 | MU-plugin | Después del núcleo, antes de plugins y temas | Corta las IPs bloqueadas, las rutas trampa y el exceso de peticiones antes de que carguen los plugins. |
| 2 | Plugin | Carga normal (init) |
Detectores de ataques, motor de riesgo y registro de tráfico y eventos; además el panel: dashboard, reglas, whitelist y configuración. |
Además de los detectores, que bloquean por sí solos ante un patrón claro, el motor de riesgo suma puntos por señales débiles de la petición y del comportamiento reciente del cliente (404 seguidos, logins fallidos, usuarios inexistentes, ritmo alto) y actúa según el total:
| Puntaje | Acción |
|---|---|
| 0–30 | Permitir |
| 31–50 | Registrar como riesgo bajo |
| 51 hasta el umbral de bloqueo | Registrar como riesgo medio |
| Desde el umbral de bloqueo (81 por defecto) | Bloqueo temporal |
| Desde el umbral permanente (101 por defecto) | Bloqueo permanente (0 = nunca) |
Los dos umbrales se configuran. El motor viene desactivado: el modo sombra puntúa sin bloquear y, en WP Seguro → Motor de riesgo, sugiere el umbral adecuado para el tráfico de tu sitio.
El detalle está en Capas del firewall y en la Referencia de reglas.
- Descargá el
.zipde la última release. - En WordPress, andá a Plugins → Añadir nuevo → Subir plugin.
- Subí el archivo, instalalo y activá WP Seguro.
- Completá el asistente de configuración inicial y revisá WP Seguro → Dashboard.
Desde la 0.7.0, las versiones nuevas llegan como cualquier actualización de WordPress, desde los releases de GitHub (detalles).
Important
Si el sitio está detrás de Cloudflare u otro proxy, revisá la configuración de CDN/Proxy antes de activar el bloqueo en producción. Con el proxy mal configurado, todo el tráfico parece venir de pocas IPs y el rate limiter puede bloquearlas.
| Mínimo | Recomendado | |
|---|---|---|
| WordPress | 6.0 | Última |
| PHP | 7.4 | 8.0+ |
| MySQL | 5.7 | 8.0 |
| MariaDB | 10.3 | 10.6+ |
Extensiones PHP: mbstring, json, mysqli.
- Instalación
- Configuración
- Endurecimiento del sitio
- Capas del firewall
- Referencia de reglas
- Reglas personalizadas
- Configuración de CDN/Proxy
- Comandos WP-CLI
- Solución de problemas
- Preguntas frecuentes
- Registro de cambios
Toda ayuda suma, y probar el plugin en tu sitio ya cuenta.
- ¿Encontraste un falso positivo o un error? Abrí un issue con los pasos para reproducirlo. Si es un bloqueo, incluí la URL y los parámetros que lo dispararon.
- ¿Querés aportar código? Nuevos detectores, mejoras de rendimiento, traducciones o documentación son bienvenidos por pull request.
- ¿Una vulnerabilidad de seguridad? No la publiques en un issue. Escribí directamente al autor a través de su perfil de GitHub.
git clone https://github.com/fabiomb/wp-secure.git
cd wp-secure
composer install
vendor/bin/phpunit --testsuite unitLos tests unitarios no necesitan una instalación de WordPress. Los de integración requieren el framework de tests de WordPress:
WP_TESTS_DIR=/ruta/a/wordpress-tests-lib vendor/bin/phpunit --testsuite integrationLas clases WPS_Foo_Bar viven en class-wps-foo-bar.php, dentro de includes/ y sus subcarpetas.
GPL-2.0-or-later. Creado por Fabio Baccaglioni.