Descripción
Seguridad Premium. Costo cero.
Vigilante ofrece características de seguridad para WordPress de calidad empresarial de forma totalmente gratuita. Sin versión premium, sin ventas cruzadas, sin características ocultas tras muros de pago.
Protege tu web con un paquete de seguridad completo: cortafuegos, identificación en dos pasos, protección contra ataques de fuerza bruta, cabeceras de seguridad, exploración de integridad de archivos, detección de plugins cerrados, detección de malware, gestión de usuarios, registro de auditoría de seguridad, modo bajo ataque, verificación de sus propios archivos y mucho más.
Una vez activado, Vigilante aplica inmediatamente reglas de cortafuegos contra ataques habituales (inyección SQL, XSS, inclusión de archivos), cabeceras de seguridad, supervisión de intentos de acceso, bloqueo de XML-RPC, ocultación de la versión de WordPress y protección de archivos sensibles (.htaccess, wp-config.php).
Preajustes de seguridad con un clic
Elige un preajuste y protégete al instante:
Estándar – Seguridad equilibrada adecuada para la mayoría de los sitios web. Activa todos los módulos con valores por defecto razonables que no interfieren con el funcionamiento normal del sitio.
Máxima seguridad – Ajustes más estrictos para sitios de alta seguridad. Límites de tráfico más estrictos, reglas CSP más rigurosas, avisos de administración obligatorios. Algunas configuraciones pueden requerir cierta adaptación.
Siempre puedes personalizar los ajustes individuales después de aplicar un preajuste.
Modo “Bajo ataque”
¿Tu sitio web está siendo objeto de un ataque activo? Activa el modo “Bajo ataque” con un solo clic y detén el tráfico malintencionado al instante:
- Desafío JavaScript: todos los visitantes deben pasar una verificación automática del navegador antes de acceder a tu sitio. Los navegadores auténticos lo resuelven en segundos, mientras que los bots quedan bloqueados por completo.
- Límite de tráfico agresivo: se limitan las solicitudes a 30 por minuto, con bloqueos de 15 minutos para los infractores.
- Restricción de métodos HTTP: solo se permiten GET, POST y HEAD. Se bloquean PUT, DELETE, PATCH, OPTIONS y TRACE.
- Bloqueo de agentes de usuario vacíos: se rechazan las solicitudes sin cabeceras de agente de usuario.
- Bloqueo total de XML-RPC durante el ataque
- Restricción de la API REST: solo los usuarios identificados pueden acceder a la API REST.
- Desactivación automática: El modo se apaga después de 4 horas para que nunca se te olvide que está activo
- Avisos por correo electrónico cuando se active y desactive el modo
- Cookies firmadas con HMAC: Los visitantes verificados reciben una cookie firmada para que solo vean el desafío una vez.
El modo “Bajo ataque” funciona de manera independiente de la configuración de tus preajustes. Tus ajustes habituales se conservan, y se restauran cuando se desactive este modo.
Identificación en dos pasos (2FA)
Agrega un segundo paso de verificación a tu acceso a WordPress:
- Aplicación de verificación (TOTP) – Google Authenticator, Authy, Microsoft Authenticator o cualquier aplicación compatible con TOTP
- Códigos por correo electrónico – Códigos de verificación únicos de 6 dígitos enviados por correo electrónico
- Configuración del código QR directamente en los perfiles de usuario
- 10 códigos de recuperación para acceso de emergencia si pierdes tu dispositivo
- Periodo de gracia configurable para que los usuarios configuren su aplicación de verificación
- Dispositivos de confianza – Permite a los usuarios omitir la identificación en dos pasos en dispositivos reconocidos durante 30 días
- Forzado basado en perfiles – requiere 2FA a administradores, editores o cualquier perfil
- Excluir a usuarios específicos de los requisitos de 2FA
- Herramienta de administración para restablecer el TOTP de los usuarios que hayan perdido su verificación
- Caducidad del código, límite de intentos y nombre del remitente del correo electrónico configurables
- Correos electrónicos de aviso a los usuarios cuando se activa el 2FA o se cambia de método
Protección con cortafuegos
Bloquea peticiones malintencionadas antes de que lleguen a WordPress:
- Bloqueo de inyecciones SQL
- Evitar ataques XSS (Cross-Site Scripting)
- Protección frente a inclusión de archivos (LFI/RFI)
- Bloqueo de exploración de directorios
- Filtrado de cadenas de consulta malintencionadas (recoge patrones sospechosos genéricos que los bloqueadores específicos no detectan)
- Detección y bloqueo de bots sospechosos
- Bloquea peticiones con agente de usuario vacío
- Limitación de peticiones para evitar ataques DDoS y de fuerza bruta, con bloqueos progresivos opcinales
- Gestión de lista blanca y lista negra de IPs (IPv4 e IPv6, con rangos CIDR y comodines)
- Lista blanca y lista negra de User-Agent con coincidencia parcial.
- Control de detección de IP de visitantes: Lee la IP real directamente desde la conexión (valor por defecto a prueba de suplantaciones) o desde una cabecera de proxy cuando se está detrás de Cloudflare, un proxy inverso o un balanceador de carga, con un aviso al administrador si se detecta un proxy pero no está configurado.
- Restricción de métodos HTTP
- Protección de archivos del servidor mediante .htaccess: bloquea el acceso directo a wp-config.php, .htaccess, wp-includes/ y archivos sensibles (.log, .sql, .bak, debug.log, readme.html, etc.) y, opcionalmente, el acceso externo a wp-cron.php
- Bloquea la ejecución de PHP en /uploads (uno de los métodos de ataque tipo post más habituales)
- Desactiva la navegación de directorios
Seguridad en el acceso
Frena los intentos de acceso no autorizados:
- Límite de intentos de inicio de sesión con umbrales configurables
- Bloqueos progresivos – bloqueos más largos para los infractores reincidentes
- URL de inicio de sesión personalizada – oculta wp-login.php de los bots
- Avisos de cambio de URL de inicio de sesión a todos los usuarios del área de admnistración
- Ocultar mensajes de error en el inicio de sesión – no reveles nombres de usuario válidos
- Control de XML-RPC: Déjalo activo, bloquea solo los métodos de pingback (recomendado, ya que cierra la vía de propagación mientras la aplicación móvil y Jetpack siguen funcionando), o desactívalo por completo.
- Control de contraseñas de aplicación
- Aviso por correo electrónico cuando se bloquea una IP por superar el límite de intentos de acceso
- Avisos por correo electrónico de inicios de sesión de admins
- Lista blanca de IPs para ubicaciones de confianza
Seguridad de usuarios
Protección integral de las cuentas de usuarios:
- Bloquea nombres de usuario inseguros (admin, test, root, etc.) en los nuevos registros
- Advierte de usuarios existentes con nombres de usuario inseguros para que puedas renombrarlos o eliminarlos
- Bloquea la búsqueda de autores — Intercepta las URLs del tipo
?author=Npara que WordPress no las redirija a/author/USERNAME/y no se filtre el slug de acceso. - Forzar contraseñas seguras con longitud mínima
- Caducidad de contraseñas con intervalos configurables
- Historial de contraseñas – evita la reutilización de contraseñas anteriores
- Forzar restablecimiento de contraseñas – Por usuarios específicos, por perfilo o a todos los usuarios (recuperación después de un hackeo)
- Límites de sesión – controla los inicios de sesión simultáneos por usuario
- Gestión de sesiones – ve y cierra sesiones activas
- Verificación por correo electrónico de los nuevos registros
- Procedimiento de aprobación de registros – aprueba manualmente los nuevos usuarios
- Exploración de cuentas de admin – alertas ante nuevos admins, cambios de correo electrónico, cambios de contraseña, escalado de privilegios
- Protección del nombre a mostrar – Impide revelar públicamente el nombre de usuario con el que se accede
Cabeceras de seguridad
Consigue una calificación A de seguridad:
- Content Security Policy (CSP) con una política por defecto compatible con WordPress y el modo Report-Only para realizar pruebas de forma segura antes de aplicarla
- HSTS (HTTP Strict Transport Security) con includeSubdomains y opciones de precarga
- X-Frame-Options – evita el clickjacking
- X-Content-Type-Options – evita la detección de MIMEs
- Referrer Policy control
- Política de permisos (cámara, micrófono, geolocalización, pagos, USB)
- Políticas Cross-Origin (COEP, COOP, CORP)
- Forzado de HTTPS con corrección automática de contenido mixto
- Ocultación de la huella digital del servidor — Neutraliza la cabeceras
Server:,X-Powered-Byy otras cabeceras de huella digital de las respuestas
Supervisión de integridad de archivos
Detecta plugins vulnerables y cambios no autorizados en tus archivos:
- WordPress core against official checksums, plus files added to wp-admin and wp-includes
- Plugins against WordPress.org checksums, themes against their WordPress.org package
- Whatever has no official copy (other plugins and themes, must-use plugins, drop-ins, the rest of wp-content) searched for hidden code
- Los archivos de configuración críticos (wp-config.php, .htaccess) se supervisan comparándolos con la versión de referencia, detecta inyecciones de código incluso en archivos sin suma de comprobación oficial
- Closed and removed plugins detection: a daily check against WordPress.org flags any installed plugin that was closed or silently removed, with per-plugin Ignore
- Vista de diferencias lína a línea de los cambios, con un flujo de trabajo de aprobación por archivo
- Detección de archivos adicionales en plugins y temas (archivos que no se encuentran en la distribución original)
- Uploads scanning for PHP, double extensions and .htaccess files
- What each finding usually is and what to do about it
- Exploración del directorio raíz en busca de archivos PHP que no son de la instalación (una forma común de ataque)
- Detección de ofuscación por concatenación de cadenas
- Niveles de aviso configurables y lista de ignorados para descartar archivos conocidos
- Rutas y extensiones de archivo excluidas
- Exploraciones automáticas programadas (a diario, semanalmente)
- Alertas por correo electrónico con formato HTML que incluyen secciones con el nivel de gravedad, entre las que se encuentra una sección específica para los plugins cerrados
Autoprotección
Un plugin de seguridad manipulado es peor que no tener ninguno, porque sigue indicando que todo va bien. Vigilant verifica sus propios archivos comparándolos con las sumas de comprobación que publica WordPress.org, un manifiesto SHA-256 incluido con el plugin y una huella digital de dicho manifiesto almacenada en la base de datos:
- Al inicio de cada exploración de integridad, justo después de cada actualización y cuando la versión en disco cambia fuera del actualizador de WordPress
- Cuando hay archivos modificados, ausentes y agregados, enlaces simbólicos o un manifiesto reemplazado o borrado, se informa por correo electrónico con los ajustes por defecto
- Sus propias tareas programadas se vigilan y se vuelven a programar si algo las elimina
- Su propio bloque en “Integridad de archivos” y un análisis en la “Comprobación de seguridad”, con lo que significa cada hallazgo y cómo solucionarlo, y sin forma de desactivarlo
- Reparación con un solo clic que reinstala Vigilant desde WordPress.org, conservando tus ajustes, tablas y registros.
Detecta manipulaciones, no vulnerabilidades en el propio Vigilant. El archivo SECURITY.md explica qué cubre, qué no cubre y cómo verificar tu instalación desde fuera del servidor.
Auditoría de seguridad
Haz seguimiento de todo lo que pasa en tu sitio:
- Intentos de inicio de sesión correctos y fallidos
- Eventos de la identificación en dos pasos
- Cambios en cuentas de usuarios (creación, borrado, cambios de perfil)
- Modificaciones de contenido (entradas, páginas)
- Activaciones/desactivaciones de plugins y temas
- Eventos de seguridad y amenazas bloqueadas
- Seguimiento y filtrado de métodos de solicitud HTTP (GET, POST, PUT, DELETE).
- Ventana emergente con detalles de registro mejorados, con secciones agrupadas y acciones rápidas.
- Agrega con un solo clic una IP o un User-Agent a la lista blanca/lista negra del cortafuegos desde las entradas del registro.
- Enlaces de búsqueda directa de IP a AbuseIPDB.
- Período de retención configurable, exportación a CSV y filtrado por tipo de evento, gravedad, método de solicitud o fecha
Alertas de auditoría – Recibe un correo electrónico cuando el registro de auditoría señale algo que merezca tu atención. Están desactivadas por defecto y se configuran en la auditoría de seguridad:
- Alertas inmediatas cuando se registra un evento grave, por gravedad mínima (un nuevo administrador, un plugin cerrado o un aumento de privilegios se registran como críticos)
- Alertas con umbral cuando se produce un pico en una categoría (bloqueos del cortafuegos, errores de acceso, eventos de usuarios, plugins, integridad de archivos, seguridad, sistema y contenido) durante un intervalo de 30 minutos, 1, 6 o 24 horas, contando únicamente los eventos de advertencia y críticos, para que la actividad rutinaria nunca las active
- Un intervalo de espera antirrepetición evita que una avalancha de eventos se convierta en un sinfín de avisos que inunden tu bandeja de entrada
- Las alertas activas aparecen en “Ajustes y herramientas”, el escritorio, la puntuación de configuración y la comprobación de seguridad
- Botón “Enviar correo electrónico de prueba” para confirmar el envío
Comprobación de seguridad
Auditoría de seguridad bajo demanda integrada en el escritorio. Sin servicios externos, sin cuentas, sin claves API – Todo se ejecuta en tu servidor:
- More than 50 checks across 6 categories: SSL/TLS, HTTP Headers, WP Exposure, Access & Auth, Sensitive Files and Internal Checks
- Puntuación de 0 a 100 con calificación de A a E, además de un desglose por categorías y detalles explicativos para cada comprobación
- 16 comprobaciones internas exclusivas que no se pueden realizar desde el exterior: estado de fin de vida útil de PHP, actualizaciones pendientes, plugins inactivos, plugins cerrados o eliminados, autoprotección de Vigilante, permisos de archivos, detección de salts por defecto, prefijo de tabla
wp_, nombre de usuarioadmin, administradores sin 2FA, estado de los módulos, errores de auditoría recientes, resultado de la última exploración de integridad de archivos y si están configuradas las alertas de auditoría - Verificación de reputación basada únicamente en DNS con Spamhaus ZEN, Barracuda BRBL y SpamCop SCBL (informativa — Los listados aparecen marcados, pero no afectan a la puntuación)
- Exploración en dos fases: Las comprobaciones rápidas locales aparecen en menos de un segundo, las comprobaciones remotas aparecen a medida que se completan
- Exploración semanal automática con alerta por correo electrónico opcional si la puntuación baja en 10 o más puntos o si una nueva comprobación crítica empieza a dar fallos
- Historial de 30 exploraciones con gráfico de tendencia y puntos de referencia
- Enlace de “Ir al ajuste” que se activa cada vez que falla una comprobación, y que lleva directamente al campo concreto de Vigilante que lo soluciona
- Diagnóstico inteligente de cabeceras que informa “configurado pero no se está sirviendo” cuando una caché o una CDN anula tus cabeceras
Refuerzo de WordPress
Protección multinivel en WordPress — Administración, contenido, cabecera, feeds y base de datos:
- Protege la administración: Desactiva el editor integrado de plugins y temas, impide instalaciones y actualizaciones desde el área de administración y fuerza HTTPS en esta área. Compatible con cualquier configuración de alojamiento, respetando los valores ya establecidos y sin sustituirlos nunca
- Desactiva el cron interno de WordPress para el recuento de visitas cuando ya tengas configurada una tarea cron real en el servidor
- Aviso en el escritorio cuando el modo de depuración sigue activado en producción, para que los mensajes de error nunca lleguen a los visitantes
- Oculta tu versión de WordPress en todos los lugares donde pueda aparecer: encabezado HTML, feeds RSS y Atom y, si quieres, en todas las URL de scripts y hojas de estilo de la parte visible del sitio (quitando solo la versión de WordPress, sin afectar a la gestión de caché de los plugins y temas)
- Eliminación diaria automática de archivos readme.html, license.txt y licencia.txt del directorio raíz de WordPress, los cuales podrían exponer tu versión
- Limpieza del encabezado HTML — Elimina el enlace RSD, el manifest de Windows Live Writer, la cabecera de enlaces cortos y el enlace de descubrimiento de la API REST
- Refuerzo de la base de datos — Comprobación de seguridad del prefijo de las tablas por defecto
wp_, y herramienta de renombrado con un solo clic, con copia de seguridad completa antes del cambio - Seguridad en los comentarios — Campo señuelo contra bots de spam, moderación obligatoria para todos los comentarios nuevos, cierre de comentarios en entradas antiguas, desactivación de pingbacks y trackbacks
- Gestión de feeds — Desactivar por completo los feeds RSS y Atom, o desactivarlos solo cuando el sitio no tenga contenido publicado
Seguridad de la API REST
Controla el acceso a la API en tu sitio:
- Tres modos de acceso: público (comportamiento por defecto de WordPress), solo para usuarios identificados (cierra el acceso a la API a visitantes anónimos) o selectivo (listas personalizadas de usuarios permitidos y bloqueados)
- Bloquea la enumeración de usuarios a traves de
/wp-json/wp/v2/users - Protege cualquier lista de variables sensibles contra accesos anónimos
- Opciones de compatibilidad por plugin para que el modo identificado no afecte a la parte pública de la web: WooCommerce, Contact Form 7, Gravity Forms, WPForms, Elementor, Jetpack. Las variables de oEmbed y la salud del sitio siguen estando disponibles por defecto
Herramientas de seguridad
Utilidades incluidas:
- Copia de seguridad de la base de datos: descarga una copia de seguridad completa o parcial de la base de datos en formato ZIP con selección de tablas.
- Cambio del prefijo de la base de datos: cambie el prefijo por defecto wp_ por un prefijo aleatorio seguro.
- Ajustes de exportación/importación – Transfiere tu configuración entre sitios
- Configuration Backup – Download wp-config.php, .htaccess and robots.txt as a ZIP
- Restablecer valores por defecto – Empieza desde cero con un solo clic
Seguro por principios
Vigilant validates .htaccess and wp-config.php before writing to them, and keeps no copy of them, because they hold your database password: download a backup from Settings & Tools first.
Deactivating removes its blocks from both files and brings back the lines it had commented out. Switch Under Attack mode off before deactivating.
Vigilant también revisa sus propios archivos y te explica cómo puedes comprobarlos tú mismo: cada versión incluye un archivo MANIFEST.sha256 que se puede verificar con sha256sum, y WordPress.org publica las mismas sumas de comprobación para que puedas compararlas.
¿Por qué usar Vigilante?
La mayoría de los plugins de seguridad para WordPress reservan sus mejores funcionalidades para los planes de pago. Vigilante te ofrece todo desde el principio — Sin planes premium, sin restricciones de características, sin ventas dirigidas. Cortafuegos, identificación en dos pasos con aplicación de verificación, cabeceras de seguridad, integridad de archivos, registro de auditoría, comprobación de seguridad con alertas semanales en caso de bajada y mucho más. Todo gratis, actualizándose constantemente y siguiendo los estándares de programación de WordPress.
Disponemos de una comparación detallada de las funcionalidades de Vigilante respecto a otros populares plugins de seguridad (Wordfence, Solid Security, AIOS, Sucuri, SG Security). Descubre qué ofrece cada uno en su versión gratuita y en qué aspectos Vigilante cubre carencias.
Soporte
¿Necesitas soporte privado o un desarrollo personalizado?
¿Necesitas ayuda individualizada, resolución de problemas prioritaria o una funcionalidad, integración o adaptaciones personalizadas creadas específicamente para tu sitio? Ofrezco soporte privado y desarrollos personalizados. Solo tienes que contactarme y decirme qué necesitas.
¿Necesitas ayuda o tienes sugerencias?
¿Te gusta el plugin? ¡Déjanos un comentario de 5 estrellas y así ayudas a que lo conozcan otros!
Acerca de Ayuda WordPress
Somos especialistas en plugins de optimización de seguridad, SEO, IA y rendimiento para WordPress. Creamos herramientas que solucionan problemas reales a los propietarios de sitios WordPress manteniendo los más altos estándares de programación y requisitos de accesibilidad.
Capturas de pantalla










