Versión 0.6.0 · 29 de septiembre de 2026

El tráfico malicioso se frena antes de que WordPress arranque.

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.

  • WordPress 6.0+
  • PHP 7.4+
  • Sin servicios externos
  • Licencia GPL-2.0-or-later
wps-firewall.log
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

Protección seria, sin frenar tu sitio

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.

01 Bloquear ataques

⛨

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.

⌁

Detectores de ataques

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.

⚑

Rutas trampa nuevo

Quien pide /.env, /.git/ o una copia de wp-config.php es un scanner seguro: se bloquea al instante por 24 horas.

⇆

Rate limiting y rangos nuevo

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.

⁶

IPv6 sin atajos nuevo

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.

☁

IP real y crawlers verificados

Cloudflare (IPv4 e IPv6), Sucuri y proxies propios, sin IPs falsificables por header. Verificación rDNS para que Googlebot pase y sus imitadores no.

02 Proteger las cuentas

⚿

Login por cuenta nuevo

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ó.

◌

Sin enumeración de usuarios

El mismo mensaje para usuario inexistente, email inexistente o contraseña incorrecta, en el login y en la recuperación de contraseña.

⌧

Formularios sin bots nuevo

Campo trampa y tiempo mínimo firmado en el login y los comentarios. Frena bots sin captcha y sin molestar a nadie.

⎋

Sesiones activas nuevo

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.

⚠

Alertas de privilegios nuevo

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.

⚙

Application passwords

La fuerza bruta contra las contraseñas de aplicación de la REST API también cuenta para los límites de intentos.

03 Detectar intrusiones y endurecer

⧉

Monitor de integridad nuevo

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.

⛔

PHP en uploads nuevo

Encuentra webshells en la carpeta de subidas, también con doble extensión, y puede bloquear su ejecución en Apache, LiteSpeed y nginx.

☑

Chequeo de endurecimiento nuevo

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.

⛉

HSTS y CSP nuevo

Content-Security-Policy en modo reporte, con los reportes recibidos en tu propio sitio y una política sugerida lista para aplicar.

☰

Registro de actividad nuevo

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.

✉

Notificaciones

Avisos por mail de archivos modificados, cambios de privilegios, logins desde IPs nuevas y cambios en la configuración.

04 Operar con criterio

◔

Motor de riesgo con modo sombra nuevo

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.

◎

Tráfico en vivo

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.

›_

WP-CLI nuevo

Bloquear, desbloquear, gestionar la whitelist, escanear integridad o revisar el endurecimiento desde la terminal con wp wps.

✎

Reglas personalizadas

Creá reglas propias o generalas desde un evento observado. Whitelist, exportación e importación de la configuración.

↺

Recuperar el acceso

¿Te bloqueaste? Con WPS_DISABLE_BLOCKING en wp-config.php o wp wps unblock volvés a entrar sin tocar la base de datos.

⚡

Pensado para el rendimiento

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

De firewall a suite de seguridad

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.

  1. 0.6

    Detectar lo que ya entró

    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.

  2. 0.5

    Cuentas bajo control

    Límite de intentos por cuenta contra botnets, alertas de escalada de privilegios, gestión de sesiones activas y comandos WP-CLI.

  3. 0.4

    Menos bots, menos atajos

    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.

  4. 0.3

    Más sólido

    Suspensión del bloqueo desde wp-config.php, Capa 0 al día con los desbloqueos, actualizaciones sin errores fatales y correcciones de seguridad.

Registro de cambios completo →

Cómo funciona

Cuanto antes se decide, menos cuesta

Una petición atraviesa hasta tres capas. La mayoría del tráfico malicioso nunca llega a cargar WordPress.

  1. Capa 0

    Firewall PHP previo

    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.

    < 1 ms
  2. Capa 1

    MU-Plugin de análisis

    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.

    < 5 ms
  3. Capa 2

    Plugin y panel

    Login, formularios y sesiones, monitor de integridad, registro de actividad, endurecimiento, dashboard, reglas, whitelist y toda la configuración.

    admin

Motor de puntuación de riesgo

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

En marcha en dos minutos

  1. Descargá el .zip de la última versión.
  2. En WordPress, andá a Plugins → Añadir nuevo → Subir plugin.
  3. Subí el archivo, instalalo y activá WP Seguro.
  4. Completá el asistente de configuración y revisá el dashboard en WP Seguro → Dashboard.

¿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

Requisitos

MínimoRecomendado
WordPress6.0Última
PHP7.48.0+
MySQL5.78.0
MariaDB10.310.6+

Extensiones PHP: mbstring, json, mysqli.

Descargar v0.6.0 Todas las versiones →

Contribuir

Es software libre. Sumate.

WP Seguro se desarrolla en abierto. Toda ayuda cuenta: probarlo en tu sitio ya es una contribución.

Para desarrollar localmente:

git clone https://github.com/fabiomb/wp-secure.git
cd wp-secure
composer install
vendor/bin/phpunit --testsuite unit