Mantenimiento Web

Seguridad WordPress 2026: Firewall, Hardening y 2FA

D
Daniel Perramon Calonge · 10 min de lectura

WordPress alimenta el 43% de todas las webs del mundo. Eso lo convierte en el CMS más atacado del planeta. En 2025, Patchstack registró más de 7.000 vulnerabilidades nuevas en plugins de WordPress. La mayoría explotables de forma automatizada por bots que rastrean la web sin descanso. Este artículo cubre lo que realmente funciona: firewall WAF, hardening de wp-config, 2FA y qué hacer si ya te han hackeado.

Por qué se hackean las webs WordPress (datos reales 2025)

Antes de configurar nada, conviene entender el vector de ataque. Según Wordfence Threat Intelligence 2025:

  • 61% de infecciones: plugins desactualizados con vulnerabilidad publicada
  • 19%: credenciales de administrador débiles o reutilizadas
  • 12%: temas con código malicioso (temas nulled o de fuentes no oficiales)
  • 5%: vulnerabilidades del servidor (PHP antiguo, permisos incorrectos)
  • 3%: otros (ingeniería social, hosting comprometido)

Lo que esto significa en la práctica: si mantienes los plugins actualizados y usas contraseñas fuertes con 2FA, eliminas el 80% del riesgo. El firewall WAF y el hardening cubren el 15% restante.

Los ataques son principalmente automatizados. No hay un hacker mirando tu web. Hay bots que escanean millones de webs en busca de versiones vulnerables de Contact Form 7, WooCommerce, Elementor o los 20 plugins más usados. Si tu versión aparece en el CVE, te atacan en horas.

Hardening de wp-config.php: las 8 líneas que cambian todo

wp-config.php es el archivo más crítico de WordPress. Estas modificaciones endurecen la configuración base sin instalar ningún plugin:

<?php
// 1. Claves de autenticación únicas (generar en https://api.wordpress.org/secret-key/1.1/salt/)
define('AUTH_KEY',         'Pon aquí tu clave única generada');
define('SECURE_AUTH_KEY',  'Pon aquí tu clave única generada');
define('LOGGED_IN_KEY',    'Pon aquí tu clave única generada');
define('NONCE_KEY',        'Pon aquí tu clave única generada');

// 2. Deshabilitar edición de archivos desde el panel
define('DISALLOW_FILE_EDIT', true);

// 3. Deshabilitar instalación de plugins/temas desde el panel
define('DISALLOW_FILE_MODS', true); // Solo si gestionas via SSH/FTP

// 4. Forzar HTTPS en el panel de administración
define('FORCE_SSL_ADMIN', true);

// 5. Limitar revisiones de posts
define('WP_POST_REVISIONS', 5);

// 6. Vaciar papelera automáticamente cada 7 días
define('EMPTY_TRASH_DAYS', 7);

// 7. Modo debug OFF en producción (nunca en producción)
define('WP_DEBUG', false);
define('WP_DEBUG_LOG', false);
define('WP_DEBUG_DISPLAY', false);

// 8. Prefijo de tabla de BBDD (cambiarlo si es 'wp_' en instalación existente)
// $table_prefix = 'xk7p2_'; // Cambiar ANTES de la primera instalación

Para cambiar el prefijo de tablas en una instalación existente: usa el plugin 'Change Table Prefix' o WP-CLI, no edites wp-config.php manualmente sin actualizar las tablas primero.

Firewall WAF: Wordfence vs Sucuri vs Cloudflare

Un WAF (Web Application Firewall) intercepta peticiones maliciosas antes de que lleguen a WordPress. Es la diferencia entre que el ataque llegue a tu servidor o se bloquee en el perímetro.

SoluciónTipoPrecioMejor para
Wordfence FreePlugin WordPressGratisWebs pequeñas, presupuesto cero
Wordfence PremiumPlugin WordPress99$/añoWebs corporativas, reglas en tiempo real
Sucuri FirewallDNS/Cloud WAF199$/añoSitios con tráfico alto, DDoS protection
Cloudflare ProDNS/Cloud WAF20$/mesVelocidad + seguridad + CDN integrado
Cloudflare FreeDNS básicoGratisProtección DDoS básica, no WAF completo

Diferencia clave: plugin vs cloud WAF

Wordfence actúa dentro del servidor. El ataque ya llegó a tu hosting cuando Wordfence lo bloquea. Consume recursos del servidor.