Instalación
- Sube los archivos del plugin al directorio
/wp-content/plugins/vigilante/, o instálalo directamente la pantalla de plugins de WordPress. - Activa el plugin a través del menú ‘Plugins’ en WordPress
- Ve a ‘Vigilante’ en el menú de administración
- Aplica un preajuste de seguridad o personaliza los ajustes de cada módulo
Requisitos:
- WordPress 6.2 o superior
- PHP 7.4 o superior
- Servidor Apache o LiteSpeed (para características de .htaccess)
- Certificado SSL recomendado para HSTS
FAQ
-
¿Este plugin ralentizará mi sitio?
-
No. Vigilante está optimizado para ofrecer un rendimiento óptimo. El cortafuegos utiliza una eficiente comparación de patrones, las consultas a la base de datos se almacenan en caché con transitorios y las reglas .htaccess se ejecutan a nivel del servidor antes incluso de que se cargue PHP.
-
¿Qué pasa cuando activo el plugin?
-
Vigilant applies its default settings: all modules on, with balanced values for most sites. On Apache and LiteSpeed that writes two blocks to .htaccess, and it writes one block of constants to wp-config.php.
If wp-config.php already defines DISALLOW_FILE_EDIT, DISALLOW_FILE_MODS, FORCE_SSL_ADMIN, FORCE_SSL_LOGIN, DISABLE_WP_CRON, WP_DEBUG, WP_DEBUG_LOG, WP_DEBUG_DISPLAY or SCRIPT_DEBUG, Vigilant comments that line out, marks it and sets the value from its own settings in WP Hardening. If you rely on one of them, check that tab after activating. Your lines come back when you deactivate.
Vigilant keeps no copy of those two files. If you want one, make it before activating.
-
¿Qué pasa cuando desactivo el plugin?
-
Vigilant removes its Protection and Security Headers blocks from .htaccess, removes its constants from wp-config.php, brings back the lines it had commented out there and clears its scheduled tasks.
Two things to know:
- Switch Under Attack mode off first. Its .htaccess block is removed when the mode ends, not on deactivation.
- If you delete the plugin folder by FTP instead of deactivating, nothing is reverted: remove the blocks between the Vigilante markers by hand.
-
¿Cómo funciona la identificación en dos pasos?
-
Vigilante ofrece dos métodos de identificación en dos pasos (2FA). Con aplicación de verificación (TOTP), debes escanear un código QR en tu perfil para vincular una aplicación como Google Authenticator o Authy, y luego introducir un código de 6 dígitos de la aplicación cada vez que inicies sesión. Con los códigos por correo electrónico recibirás un código de un solo uso por correo electrónico tras introducir tu contraseña. Si lo activa el administrador del sitio, puedes marcar tu dispositivo como de confianza para saltarte la identificación en dos pasos durante 30 días.
-
¿Qué pasa si pierdo mi teléfono o el acceso a la aplicación de verificación?
-
Al configurar el TOTP de Vigilante, el plugin genera 10 códigos de recuperación. Puedes utilizar cualquiera de ellos como sustituto puntual del código de identificación. Si te quedas sin códigos de recuperación, un administrador puede restablecer tu TOTP desde los ajustes del plugin.
-
¿Qué pasa si no recibo el código 2FA por correo electrónico?
-
Comprueba primero tu carpeta de correo no deseado. Puedes hacer clic en “Reenviar código” en el formulario de verificación. Los códigos caducan tras 10 minutos por defecto. Si el problema persiste, un administrador puede desactivar temporalmente la identificación en dos pasos desde los ajustes del plugin.
-
¿Puedo cambiar entre correo electrónico y aplicación de verificación?
-
Sí. Ve a “Seguridad en el acceso > Identificación en dos pasos” y cambia el método de verificación. Si están activos los avisos, los usuarios afectados recibirán un correo electrónico en el que se explica el nuevo método y cómo configurarlo.
-
¿Qué perfiles de usuario requieren 2FA?
-
Por defecto, la identificación en dos pasos (2FA) se aplica a los administradores y editores. Puedes personalizar qué perfiles requieren 2FA en los ajustes de seguridad del inicio de sesión y excluir a usuarios específicos individualmente.
-
¿Cómo puedo recuperarme si me han bloqueado el acceso?
-
Acceda a tu sitio web a través de FTP/SFTP y cambia el nombre de la carpeta del plugin para desactivarlo temporalmente, o elimina las filas de la tabla
vigilante_login_attemptscorrespondientes a tu dirección IP en la base de datos. -
¿El cortafuegos bloqueará a los usuarios legítimos?
-
El cortafuegos está configurado para permitir el funcionamiento normal de WordPress, incluyendo el editor de bloques, la API REST y los maquetadores más populares. Si experimentas problemas puedes agregar direcciones IP específicas a la lista blanca o ajustar los umbrales de limitación de tráfico.
Block Bad Bots also stops SEO crawlers (Ahrefs, Semrush, Majestic, Screaming Frog) and command line clients (curl, wget, python-requests). To let one of them through, add its name to the User-Agent Whitelist.
-
Why is a blocked request missing from the Security Audit?
-
Requests are blocked in two places:
- Rules in .htaccess (bad bots, bad query strings, unusual HTTP methods, protected files) answer 403 before WordPress loads, so nothing is logged.
- The PHP firewall logs what it blocks. “Bad bot blocked” shows the entry of the list that matched; the full User-Agent is in its own column.
A page served by a page cache or a CDN reaches neither. Read the log as a floor, not as a count of every attack.
-
¿Puedo usarlo con otros plugins de seguridad?
-
Aunque Vigilante funciona de forma independiente, ejecutar varios plugins de seguridad puede provocar conflictos. Recomendamos probar primero en un entorno de pruebas si necesitas combinar soluciones de seguridad.
-
¿Funciona con plugins de caché?
-
Sí. Vigilante es compatible con los plugins de caché más populares. El cortafuegos se ejecuta antes que las capas de caché, y las reglas .htaccess no interfieren con los mecanismos de caché.
-
¿Funciona con WooCommerce?
-
Sí. Vigilante incluye ajustes de compatibilidad para WooCommerce. El módulo de seguridad REST API permite automáticamente las variables de WooCommerce, y el cortafuegos no bloqueará las conexiones de la pasarela de pago.
-
¿Cómo puedo comprobar mis cabeceras de seguridad?
-
Usa la herramienta de prueba de cabeceras integrada en la pestaña “Cabeceras de seguridad” o visita securityheaders.com con la URL de tu sitio para obtener una calificación de seguridad.
-
¿Qué es la comprobación de seguridad?
-
Security Check is an on-demand audit built into the Dashboard. It runs more than 50 checks across 6 categories (SSL/TLS, HTTP headers, WordPress exposure, access and authentication, sensitive files, and internal checks) and returns a 0–100 score with an A–E grade. Unlike external online scanners, it runs entirely on your server and has access to 16 exclusive internal checks: PHP end-of-life status, pending updates, closed/removed plugins, Vigilant self-protection, file permissions, default salts detection, administrators without 2FA enrolled, and more.
-
¿La comprobación de seguridad en vía mis datos a algún servicio externo?
-
No. All checks run on your server. The only external traffic is three DNS lookups against public blacklists (Spamhaus, Barracuda, SpamCop) for the reputation category: standard DNS queries with no authentication, no API keys, and nothing sent beyond your site’s IP address.
-
What does the Security Check score measure?
-
It adds the points of every check that passes. Some checks test the live site: HTTPS, the headers the browser receives, files that should not be reachable. Others read a Vigilant setting, such as the custom login URL, the login attempt limit or two-factor, and tell you whether it is on, not whether a CDN or your host changes the result. The Configuration Score on the Dashboard only looks at settings, so the two numbers can differ.
-
¿Cuán a menudo debería realizar la comprobación de seguridad?
-
Ejecútala manualmente tras cualquier cambio importante (actualización de un plugin, migración de servidor, configuración de un nuevo perfil de usuario). Para una supervisión continua activa la exploración automática semanal desde el widget. Solo recibirás un correo electrónico si la puntuación baja 10 puntos o más, o si una nueva comprobación crítica empieza a fallar — así que no recibirás spam de exploraciones rutinarias.
-
¿Qué es la caducidad de contraseñas?
-
You can require users to change their passwords after a set number of days (30, 60, 90, etc.). Users are warned before it expires. Once it does, they are taken to their profile to set a new one before they can do anything else. Password history prevents reusing recent passwords.
-
¿Qué es la aprobación de registros?
-
Cuando está activada, los nuevos registros de usuarios requieren la aprobación manual de un administrador antes de que la cuenta se active. Los usuarios pendientes no pueden iniciar sesión hasta que sean aprobados. Puedes configurar el rechazo automático después de un número determinado de días.
-
¿Qué hace la verificación por correo electrónico?
-
Los nuevos usuarios deben verificar su dirección de correo electrónico haciendo clic en un enlace antes de que su cuenta se active. Esto evita registros falsos y garantiza que la información de contacto sea válida.
-
¿Cómo funcionan los límites de sesión?
-
Puedes limitar el número de sesiones simultáneas que puede tener cada usuario. Cuando se alcanza el límite se bloquea el nuevo inicio de sesión o se cierra la sesión más antigua, dependiendo de tu configuración.
-
¿Puedo exportar el registro de auditoría de seguridad?
-
Sí. El registro de la auditoría de seguridad se puede exportar a formato CSV para su análisis externo o para la elaboración de informes de cumplimiento. También puedes filtrar los registros por tipo de evento, usuario o intervalo de fechas antes de exportarlos.
-
Which events are sent by email?
-
Every event is logged as Info, Warning or Critical. By email you get:
- Security Audit alerts: Critical events by default, such as a closed plugin. Choose “Warning and Critical” to get more.
- Admin monitoring, in Users: a new administrator, a change of role to administrator and changes to an administrator’s email or password. Each has its own checkbox.
- File Integrity: the findings of each scan, according to the level you chose.
- Self-protection: always, when Vigilant’s own files change.
-
¿Qué archivos revisa el escáner de integridad?
-
It checks:
- WordPress core, against the checksums WordPress.org publishes, plus any file added to wp-admin or wp-includes.
- Plugins from WordPress.org, against their checksums.
- Themes from WordPress.org, against the package WordPress.org publishes for the installed version. It is downloaded once per version.
- In both, files that changed, files that are missing and PHP files that are not in the published copy.
- Plugins and themes from anywhere else, must-use plugins and drop-ins (advanced-cache.php, object-cache.php and the like). There is no official copy of them, so they are searched for obfuscated code.
- The uploads directory, for PHP and other scripts, double extensions, .htaccess files and PHP configuration files.
- The other folders of wp-content (languages, upgrade and the like), for hidden code in their PHP files, unless they are in Excluded Paths. A translation file has to hold text and nothing else.
- The site root, wp-content and the plugins folder, for loose files that do not belong there, backups left within reach and a .user.ini or php.ini that loads another file.
- wp-config.php and .htaccess, for any change since you last approved them.
The results name what could not be compared. For those, a clean result means no hidden code was found, not that every file is the original one. A PHP file too large to be searched (over 8 MB) is listed as not searched.
-
What do the file integrity findings mean?
-
- Modified: the file does not match the copy on WordPress.org. Usually an update that did not finish or a manual edit. Reinstalling the plugin, theme or WordPress fixes it.
- Suspicious: code where none is expected (PHP in uploads or in the site root) or obfuscated code. Real infections land here, and so do the cache or template files some plugins generate.
- Extra: a file that WordPress, the plugin or the theme does not ship. Often legitimate. A copy of wp-config.php or a database dump in the site root should be moved out.
- Critical config: wp-config.php or .htaccess changed since you last approved them.
- Closed or removed: WordPress.org closed the plugin. Replace it.
-
I got an email saying wp-config.php or .htaccess changed. Was I hacked?
-
Usually not. Cache, security and redirection plugins rewrite their own blocks in those files, often on every update, and Vigilant reports every change it did not make itself.
Open File Integrity, press Review changes and read the lines. If they belong to a plugin you use, press Approve: that records the current content as the reference and does not touch the file. Lines you cannot explain need a closer look, above all the ones that load a file (auto_prepend_file, include) or send requests to a PHP file.
You get that email once per change, not after every scan. The change stays listed in File Integrity until you approve it.
-
The scan keeps reporting files that are fine. What can I do?
-
- Ignore hides one file.
- For a folder where a plugin keeps generating PHP (compiled templates, caches), add the folder to Excluded Paths, for example wp-content/uploads/cache.
- If the scan says it ran out of time in a folder of wp-content, such as a very large cache, add that folder to Excluded Paths too.
- A .htaccess inside uploads that only denies access protects that folder, and is not reported. WooCommerce writes several.
-
What does Vigilant write to .htaccess and wp-config.php?
-
On Apache and LiteSpeed, two blocks in .htaccess, between the lines
# BEGIN Vigilante Protectionand# END Vigilante Protection, and# BEGIN Vigilante Security Headersand# END Vigilante Security Headers. While Under Attack mode is on there is a third one,# BEGIN Vigilante Under Attack.In wp-config.php, one block between
/* BEGIN Vigilante Security Constants */and/* END Vigilante Security Constants */, and the prefix// [VIGILANTE_ORIGINAL]on any line of yours that defined one of the same constants.Vigilant writes these blocks when you save its settings and after it updates, not in between. If another plugin or a person removes one, save that tab again to write it back.
-
He actualizado desde una versión en la que el archivo wp-config.php se almacenaba en la base de datos. ¿Hay que hacer algo más?
-
Las versiones anteriores guardaban una copia del archivo wp-config.php en una opción para que el análisis de integridad pudiera mostrar qué líneas habían cambiado, y esa copia contenía la contraseña de la base de datos y las ocho claves de autenticación y sales. La actualización elimina esa copia, pero ninguna actualización puede revertir una filtración que ya se haya producido. Por lo tanto, si tu base de datos, o cualquier copia de seguridad de la misma, pudiera haber sido leída por otra persona mientras esa copia estaba almacenada, sustituye las ocho claves y sales de tu archivo wp-config.php por otras nuevas obtenidas del servicio de claves secretas de WordPress.org, y cambia la contraseña de la base de datos si tu proveedor de alojamiento te lo permite. Al sustituir las sales, se cerrará la sesión de todos los usuarios, incluido tú mismo, que es precisamente el objetivo de hacerlo.
-
Does a scan always check the whole site?
-
Not on a very large one. A scan runs for 60 seconds at most and starts from the beginning each time. With many plugins, a large uploads folder or a large cache, it may not reach every plugin and theme, and it is the same part that is left out on every scan.
- File Integrity says when the last scan was partial, and names the plugins, the themes and the areas it did not reach. The scan email says it too.
- Security Check does not count a partial scan as a clean one.
- If the server stops the scan before it ends, or WordPress does not run its scheduled tasks, nothing is stored. File Integrity and Security Check then say that no scan has finished since the date shown.
- To check what was left out, File Integrity lists the folders the scan did check: add them to Excluded Paths, run a scan by hand, and take them out again.
- While the whole folder of a plugin or of a theme, or the uploads folder, is in Excluded Paths, File Integrity and Security Check keep saying so: no scan looks inside it.
- Adding large folders that do not need checking to Excluded Paths leaves more time for the rest.
-
¿Con qué frecuencia se ejecuta la auditoría de archivos?
-
You can configure automatic scans to run daily or weekly. You can also run manual scans at any time. Email notifications support three levels: every finding, serious findings only (suspicious and extra files, changes in wp-config.php or .htaccess and closed plugins), or disabled. The email goes out when a scan finds something new, so a finding you were already told about is not repeated.
-
¿Cómo puedo saber si el propio Vigilant no ha sido manipulado?
-
Vigilante verifica sus propios archivos contra las sumas de verificación que WordPress.org publica para tu versión, el archivo MANIFEST.sha256 incluido con el plugin y una huella de ese manifiesto guardada en tu base de datos. El resultado aparece en “Integridad de archivos”, con los resultados de la última exploración, y en la “Comprobación de seguridad”. Para comprobarlo desde fuera de WordPress, ejecuta
wp plugin verify-checksums vigilante, ophp bin/verify-manifest.phpdentro de la carpeta del plugin, que además informa de los archivos agregados y acepta los finales de línea reescritos por el proveedor de alojamiento. SECURITY.md lista todas las opciones. -
¿Qué es el archivo MANIFEST.sha256?
-
Una lista de la suma de verificación SHA-256 de cada archivo del plugin, en el formato estándar de la herramienta sha256sum, generada como último paso de cada versión. Es lo que permite a Vigilante, y a ti, detectar un archivo modificado incluso cuando no se puede contactar con WordPress.org. readme.txt y changelog.txt no figuran en ella, porque WordPress.org permite actualizarlos sin una nueva versión.
-
¿Detecta la autoprotección vulnerabilidades en Vigilante?
-
No. Detecta que los archivos de Vigilante han sido modificados, borrados o agregados, no fallos en su código. Las vulnerabilidades se corrigen en nuevas versiones, así que mantén Vigilante actualizado e informa de cualquiera que encuentres como explica SECURITY.md.
-
¿Cuál es la diferencia entre los preajustes estándar y máximo?
-
El nivel estándar aplica ajustes equilibrados adecuados para la mayoría de los sitios. El nivel máximo aplica reglas más estrictas: límites de tráfico más bajos, políticas de CSP más estrictas, avisos de administración obligatorios, límites de sesión y un refuerzo más agresivo. El nivel máximo puede requerir adaptaciones para sitios con funcionalidades complejas.
-
¿Dónde se almacenan las copias de seguridad?
-
Nowhere on the server. The configuration backup (wp-config.php, .htaccess and robots.txt) is a ZIP built on the fly and sent to your browser, and Vigilant keeps no copy of those files, because they hold your database password and other secrets. A database backup you download is generated as a temporary ZIP with an unguessable name and removed right after the download.
-
¿Qué es el modo Bajo ataque?
-
El modo “Bajo ataque” es una característica de emergencia que puedes activar cuando tu sitio web está sufriendo un ataque activo. Agrega un desafío JavaScript que los navegadores auténticos resuelven automáticamente en unos segundos, mientras que los bots y los scripts automatizados quedan bloqueados por completo. También aplica una limitación de velocidad agresiva, bloquea los métodos HTTP restringidos y restringe el acceso a la API.
-
¿El modo “Bajo ataque” afectará a los usuarios que hayan iniciado sesión?
-
No. Los usuarios que han iniciado sesión, las páginas de administración, las tareas cron, las solicitudes AJAX y la página de inicio de sesión están excluidos del desafío JavaScript. Solo los visitantes no identificados que visiten la web ven la página de verificación.
-
¿Qué pasa si se me olvida desactivar el modo “Bajo ataque”?
-
Se desactiva automáticamente después de 4 horas. También recibirás un aviso por correo electrónico cuando se active y se desactive.
-
¿El modo “Bajo ataque” cambia mis ajustes de seguridad habituales?
-
No. Funciona independientemente de tus preajustes (estándar o máximo). Tus ajustes habituales no se ven afectados y siguen funcionando con normalidad una vez que se desactiva el modo “Bajo ataque”.
-
¿Cómo funciona la copia de seguridad de la base de datos?
-
Ve a “Vigilante > Herramientas > Copia de seguridad de la base de datos”. Selecciona las tablas que quieras incluir (o deja todas seleccionadas) y, a continuación, haz clic en “Descargar”. La copia de seguridad se genera como un archivo ZIP temporal con un nombre imposible de adivinar, se envía a tu navegador y se elimina del servidor inmediatamente después de la descarga.
-
¿Qué ocurre al cambiar el prefijo de la base de datos?
-
WordPress utiliza wp_ como prefijo por defecto para las tablas. Cambiarlo por un prefijo aleatorio agrega una capa de protección contra los ataques de inyección SQL que tienen como objetivo los nombres de tabla por defecto. Ve a “Vigilante > Refuerzo de WP > Refuerzo de la base de datos”. Crea siempre una copia de seguridad antes de cambiar el prefijo.
-
¿Cómo excluyo del cortafuegos servicios de gestión como ModularDS o ManageWP?
-
Ve a “Vigilante > Cortafuegos > Listas de User-Agent” y agrega el nombre del servicio (por ejemplo, ModularDS, ManageWP UptimeRobot) a la lista blanca de User-Agent. Utiliza la coincidencia parcial, por lo que al introducir “ ModularConnector” se aplicará a cualquier cadena de User-Agent que contenga esa palabra clave.
Si también utilizas una URL de acceso personalizada, agrega también la dirección IP del escritorio de administración a la lista blanca de IPs del cortafuegos. Algunas operaciones (por ejemplo, la instalación de una actualización de un plugin desde MainWP) acceden a wp-admin sin una sesión de WordPress y con un agente de usuario genérico de WordPress en lugar del nombre del servicio, por lo que la regla de User-Agent por sí sola no las detectaría. Una IP incluida en la lista blanca puede superar la protección del login/wp-admin oculto (y aún así debe verificarse).
-
¿Puedo enviar avisos de seguridad a alguien que no sea el administrador del sitio?
-
Sí. Ve a “Vigilante > Ajustes y herramientas > Ajustes de avisos”. Puedes agregar destinatarios de correo electrónico adicionales (uno por línea) y, si lo deseas, desmarcar el correo electrónico de administración de WordPress. Esto resulta útil para profesionales de mantenimiento que gestionan varios sitios web y necesitan recibir todas las alertas de seguridad.
-
¿Puedo personalizar los destinatarios de los avisos como quiera?
-
Sí. Utiliza el filtro
vigilante_notification_recipients. Este filtro recibe y devuelve una lista de direcciones de correo electrónico que se utilizan para todos los avisos administrativos:add_filter( 'vigilante_notification_recipients', function( $recipients ) { $recipients[] = 'security-team@example.com'; return $recipients; } );
Reseñas
Colaboradores & Desarrolladores
“Vigilante – Suite de seguridad 100% gratis: Cortafuegos, 2FA, login, cabeceras, escáner…” es software de código abierto. Las siguientes personas han contribuido a este plugin.
Colaboradores“Vigilante – Suite de seguridad 100% gratis: Cortafuegos, 2FA, login, cabeceras, escáner…” ha sido traducido en 3 idiomas. Gracias a los traductores por sus contribuciones.
¿Interesado en el desarrollo?
Revisa el código, echa un vistazo al repositorio SVN, o suscríbete al registro de desarrollo por RSS .
Historial de cambios
3.0.4
Fixes the expired password notice, which was missing when the password expired during an open session, lands the user at the top of the profile where the notice is, fixes a redirect loop for WooCommerce customers, and limits an account with an expired password to its own profile form.
- Improved: when a password has expired, the user is taken to the top of their profile, where the notice says why, instead of straight to the password field with the notice out of sight above it. The notice now has a link to the field.
- Fix: the notice that a password has expired was missing when it expired while the user was still logged in. The user was sent to the profile with no explanation, and the notice only appeared after logging in again.
- Fix: on the last day before a password expires the warning notice was not shown, so the forced change arrived with no warning the day before.
- Fix: in a WooCommerce store, an account with no access to the admin area, a customer for example, whose role is in Affected Roles was caught in a redirect loop when its password expired. WooCommerce sent it from the profile to My Account and Vigilant sent it back, so it could neither use the store nor change the password. That account is now let into its profile screen in the admin area while the change is pending, and only into that screen. The password is changed there, not in My Account, and once it is saved WooCommerce takes the account back to My Account as usual.
- Fix: while a password change was pending, every request to the profile screen was let through, and that screen can be asked for other things: a plugin page, an importer, an action passed in the address, or the profile of another user for an account allowed to edit users. An account with an expired password could go on using those. Only its own profile form is let through now, to be shown or to be saved. On a network, the profile screens of the network admin and of the user dashboard lead to the profile of the site, where the notice is.
- Fix: on a site whose WordPress Address and Site Address are on different hosts, a headless site for example, or whose address has accented or non-Latin letters saved as written, a user with an expired password was caught in a redirect loop. The redirect to the profile came out as a redirect to the dashboard, which sent the user to the profile again. It now reaches the profile.
3.0.3
File Integrity now compares themes with their WordPress.org package, searches all the code that has no official copy, and looks at must-use plugins, drop-ins, wp-admin, wp-includes and the rest of wp-content. Scan emails are sent once per new finding.
- Improved: File Integrity compares themes from WordPress.org with the package WordPress.org publishes for the installed version. WordPress.org has no checksums for themes, so until now no theme file was compared with anything. The package is downloaded once per version.
- Improved: File Integrity searches every PHP file of a plugin or theme with no official copy for hidden code, not only the first 50, and reads files of up to 8 MB. A file over 512,000 bytes was not opened, so it passed as clean. One over 8 MB is listed as not searched.
- Improved: File Integrity looks at files added to wp-admin and wp-includes, at must-use plugins and drop-ins, at loose PHP files in wp-content, and at folders with PHP among the plugins or the themes that WordPress does not list as one.
- Improved: File Integrity searches the PHP files of the other folders of wp-content (languages, upgrade and the like) for hidden code. A translation file that holds anything other than text is reported, because WordPress loads translation files on every request.
- Improved: a new installation no longer starts with wp-content/cache among the excluded paths, so that folder is searched too. A site that already has it there keeps it.
- Improved: File Integrity reports a .htaccess, .user.ini or php.ini outside uploads that makes the server run code or load a file.
- Improved: File Integrity finds, in code with no official copy, request data run as code or as a command, a function chosen by the request and a file included from another server. The same text in a comment is not reported.
- Improved: a file on which the search for hidden code cannot finish is listed as not searched instead of passing as clean.
- Improved: File Integrity now compares wp-includes/version.php, and compares sites that are not in English with the English checksums while WordPress.org has none for their language, instead of leaving the core unchecked.
- Improved: File Integrity reports files deleted from a plugin or a theme, and reports a failed request to WordPress.org as an error instead of treating the plugin as one with no official copy.
- Improved: File Integrity reports more file types in uploads (.pht, .php8, names such as shell.php.suspected, .user.ini, php.ini, shell and CGI scripts), a .user.ini or php.ini in the site root that loads a file on every request, and backups left in the site root.
- Improved: the File Integrity tab says what each kind of finding usually is and what to do about it, names the plugins and themes that could not be compared, and says when a scan was partial instead of saying that every file passed.
- Improved: when a scan runs out of time, File Integrity and the scan email name the plugins, the themes and the areas it did not reach, and File Integrity lists the folders to exclude so that a scan run by hand reaches the rest. A scan runs for 60 seconds at most and starts from the beginning each time, so on a very large site the same part is left unchecked on every scan.
- Improved: File Integrity and Security Check say when Excluded Paths holds the whole folder of a plugin or of a theme, or the uploads folder. No scan looks inside them, and Security Check no longer counts such a scan as clean.
- Improved: File Integrity and Security Check say when no scheduled scan has finished for longer than the schedule allows. A scan the server stops halfway stores no result, and neither does one WordPress never starts, so the last one that did finish kept showing as the current one.
- Improved: the scan email is sent when a scan finds something new, not after every scan, and its subject names wp-config.php or .htaccess when that is all that changed.
- Improved: two-factor events can be filtered in Security Audit, and PHP 8.5 is in the end-of-life table of Security Check.
- Fix: a .htaccess in uploads that only denies access is no longer reported, and neither is the rule that forbids PHP or a commented line. Options +ExecCGI and CGI or SSI handlers, which were listed as custom rules, are now suspicious.
- Fix: the two-line index.php placeholder WordPress ships is no longer reported as PHP in uploads or as an extra file.
- Fix: the bundled themes and Akismet no longer show as modified or missing core files when they update or are deleted.
- Fix: a hexadecimal string of some 12,000 characters or more was not found by the search for hidden code. The longer the payload, the less it was found.
- Fix: a function name split in pieces was not found when a long chain of joined strings came before it in the file.
- Fix: a file built for the purpose could keep the search for hidden code busy long enough to cut the scan short.
- Fix: the scan of uploads stopped after 10,000 files without saying so.
- Fix: a folder the scan could not read stopped the scan of uploads, of a plugin or of a theme without saying so, and nothing after it was checked. The scan now goes on and reports the folder.
- Fix: Scan now stored only the second half of the scan in the score history of Security Check.
- Fix: Security Check passed a file integrity scan that had not checked everything, as long as it had found nothing in what it did check.
- Fix: the Limit HTTP Methods label, and the comment written to .htaccess, described a rule that is not the one applied.
- Fix: the alert setting of Security Audit said a new administrator is logged as Critical. It is logged as Warning, and has its own email in Users.
- Fix: the readme described automatic backups of .htaccess and wp-config.php that no longer exist.
- Fix: removed 11 strings and a method that nothing used.
3.0.2
Fixes addresses with accents or non-Latin letters in the HTTPS redirect, the Under Attack check and a custom login address, stops the www alias landing on the dashboard, saves File Integrity paths as written, and stops the default CSP from breaking the styles of sites served over http.
- Fix: the HTTP to HTTPS redirect keeps the percent-encoded characters of the address. A visit to /categor%C3%ADa/ was sent to /categora/, a 404, a path in Cyrillic to //, and every parameter lost its encoded characters.
- Fix: the same redirect takes its host from the one the site declares, not from the Host header. A visit to the www alias of the site, or to the server by its IP, was sent with a permanent redirect to the dashboard instead of the same page. A site that served other hostnames of its own through allowed_redirect_hosts now gets the declared host for all of them, while the admin area of a site whose WordPress lives on a host of its own stays on that host.
- Fix: a hidden login address written in a non-Latin script matched nothing, so the login page was hidden and its own address answered 404. It now matches in upper and lower case hex and as raw UTF-8. An address that only matched after its encoded characters were deleted, such as /my-log%41in/ for /my-login/, no longer opens the login page.
- Fix: after solving the Under Attack challenge the visitor lands on the page they asked for, with its accents and parameters intact.
- Fix: the activity log keeps the address of a blocked request as it was sent, instead of with its encoded characters deleted.
- Fix: ignoring a file in File Integrity whose name has encoded characters (a literal %20, for example) or repeated spaces now works. The path was saved with those characters deleted, so it never matched the file and the warning came back, and the saved entry could match a different file with the mangled name.
- Fix: an excluded path in File Integrity whose name has encoded characters (a literal %20, for example) or repeated spaces is now saved as written, also when exporting and importing the settings. It was saved with them deleted, so it never matched, and when the encoded characters were the last part of the name it was saved as the folder above it, which silenced the scan of everything inside that folder. A line with HTML tags is now dropped. Entries already saved are not changed, so one that was saved cut has to be written again.
- Fix: the admin area and its open endpoints are recognised from the path as sent. /wp-admin/admin-ajax.php%20 is no longer taken for admin-ajax.php, nor /wp-%41admin/page for a page of the admin area.
- Fix: on a site whose address is http://, the default Content-Security-Policy no longer includes upgrade-insecure-requests. With Apache and the headers module active, that directive made browsers ask for every stylesheet, script and image over https, where the site does not answer, so the site lost its styles. The directive is now written only when the site address is https://, so a site served over https through a proxy or CDN that terminates TLS should have its site address set to https://. The rules are rewritten on update, so a site that was already affected recovers by updating, and the Security Headers tab says so next to the policy.
- Fix: the Dashboard reads the XML-RPC setting where it lives now. The Configuration Score never gave the three points for blocking XML-RPC, and the recommendation to disable it always showed, because both read a checkbox that stopped being saved in 2.9.7. A site that blocks XML-RPC, as the factory settings do, will see its score go up by two or three points without changing anything, and the recommendation, when it applies, now leads to WP Hardening.
- Fix: the Security Check card on the Dashboard said it ran 13 internal checks when there are 16, and no longer gives a number.
3.0.1
Corrige el problema por el que las listas de perfiles de la identificación en dos pasos, las reglas de contraseñas y la caducidad de las contraseñas volvían a aparecer marcadas tras guardar, y evita que una pestaña guardada borre las listas que no tienen ningún campo visible en pantalla.
- Mejorado: SECURITY.md describe la alerta de autoprotección y el bloque “Integridad de archivos” tal y como funcionan actualmente, y dos comentarios del código que aún describían el comportamiento anterior.
- Corrección: al desmarcar un perfil en “Aplicar a los siguientes perfiles” o en “Perfiles afectados” de la caducidad de contraseñas el cambio se guarda y permanece desmarcado. Las listas de valores se fusionaban posición por posición, tanto al guardar como al leer los ajustes, por lo que una lista más corta que la original volvía a aparecer con el final de esta última agregado, y no era posible eliminar ningún perfil.
- Corrección: ya no se introduce un 0 literal en las listas cuando se desmarca el primer perfil de un grupo.
- Corrección: al desmarcar todos los perfiles de un grupo ahora se envía una lista vacía en lugar de no enviarse nada, para que se pueda distinguir de un formulario que nunca haya incluido ese campo.
- Corrección: al guardar una pestaña ya no se vacía una lista que no tenga ningún campo en esa pantalla, como los métodos HTTP permitidos del cortafuegos o la lista de nombres de usuario no seguros. Esos valores se conservaban únicamente porque, al leer los ajustes los valores originales volvían a aparecer como primeros en la lista.
- Corrección: la autoprotección toma un manifiesto que WordPress.org confirma para la versión instalada, en lugar de indicarla como sustituida definitivamente. Un sitio que había instalado una copia de prueba de una versión y, posteriormente, la versión publicada, seguía en estado crítico, y la reparación no podía solucionarlo, ya que reinstala esos mismos archivos oficiales.
- Corrección: las listas que no tenían ningún campo en ninguna pantalla vuelven a aparecer tras la actualización. Al guardar una pestaña, estas quedaban vacías en la base de datos, y hasta ahora esto quedaba oculto porque la configuración volvía a los valores iniciales al leerse. De lo contrario, un sitio que hubiera guardado la pestaña “Cortafuegos” habría empezado a devolver un error 403 para todos los métodos HTTP. Los cuatro elementos son los métodos HTTP permitidos, los nombres de usuario no seguros, los roles de aprobación de registros y los puntos finales REST públicos, y cada uno de ellos vuelve a su valor original, por lo que una lista que se haya acortado a propósito no se ve afectada.
- Corrección: los cuatro parámetros también vuelven a su valor inicial cuando la lista almacenada está vacía, independientemente del origen de dicha lista. Ninguno de ellos puede vaciarse desde ninguna pantalla, por lo que una lista vacía es un vestigio, y solía significar bloquear todos los métodos, permitir todos los registros aunque el conmutador indicara lo contrario, o desactivar la API REST pública.
- Corrección: adopción de un manifiesto que, tras la confirmación de WordPress.org, se registra tal y como es, en lugar de como un cambio de versión que no se produjo.
3.0.0
Ahora Vigilant verifica sus propios archivos comparándolos con WordPress.org, un manifiesto SHA-256 incluido y una huella digital de la base de datos. Se revisa a sí mismo tras cada actualización y restaura sus propias tareas programadas. La puntuación de la comprobación de seguridad puede variar ligeramente: se ha agregado una nueva comprobación.
- Nuevo: Autoprotección. Vigilante verifica sus propios archivos comparándolos con tres referencias: las sumas de comprobación SHA-256 que WordPress.org publica para la versión instalada, un archivo MANIFEST.sha256 incluido en el plugin y una huella digital de ese manifiesto almacenada en la base de datos. La comprobación se ejecuta primero en cada análisis de integridad de archivos, fuera del tiempo asignado al análisis y sin tener en cuenta las rutas y extensiones excluidas del mismo, y una vez al día si no se ha realizado ninguna otra comprobación en las últimas 24 horas. Informa de archivos modificados, que faltan, ilegibles o agregados, carpetas que no se pueden listar, enlaces simbólicos, archivos que figuran en el manifiesto pero que WordPress.org no distribuye, y un manifiesto sustituido, borrado o no válido. Un archivo PHP o JavaScript modificado, o un archivo de datos que cargue el plugin, es crítico, al igual que un archivo agregado que un servidor web pueda ejecutar, independientemente de la extensión de su nombre. Una hoja de estilo o una imagen modificada supone una advertencia, ya que los plugins de optimización y los servidores suelen reescribirlos, y los archivos de texto cuyos finales de línea haya reescrito el servidor no se notifican, ni tampoco el manifiesto cuando se haya reescrito de esa forma. “Integridad de archivos” muestra el resultado en el primer bloque de los resultados del análisis, con la explicación de lo que significa cada hallazgo y cómo solucionarlo. No hay ninguna opción para desactivarla: un plugin de seguridad al que se le pueda indicar que no se compruebe a sí mismo tiene una opción cuya única usuaria real es quien acaba de modificar sus archivos.
- Nuevo: Vigilant se comprueba a sí mismo al final de cada actualización que WordPress le aplica, incluida una actualización realizada mediante la subida de un archivo zip, una vez que se ha restaurado la copia anterior tras una actualización fallida, y detecta un cambio de versión realizado fuera del actualizador, como una subida manual o por FTP, en la siguiente página de administración que abra un administrador o en la tarea de mantenimiento diario. Una nueva versión que WordPress.org no pueda confirmar genera una advertencia en lugar de considerarse fiable, la huella digital no se vuelve a tomar cuando se reactiva el plugin y, siempre que se detecte una degradación de versión, se notifica por correo electrónico.
- Nuevo: La autoprotección cuenta con su propia alerta y no hay ningún ajuste que permita desactivarla. Un hallazgo crítico relacionado con los archivos propios de Vigilante siempre envía un correo electrónico, independientemente de dónde se detecte; este se deduplica según el conjunto de hallazgos y se envía una sola vez en la red, desde el sitio al que pertenecen los archivos compartidos y siempre también a la dirección de correo electrónico de la administración de la red. Ya no se incluye en el correo electrónico del análisis de integridad de archivos, que se rige por una configuración de notificaciones: desactivar el informe sobre archivos modificados también desactivaba la alarma sobre el propio plugin. Las advertencias permanecen en pantalla, donde no incitan a nadie a ignorar un correo electrónico, salvo en el caso de descenso o cambio de versión que no se pueda verificar con WordPress.org, que siempre se envían. Tampoco hay recordatorios: cada conjunto distinto de hallazgos solo se avisa una vez.
- Nuevo: No se puede desactivar la autoprotección. No hay ningún ajuste para ello, por lo que la única forma es mediante el filtro vigilante_self_integrity_enabled, y Vigilante lo señala como crítico en todas las pantallas de administración, indica los nombres de los archivos que lo interceptan y lo registra en la auditoría de seguridad. El código que elimina las interceptaciones de la comprobación se detecta al final de cada página de administración y se notifica de la misma manera, junto con los plugins que se cargaron en esa solicitud. Además, un resultado con más de tres días de antigüedad deja de considerarse verificado, independientemente de lo que haya detenido la comprobación, por lo que un estado “verde” antiguo nunca se muestra como si fuera actual.
- Nuevo: Supervisión de tareas programadas. Si algo elimina el mantenimiento diario, las comprobaciones por hora, la comprobación de seguridad semanal, la comprobación de plugins desactivados o el análisis de integridad programado, Vigilante lo vuelve a programar y lo registra, y si esa misma tarea vuelve a eliminarse en un plazo de 30 días, se informa de ello como un problema crítico por correo electrónico. Las tareas que hayas desactivado no se ven afectadas. En los sitios activados antes de que existiera alguna de esas tareas, la primera pasada las programa una vez, sin informar de ello. En una red multisitio, supervisa el sitio principal.
- Nuevo: La comprobación de seguridad incluye una prueba de autoprotección de Vigilante en la categoría “Interna”, la comprobación individual más exigente del analizador, cuya puntuación ahora se calcula sobre 40 en lugar de 30. Aunque los propios archivos de Vigilante aparecen como modificados, ambas puntuaciones del plugin se mantienen en la parte inferior de la escala y explican el motivo: todos los demás resultados se generan a partir de ese mismo código. El informe guardado se borra al actualizar, por lo que la puntuación puede variar tras la siguiente comprobación.
- Nuevo: La autoprotección cuenta con su propio bloque en “Integridad de archivos”, el primero de los resultados, codificado por colores según la gravedad, con los archivos detectados, el significado de cada hallazgo y las medidas que hay que tomar al respecto. El mismo texto aparece en los detalles de la “Comprobación de seguridad”, en los detalles de cada entrada de la “Auditoría de seguridad” y en el correo electrónico de alerta, por lo que los cinco elementos nunca muestran información contradictoria. Los cambios en los propios archivos de Vigilante también se indican en rojo en el menú de Vigilante, se resumen en la parte superior de su escritorio y se muestran en todas las pantallas de administración hasta que se solucionen. Además, se muestra una advertencia en las pantallas de Vigilante. Los hallazgos sobre los propios archivos de Vigilante ya no aparecen en la lista junto con el resto del análisis, y no se pueden ignorar.
- Nuevo: Reparación con un solo clic. Cuando Vigilante detecta que sus propios archivos han sido modificados, puede descargar una copia limpia desde WordPress.org y sustituir únicamente los archivos del plugin, conservando tus ajustes, tablas y registros, tras mostrar una pantalla en la que se explica exactamente lo que va a hacer. Instala la versión que distribuye WordPress.org, nunca la versión que indican los archivos, y nunca una versión más antigua que la que este sitio haya verificado. En una red se requiere un superadministrador, y cuando WordPress no puede modificar los archivos del plugin, la pantalla indica los pasos que hay que seguir manualmente.
- Nuevo: SECURITY.md, con instrucciones sobre cómo informar de una vulnerabilidad, qué cubre y qué no cubre la autoprotección, y cómo verificar tú mismo una instalación, y bin/verify-manifest.php, una herramienta de línea de comandos que comprueba la carpeta del plugin con respecto al manifiesto y el manifiesto con respecto a WordPress.org.
- Mejorado: “Integridad de archivos” ya no analiza Vigilante como un plugin normal, por lo que sus archivos no se incluyen dos veces en el informe; además, al actualizar, los propios archivos de Vigilante se eliminan de la lista de ignorados, donde podrían desactivar la nueva comprobación.
- Mejorado: En una red multisitio ningún usuario puede ignorar en ningún sitio un hallazgo relacionado con los archivos propios de Vigilant. Si se borran los resultados del análisis sin disponer de derechos de red, dicho hallazgo se mantiene y la alerta correspondiente también se envía al correo electrónico de la administración de la red.
Para entradas anteriores del registro de cambios revisa el archivo changelog.txt.
