Qué significa “seguridad básica” en WordPress (sin tocar servidor)
La seguridad básica en WordPress consiste en reducir la superficie de ataque y detectar cambios sospechosos a tiempo, usando ajustes del propio WordPress y plugins. El objetivo no es “blindar al 100%”, sino dificultar ataques comunes (automatizados) y tener un plan claro para responder si algo ocurre.
Amenazas típicas y cómo se ven en la práctica
1) Fuerza bruta (intentos masivos de login)
Robots prueban combinaciones de usuario/contraseña en /wp-login.php o /wp-admin. Señales comunes: picos de intentos fallidos, bloqueo de IPs, lentitud puntual.
2) Plugins vulnerables o desactualizados
Una vulnerabilidad puede permitir desde inyección de código hasta creación de usuarios admin. Suele explotarse de forma automática cuando se publica el fallo.
3) Phishing (robo de credenciales)
Correos o páginas falsas que imitan el acceso de WordPress o del hosting. El atacante no “rompe” nada: entra con tus credenciales reales.
4) Inyecciones vía formularios (contacto, registro, comentarios)
Intentos de colar scripts, enlaces maliciosos o spam; en casos graves, explotación de fallos del plugin del formulario. Señales: envíos masivos, mensajes con URLs raras, picos de spam, quejas de usuarios.
- Escuche el audio con la pantalla apagada.
- Obtenga un certificado al finalizar.
- ¡Más de 5000 cursos para que explores!
Descargar la aplicación
Endurecimiento (hardening) sin código: controles esenciales
Contraseñas fuertes y gestión de credenciales
- Usa contraseñas largas (mínimo 14–16 caracteres) y únicas por servicio.
- Usa un gestor de contraseñas (por ejemplo, 1Password, Bitwarden o similar) para evitar reutilización.
- Evita usuarios obvios como
admino nombres públicos del autor.
2FA (autenticación en dos factores)
Mitiga el phishing y la fuerza bruta: aunque roben la contraseña, falta el segundo factor.
- Prioriza 2FA con app (TOTP) o llaves de seguridad (FIDO2/WebAuthn) si el plugin lo soporta.
- Evita SMS si puedes (menos robusto).
- Guarda códigos de recuperación en un lugar seguro (no en el mismo correo).
Limitar intentos de acceso y bloquear patrones
Reduce el impacto de bots que prueban contraseñas.
- Activa límite de intentos fallidos (por IP y/o por usuario).
- Configura bloqueos progresivos (p. ej., 5 intentos → bloqueo 15 min; reincidencia → 1 h).
- Activa protección para usuarios inexistentes (evita enumeración).
reCAPTCHA o alternativas en formularios (cuando aplique)
Útil si recibes spam o ataques de automatización en formularios de contacto, registro o comentarios.
- Actívalo solo en puntos de entrada: formularios públicos y, si lo necesitas, en login.
- Valora alternativas menos intrusivas (hCaptcha, Cloudflare Turnstile) si tu stack lo permite.
- Evita romper la accesibilidad: prueba el flujo en móvil y con bloqueadores comunes.
Actualización constante (enfoque de seguridad)
Las vulnerabilidades se explotan rápido. La práctica segura es reducir la ventana entre parche y explotación.
- Activa actualizaciones automáticas donde tenga sentido (por ejemplo, parches menores del core y plugins de confianza).
- Revisa semanalmente el panel de actualizaciones y el registro del plugin de seguridad.
- Si un plugin no se actualiza con frecuencia o no responde a fallos, considera reemplazarlo.
XML-RPC: desactivar solo si es necesario
xmlrpc.php permite funciones como publicación remota y algunas integraciones. También se usa en ataques de fuerza bruta amplificada. Desactívalo si no lo necesitas.
- Si usas la app móvil de WordPress, Jetpack o integraciones antiguas, podrías necesitarlo.
- Si no lo usas y ves intentos recurrentes, bloquea XML-RPC desde el plugin de seguridad (o desactívalo si el plugin lo permite).
Guía práctica paso a paso: configuración base recomendada (sin servidor)
Paso 1: instala un plugin de seguridad “todo en uno” (uno, no tres)
Elige un plugin principal para firewall/limitación de login/alertas. Evita solapar varios plugins que hagan lo mismo (pueden generar falsos positivos o conflictos).
Paso 2: activa 2FA para administradores y editores
- Activa 2FA al menos para cuentas con acceso a plugins/temas y gestión de usuarios.
- Obliga 2FA (si el plugin lo permite) para roles críticos.
- Genera y guarda códigos de recuperación.
Paso 3: configura limitación de intentos y protección del login
- Define umbral de intentos fallidos y bloqueos progresivos.
- Activa notificaciones por bloqueos repetidos.
- Si tu plugin lo ofrece, habilita “ocultar mensajes de error” (no revelar si el usuario existe).
Paso 4: protege formularios públicos
- Identifica tus puntos de entrada: contacto, registro, comentarios, newsletter.
- Activa reCAPTCHA/Turnstile/hCaptcha en esos formularios.
- Activa filtros anti-spam del propio plugin de formularios si existen.
Paso 5: activa un escaneo básico y endurecimiento seguro
- Activa escaneo de malware/archivos (si el plugin lo incluye) con frecuencia razonable (diaria o semanal según tráfico).
- Activa reglas de endurecimiento “seguras” (por ejemplo: bloquear ejecución de PHP en carpetas de subidas si el plugin lo ofrece y no rompe tu sitio).
- Evita opciones agresivas sin entender impacto (por ejemplo, bloquear REST API globalmente puede romper el editor o integraciones).
Paso 6: configura alertas útiles (no ruido)
- Alertas por: inicio de sesión de administrador, cambios de archivos, creación de usuarios, cambios de plugins, intentos de login masivos.
- Envía alertas a un correo que revises y, si es posible, a un canal secundario (según plugin).
- Reduce alertas de bajo valor para evitar “fatiga de notificaciones”.
Criterios para seleccionar plugins de seguridad (sin repetir evaluación general)
| Criterio | Qué buscar | Por qué importa |
|---|---|---|
| Funciones mínimas | 2FA, limitación de login, firewall/reglas, escaneo o integridad de archivos, alertas | Cubre el 80% de ataques comunes sin depender de servidor |
| Calidad de alertas | Alertas configurables, con detalle (usuario, IP, hora, acción) | Permite responder rápido y con evidencia |
| Compatibilidad | Compatible con tu hosting, caché, CDN, y plugins clave (formularios, e-commerce) | Evita bloqueos a usuarios legítimos |
| Actualizaciones y soporte | Actualizaciones frecuentes y documentación clara | La seguridad depende de parches y respuesta a incidentes |
| Impacto en rendimiento | Opciones para programar escaneos y limitar recursos | Evita ralentizaciones y falsos positivos |
Monitoreo: qué revisar y con qué frecuencia
Alertas de cambios (integridad)
Activa monitoreo de cambios en archivos y en acciones críticas. Lo importante es detectar cambios inesperados fuera de tus ventanas de mantenimiento.
- Revisa alertas de: archivos modificados en
wp-content, creación de nuevos PHP en subidas, cambios en.htaccess(si aplica), cambios de plugins/temas. - Si haces cambios planificados, anota fecha/hora para distinguirlos de cambios sospechosos.
Revisión de logs del plugin de seguridad
Dedica 10–15 minutos semanales a revisar eventos.
- Busca patrones: muchas IPs intentando el mismo usuario, picos de 404 en rutas raras, bloqueos repetidos en
xmlrpc.php. - Revisa inicios de sesión de administradores: horas inusuales, países/ubicaciones inesperadas (si el plugin lo muestra).
Señales típicas de compromiso
- Usuarios admin nuevos o cambios de rol no autorizados.
- Redirecciones extrañas, pop-ups, o enlaces salientes no añadidos por ti.
- Archivos PHP nuevos en
wp-content/uploadso nombres aleatorios. - Envío de spam desde el sitio o caída de reputación (correo).
- Alertas de integridad: archivos del core modificados.
- Rendimiento degradado sin causa (posible minería o backdoor).
Plan de respuesta ante incidentes (sin pánico, con orden)
Objetivo del plan
Contener (evitar más daño), recuperar (volver a un estado limpio) y aprender (cerrar la puerta que se usó).
Checklist paso a paso
1) Aislar
- Si el sitio está sirviendo malware o redirigiendo: activa modo mantenimiento o desactiva temporalmente el sitio (según tus opciones) para proteger a visitantes.
- Si sospechas de una cuenta: bloquea o deshabilita el usuario inmediatamente.
- Si el plugin de seguridad permite “bloqueo de emergencia” del login o reglas más estrictas, actívalas temporalmente.
2) Cambiar credenciales (en este orden)
- Contraseñas de administradores de WordPress (todas las cuentas con privilegios altos).
- Contraseña del hosting/panel y del FTP/SFTP (si aplica).
- Contraseñas de base de datos (si tu proveedor lo permite sin romper el sitio o con guía).
- Claves/API de servicios conectados (correo transaccional, pasarelas, integraciones).
Activa o refuerza 2FA después del cambio de contraseñas para evitar re-compromiso.
3) Identificar el punto de entrada
- Revisa logs del plugin: primer evento sospechoso, usuario/IP, archivo modificado.
- Revisa si hubo actualización pendiente de un plugin relacionado con el incidente.
- Busca usuarios creados recientemente y cambios de rol.
4) Restaurar desde una copia limpia (si hay dudas)
- Si no estás 100% seguro de haber limpiado, restaura una copia anterior al primer indicio.
- Tras restaurar: actualiza inmediatamente y cambia credenciales (si no lo hiciste).
- Verifica que la copia sea “limpia”: revisa que no existan usuarios extraños y que el sitio no redirija.
5) Actualizar y parchear
- Actualiza core, plugins y tema a versiones seguras.
- Elimina plugins no usados o sospechosos.
- Si el incidente se originó en un plugin, considera reemplazarlo por una alternativa mantenida.
6) Revisar usuarios y reforzar controles
- Lista usuarios con roles altos y valida que cada uno sea necesario.
- Revoca accesos antiguos (colaboradores que ya no trabajan).
- Activa/obliga 2FA para roles críticos.
- Revisa ajustes de limitación de intentos, CAPTCHA y XML-RPC según lo observado en logs.
7) Verificación posterior
- Ejecuta escaneo completo del plugin de seguridad.
- Comprueba manualmente páginas clave (home, checkout si aplica, formularios) y busca redirecciones.
- Monitorea alertas con mayor atención durante 48–72 horas.
Mini-escenarios: qué harías en 3 casos comunes
Escenario A: picos de intentos de login
- Activa/ajusta limitación de intentos y bloqueos progresivos.
- Activa 2FA para admins.
- Considera CAPTCHA en login si el ataque persiste.
- Revisa si el usuario objetivo existe; si es un nombre público, cambia a uno menos predecible (creando un nuevo usuario admin y degradando el anterior, si procede).
Escenario B: aparece un admin que nadie creó
- Aisla: deshabilita ese usuario y fuerza cierre de sesiones (si el plugin lo permite).
- Cambia credenciales (WordPress + hosting).
- Revisa logs para ver desde dónde se creó y qué plugin/archivo cambió.
- Restaura desde copia limpia si hay indicios de backdoor.
Escenario C: spam masivo desde formularios
- Activa CAPTCHA/Turnstile en el formulario afectado.
- Activa reglas anti-spam del plugin de formularios y limita envíos por IP si está disponible.
- Revisa si el plugin del formulario tiene actualizaciones de seguridad pendientes.