Sucuri y Cloudflare actúan antes: el tráfico pasa por sus servidores antes de llegar al tuyo. Bloquean el ataque en el cloud. No consumen recursos de tu hosting. Más eficaz contra DDoS y ataques volumétricos.

Para webs corporativas estándar en España: Wordfence Premium es suficiente. Para tiendas con tráfico real o webs que han sufrido ataques: Cloudflare Pro o Sucuri Firewall.

Configurar Wordfence correctamente (no solo instalarlo)

Instalar Wordfence sin configurarlo es como poner una cerradura sin cerrar la puerta. Estos son los ajustes críticos:

# Instalar y activar
wp plugin install wordfence --activate --allow-root

Configuración obligatoria post-instalación

  1. Wordfence > Firewall > Manage Firewall: cambia el modo de 'Learning Mode' a 'Enabled and Protecting'. Learning Mode no bloquea nada durante 7 días.
  2. Rate Limiting: activa límite de peticiones. Recomendado: humanos > 240/min, crawlers > 120/min, 404 > 60/min.
  3. Brute Force: bloquear IP tras 5 intentos fallidos en 4 horas. Bloqueo de 4 horas mínimo.
  4. Country Blocking: si tu negocio es solo España, bloquea países de origen de ataques frecuentes (RU, CN, BR). Atención: bloquear país bloquea también VPNs legítimas.
  5. Login Security > Two-Factor Authentication: actívalo para todos los administradores.
  6. Alerts: configura tu email para recibir alertas de ataques, usuarios nuevos con rol admin, y actualizaciones críticas.

Escaneo

# Ejecutar escaneo completo via WP-CLI
wp wordfence scan --type=all --allow-root

# Ver resultados
wp wordfence scan --output=json --allow-root | python3 -m json.tool

Autenticación de dos factores (2FA) en WordPress

El 2FA convierte el robo de contraseña en algo inútil. Sin el segundo factor (código del móvil), la contraseña correcta no da acceso.

Opciones de 2FA para WordPress

PluginMétodo 2FAPrecio
Wordfence PremiumTOTP (Google Authenticator)Incluido en Premium
WP 2FATOTP + Email + SMSGratis / 99$/año
Two FactorTOTP + Email + FIDO2Gratis (plugin oficial WP)
Solid Security (iThemes)TOTP + EmailGratis / 99$/año

Configuración con Wordfence

Wordfence > Login Security > Two-Factor Authentication. Actívalo para el rol 'Administrator'. Los usuarios reciben un código QR al siguiente login para escanear con Google Authenticator o Authy.

Forzar 2FA para todos los admins via WP-CLI

# Con el plugin WP 2FA instalado
# Listar admins sin 2FA activo
wp user list --role=administrator --format=table --allow-root

# Enviar email de activación de 2FA a todos los admins
wp wp2fa send-setup-emails --roles=administrator --allow-root

Hardening adicional: .htaccess y permisos de archivo

Estas reglas en .htaccess bloquean acceso directo a archivos sensibles y ataques comunes:

# Bloquear acceso a wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>

# Bloquear acceso a xmlrpc.php (si no lo usas)
<files xmlrpc.php>
order allow,deny
deny from all
</files>

# Bloquear acceso a .htaccess
<Files .htaccess>
order allow,deny
deny from all
</Files>

# Bloquear hotlinking de imágenes
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(www.)?tudominio.com [NC]
RewriteRule \.(gif|jpg|jpeg|png|webp)$ - [F,NC]

# Headers de seguridad
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options SAMEORIGIN
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Permisos correctos de archivo

# Directorios: 755, archivos: 644, wp-config.php: 600
find /var/www/tudominio -type d -exec chmod 755 {} \;
find /var/www/tudominio -type f -exec chmod 644 {} \;
chmod 600 /var/www/tudominio/wp-config.php

# Verificar que wp-config.php tiene permisos correctos
ls -la /var/www/tudominio/wp-config.php

Ocultar la versión de WordPress y el login

La información de versión ayuda a los atacantes a saber qué vulnerabilidades probar. Ocultarla añade fricción.

Ocultar versión de WordPress

Añadir en functions.php del tema hijo:

// Ocultar versión WordPress del HTML y feeds
remove_action('wp_head', 'wp_generator');
add_filter('the_generator', '__return_empty_string');
add_filter('style_loader_src', function($src) {
    if (strpos($src, 'ver=') !== false) {
        $src = remove_query_arg('ver', $src);
    }
    return $src;
});
add_filter('script_loader_src', function($src) {
    if (strpos($src, 'ver=') !== false) {
        $src = remove_query_arg('ver', $src);
    }
    return $src;
});

