Firewall de tres capas
Una capa previa a PHP vía auto_prepend_file, un MU-plugin que analiza antes que el resto de plugins y el panel de administración.
Versión 0.6.0 · 29 de septiembre de 2026
WP Seguro es un plugin de seguridad libre y de código abierto. Un firewall de tres capas bloquea bots, fuerza bruta, inyecciones y escaneos, y un monitor de integridad, un registro de actividad y un chequeo de endurecimiento te avisan si algo cambió en tu sitio.
14:02:11 PASS 190.x.x.24 GET /blog/ score 0
14:02:12 BLOCK 45.x.x.113 GET /?id=1'+UNION+SELECT sqli · L1
14:02:12 BLOCK 45.x.x.87 GET /.env trampa · 24 h
14:02:13 RANGE 45.x.x.0/24 3 IPs en 60 min rango · L0
14:02:13 LIMIT 103.x.x.9 POST /wp-login.php cuenta admin
14:02:14 PASS 66.x.x.66 GET /sitemap.xml rDNS ok
14:02:15 ALERT uploads/2026/09/foto.php.jpg integridad
Funciones
Frenar el ataque, cuidar las cuentas y enterarte si algo cambió. Todo se resuelve dentro de tu servidor: sin captchas, sin servicios externos y sin enviar tus datos a nadie.
Una capa previa a PHP vía auto_prepend_file, un MU-plugin que analiza antes que el resto de plugins y el panel de administración.
Inyección SQL, XSS, path traversal, escáneres, XML-RPC y REST API, también dentro de cuerpos JSON, con patrones afinados para no bloquear texto legítimo.
Quien pide /.env, /.git/ o una copia de wp-config.php es un scanner seguro: se bloquea al instante por 24 horas.
Límites por cliente, también para búsquedas, registros y recuperación de contraseña. Si tres IPs del mismo /24 caen en una hora, se bloquea el rango.
En IPv6 se limita y bloquea la red /64 del cliente, así rotar de dirección en cada petición ya no sirve para esquivar el firewall.
Cloudflare (IPv4 e IPv6), Sucuri y proxies propios, sin IPs falsificables por header. Verificación rDNS para que Googlebot pase y sus imitadores no.
Una botnet con miles de IPs contra admin choca con el límite por cuenta: sólo se acepta el login desde redes donde su dueño ya entró.
El mismo mensaje para usuario inexistente, email inexistente o contraseña incorrecta, en el login y en la recuperación de contraseña.
Campo trampa y tiempo mínimo firmado en el login y los comentarios. Frena bots sin captcha y sin molestar a nadie.
Mirá las sesiones abiertas de todos los usuarios, con IP y navegador, y cerrá la que no reconozcas. Límite opcional de sesiones por administrador.
Aviso por mail si aparece un administrador nuevo, se instala o activa un plugin, cambia el tema, se edita un archivo o alguien desactiva WP Seguro.
La fuerza bruta contra las contraseñas de aplicación de la REST API también cuenta para los límites de intentos.
Detecta archivos de código modificados, nuevos o eliminados en el núcleo, plugins, temas y drop-ins. Compara contenido, no fechas, y no alarma por actualizaciones.
Encuentra webshells en la carpeta de subidas, también con doble extensión, y puede bloquear su ejecución en Apache, LiteSpeed y nginx.
Diez verificaciones con cómo corregir cada una: editor de archivos, errores visibles, debug.log expuesto, listado de directorios, versión de PHP, HTTPS y más.
Content-Security-Policy en modo reporte, con los reportes recibidos en tu propio sitio y una política sugerida lista para aplicar.
Quién hizo qué, cuándo y desde qué IP: usuarios, contenido, plugins, temas, núcleo y ajustes, con el valor anterior y el nuevo.
Avisos por mail de archivos modificados, cambios de privilegios, logins desde IPs nuevas y cambios en la configuración.
Simulá los umbrales contra tu tráfico real antes de bloquear. El panel sugiere el umbral más bajo que sólo habría frenado atacantes confirmados.
Quién visita tu sitio en tiempo real, con país y ASN desde una base MMDB local. En sitios grandes, muestreo con peso para no escribir cada visita.
Bloquear, desbloquear, gestionar la whitelist, escanear integridad o revisar el endurecimiento desde la terminal con wp wps.
Creá reglas propias o generalas desde un evento observado. Whitelist, exportación e importación de la configuración.
¿Te bloqueaste? Con WPS_DISABLE_BLOCKING en wp-config.php o wp wps unblock volvés a entrar sin tocar la base de datos.
Escrituras de log en diferido, una sola consulta por contador y la whitelist cacheada en memoria. Lo que ya se sabe malo no toca la base de datos.
Novedades
Desde la 0.2.11 salieron nueve versiones, con más protección de cuentas, detección de intrusiones y herramientas para operar el sitio.
Monitor de integridad de archivos, PHP en uploads, chequeo de endurecimiento, HSTS y CSP, registro de actividad, escalada de bloqueos a rango, modo sombra guiado del motor de riesgo y muestreo del tráfico.
Límite de intentos por cuenta contra botnets, alertas de escalada de privilegios, gestión de sesiones activas y comandos WP-CLI.
Bloqueo por red en IPv6, rutas trampa, campo trampa en formularios, límites de búsqueda, registro y recuperación de contraseña, análisis de cuerpos JSON y cierre de la enumeración de usuarios.
Suspensión del bloqueo desde wp-config.php, Capa 0 al día con los desbloqueos, actualizaciones sin errores fatales y correcciones de seguridad.
Cómo funciona
Una petición atraviesa hasta tres capas. La mayoría del tráfico malicioso nunca llega a cargar WordPress.
Se ejecuta antes de cualquier código PHP del sitio mediante auto_prepend_file. Lee un archivo plano de IPs y rangos bloqueados y rechaza scripts en la carpeta de subidas: sin base de datos, sin WordPress.
Corre después del núcleo y antes de plugins y temas. Rutas trampa, detección de patrones, rate limiting, escalada a rango y puntuación de riesgo.
Login, formularios y sesiones, monitor de integridad, registro de actividad, endurecimiento, dashboard, reglas, whitelist y toda la configuración.
Suma puntos por señales débiles de una misma petición. Los dos umbrales de bloqueo son configurables, y el modo sombra te dice dónde ponerlos.
Instalar
.zip de la última versión.¿Tu sitio está detrás de Cloudflare u otro proxy? Revisá la guía de CDN/Proxy antes de activar el bloqueo en producción.
¿Preferís la terminal? Subí la carpeta wp-secure/ a wp-content/plugins/ y activalo con WP-CLI:
wp plugin activate wp-secure
wp wps status
| 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.
Documentación
Contribuir
WP Seguro se desarrolla en abierto. Toda ayuda cuenta: probarlo en tu sitio ya es una contribución.
¿Un falso positivo, un bloqueo inesperado o un error? Abrí un issue con los pasos para reproducirlo.
Abrir issue →Nuevos detectores, mejoras de rendimiento, traducciones o documentación. Los tests corren con PHPUnit.
Ver pull requests →Ayuda a que más gente encuentre el proyecto y a sostener su desarrollo.
★ en GitHub →Para desarrollar localmente:
git clone https://github.com/fabiomb/wp-secure.git
cd wp-secure
composer install
vendor/bin/phpunit --testsuite unit