Cambiar URL del login

Por defecto en /wp-login.php y /wp-admin/. El plugin WPS Hide Login permite cambiarla a cualquier otra URL sin tocar core:

wp plugin install wps-hide-login --activate --allow-root
# Cambiar la URL del login en wp-admin > Ajustes > General > WPS Hide Login
# Ejemplo: /mi-panel-secreto

Importante: guarda la nueva URL antes de guardar cambios. Si la pierdes, puedes restaurarla desactivando el plugin via FTP (renombrando la carpeta del plugin en wp-content/plugins).

Qué hacer si te han hackeado WordPress

Si detectas comportamiento extraño (redirects a sitios externos, páginas nuevas que no creaste, Google te muestra como 'sitio peligroso'), sigue estos pasos:

1. Aislar la web (modo mantenimiento)

wp maintenance-mode activate --allow-root

2. Escanear y identificar archivos infectados

# Buscar archivos PHP modificados en las últimas 72 horas
find /var/www/tudominio -name '*.php' -newer /tmp/reference.txt -type f

# Buscar strings maliciosos comunes
grep -r 'eval(base64_decode' /var/www/tudominio --include='*.php' -l
grep -r 'preg_replace.*\$_' /var/www/tudominio --include='*.php' -l
grep -r 'shell_exec' /var/www/tudominio --include='*.php' -l

3. Reinstalar WordPress core

wp core download --force --allow-root
wp core update --allow-root

4. Reinstalar plugins desde repositorio oficial

# Lista los plugins instalados
wp plugin list --format=csv --allow-root
# Reinstalar todos desde WordPress.org
wp plugin install $(wp plugin list --format=csv --fields=name --allow-root | tail -n +2) --force --allow-root

5. Cambiar todas las contraseñas

# Cambiar contraseña de todos los usuarios admin
wp user list --role=administrator --format=ids --allow-root | \
xargs -I {} wp user update {} --user_pass=$(openssl rand -base64 16) --allow-root

# Cambiar claves de autenticación en wp-config.php
# (visita https://api.wordpress.org/secret-key/1.1/salt/ y reemplaza)

6. Solicitar revisión a Google

Si Google marcó tu web como 'peligrosa': Google Search Console > Seguridad e Acciones manuales > Solicitar revisión. Tarda entre 1 y 3 días hábiles en resolverse una vez limpiada la web.

Checklist de seguridad WordPress 2026: resumen visual

Estado de seguridad de tu WordPress en 10 verificaciones:

VerificaciónCómo comprobarloEstado ideal
WordPress core actualizadowp core version --extraÚltima versión estable
Plugins sin vulnerabilidadesWPScan o Patchstack Scanner0 vulnerabilidades activas
2FA activado para adminsWordfence > Login SecurityTodos los admins con 2FA
Contraseñas fuertesWordfence > DiagnosticsSin contraseñas débiles
Firewall WAF activoWordfence > Firewall > StatusEnabled and Protecting
SSL activo y válidocurl -I https://tudominio.comHTTPS, cert válido
Backup recienteUpdraftPlus > Backups<24h para BBDD
Permisos wp-config.phpls -la wp-config.php-rw------- (600)
Sin plugins nulled/pirataRevisión manualSolo fuentes oficiales
Registros de login revisadosWordfence > Live TrafficSin fuerza bruta activa

Coste real de la seguridad WordPress en 2026

La seguridad en WordPress no necesita ser cara. Estas son las opciones por presupuesto:

PresupuestoStack recomendadoCoste/año
Cero (DIY)Wordfence Free + WP 2FA Free + UpdraftPlus Free + hardening manual0€
BásicoWordfence Premium + UpdraftPlus Free~95€/año
EstándarWordfence Premium + UpdraftPlus Premium~165€/año
ProfesionalCloudflare Pro + Wordfence Premium + UpdraftPlus Premium~405€/año
EnterpriseSucuri Firewall + ManageWP + BlogVault600-800€/año

Para el 90% de webs corporativas en España, el stack 'Básico' (Wordfence Premium + UpdraftPlus gratuito) cubre todos los riesgos reales a menos de 100€/año.

En WebsBarcelona incluimos Wordfence Premium y backups offsite en todos los planes de mantenimiento sin coste adicional. El coste del plugin se amortiza con la primera hora que no tienes que dedicar a limpiar un hackeo.

Preguntas frecuentes

¿Es WordPress inseguro?

WordPress core es seguro. El problema son los plugins y temas de terceros, que representan el 73% de los vectores de ataque. Un WordPress con pocos plugins actualizados, contraseñas fuertes y 2FA tiene un perfil de seguridad excelente. La inseguridad viene de la negligencia en el mantenimiento, no del CMS.

¿Wordfence gratuito vs Premium: vale la pena pagar?

Wordfence gratuito recibe las reglas de firewall con 30 días de retraso. Premium las recibe en tiempo real. En esos 30 días, tu web es vulnerable a ataques que Wordfence ya conoce y bloquea en Premium. Para webs que generan ingresos o tienen datos de clientes, los 99$/año de Premium son una inversión obvia.

¿Cómo sé si mi WordPress ha sido hackeado?

Señales principales: Google muestra tu web como 'sitio peligroso', hay redirecciones a otras páginas que no configuraste, ves páginas o usuarios nuevos que no creaste, tu hosting te avisa de uso anormal de CPU, recibes quejas de clientes sobre spam enviado desde tu dominio. En todos estos casos, ejecuta un escaneo de Wordfence inmediatamente.

¿Debo desactivar xmlrpc.php?

Si no usas aplicaciones que requieren XML-RPC (como la app móvil de WordPress o Jetpack), sí. xmlrpc.php es un vector de ataque frecuente para fuerza bruta porque permite múltiples intentos de contraseña en una sola petición. Puedes bloquearlo en .htaccess o con Wordfence sin afectar la funcionalidad de la web.

¿Qué es el hardening de WordPress?

Hardening es el proceso de reducir la superficie de ataque: deshabilitar funcionalidades no usadas (editor de archivos, xmlrpc, registro de usuarios si no se necesita), establecer permisos de archivo correctos, ocultar información de versión, forzar HTTPS, y añadir headers de seguridad HTTP. No requiere plugins: la mayoría se hace editando wp-config.php y .htaccess.

¿El 2FA protege contra todos los ataques de login?

Protege contra fuerza bruta y robo de contraseñas. No protege contra vulnerabilidades de sesión (session hijacking) ni contra ataques a plugins que tengan su propio sistema de autenticación. Es una capa necesaria, no suficiente. Combinado con Wordfence (bloqueo de IP tras intentos fallidos) y contraseñas fuertes, la protección es prácticamente completa.

¿Sucuri vs Cloudflare: cuál es mejor para WordPress?

Depende del objetivo. Cloudflare Pro (20$/mes) ofrece CDN + WAF + DDoS protection global con mejor rendimiento. Sucuri Firewall (199$/año) está más especializado en WordPress con detección de malware integrada y soporte de respuesta a incidentes incluido. Para webs con tráfico alto: Cloudflare. Para webs que han tenido incidentes de seguridad: Sucuri.

¿Puedo limpiar un hackeo de WordPress yo mismo?

Depende de la gravedad. Infecciones simples (archivos infectados en wp-content) son manejables con WP-CLI siguiendo el proceso documentado en este artículo. Hackeos avanzados con backdoors en el core, modificación de .htaccess o inyección en la base de datos requieren experiencia o un servicio profesional. Sucuri ofrece limpieza manual por 199$/incidente.

En resumen

La seguridad en WordPress en 2026 no es opcional: es mantenimiento básico. Wordfence Premium + 2FA + hardening de wp-config cuesta menos de 100€/año y elimina el 95% del riesgo real. El 5% restante lo cubre un buen plan de backups.

En WebsBarcelona aplicamos este stack de seguridad en todas las webs bajo mantenimiento desde el primer día. Sin configuración adicional, sin facturas extra por plugins de seguridad.

¿Necesitas una web profesional en Barcelona?

Presupuesto cerrado en 24h sin compromiso. Desde 99€.

Pedir presupuesto →

Somos tu diseño web en Barcelona para pymes y autónomos · Ver portfolio

Hablamos hoy mismo

¿Tienes una idea? Cuéntanosla y te respondemos en el día.

Sin compromiso ni llamadas frías. En 2 minutos por WhatsApp sabemos cómo ayudarte a tener tu web online.

Escríbenos por WhatsApp
Respondemos en menos de 24h · 631 736 802