
La seguridad web no es una opción, es una obligación.
En 2025 los ataques a WordPress y servidores web se han vuelto más sofisticados: bots automatizados, vulnerabilidades en plugins, fuerza bruta y malware que se esconde en archivos legítimos.
La buena noticia es que asegurar tu servidor y WordPress está en tus manos.
En esta guía práctica te explico cómo proteger tu web paso a paso, desde el servidor hasta la aplicación, con ejemplos y configuraciones reales.
⚙️ Paso 1. Asegura tu servidor desde la base
Antes de tocar WordPress, el primer escudo está en el servidor.
No importa si usas un VPS, un hosting compartido o un servidor dedicado: estos puntos son básicos.
🔹 Mantén el sistema y los servicios actualizados
A veces lo más simple es lo más olvidado:
sudo apt update && sudo apt upgrade -y
O si usas CentOS / AlmaLinux:
sudo dnf update -y
✅ Repite esto cada semana. Los exploits más comunes atacan versiones antiguas de Apache, PHP o MySQL.
🔹 Desactiva funciones PHP peligrosas
Edita tu archivo php.ini y busca esta línea:
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
💡 Esto evita que un atacante pueda ejecutar comandos del sistema a través de vulnerabilidades en tu web.
🔹 Protege /etc/ y otras rutas sensibles
Si administras el servidor, revisa los permisos de estas carpetas:
chmod 700 /root
chmod 600 /etc/passwd /etc/shadow
Y nunca ejecutes tu web como root.
🔹 Configura firewall y fail2ban
UFW (Ubuntu):
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 443/tcp
sudo ufw allow 80/tcp
sudo ufw enable
Fail2ban (bloquea ataques de fuerza bruta):
sudo apt install fail2ban
Y activa la cárcel básica para SSH en /etc/fail2ban/jail.local.
🧱 Paso 2. Refuerza tu servidor web (Apache o Nginx)
🔹 Oculta la versión del servidor
En Apache edita:
ServerSignature Off
ServerTokens Prod
En Nginx añade:
server_tokens off;
Así evitas mostrar tu versión exacta de software (una pista valiosa para hackers).
🔹 Redirige todo a HTTPS
Usa Let’s Encrypt con Certbot:
sudo apt install certbot python3-certbot-apache
sudo certbot --apache
Y añade en Apache:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
👉 HTTPS no solo protege los datos, también mejora tu SEO.
🔹 Configura headers de seguridad
Agrega en tu archivo .htaccess o en la configuración del servidor:
# Evita carga en iframes externos
Header always set X-Frame-Options "SAMEORIGIN"
# Evita detección MIME errónea
Header set X-Content-Type-Options "nosniff"
# Evita ejecución de scripts en directorios no esperados
Header set X-XSS-Protection "1; mode=block"
# Política CSP básica
Header set Content-Security-Policy "default-src 'self' https: data: 'unsafe-inline'"
🧩 Paso 3. Protege tu instalación de WordPress
Ahora sí: pasamos a WordPress. Aquí es donde más fallos se concentran, especialmente en plugins, temas y configuraciones débiles.
🔹 Mueve wp-config.php fuera del public_html
WordPress permite ubicar el wp-config.php un nivel superior al directorio público:
/home/usuario/wp-config.php
/home/usuario/public_html/
El core lo encontrará igual, pero será inaccesible desde la web.
🔹 Establece permisos seguros
Usa estos permisos como referencia:
find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;
chmod 600 wp-config.php
Nunca uses 777.
Y el propietario debe ser el usuario de Apache o Nginx (por ejemplo, www-data):
chown -R www-data:www-data /var/www/html
🔹 Cambia el prefijo de tabla en la base de datos
Evita dejar el clásico wp_. Si ya tienes una instalación activa, puedes cambiarlo en wp-config.php:
$table_prefix = 'wprx_';
Y renombra las tablas desde WP-CLI:
wp db query "RENAME TABLE wp_users TO wprx_users;"
🔹 Limita intentos de login
Instala un plugin ligero como Limit Login Attempts Reloaded o WP Cerber. Ambos permiten bloquear IPs después de varios intentos fallidos.
También puedes añadir protección en .htaccess:
<Files wp-login.php>
order deny,allow
Deny from all
Allow from 123.123.123.123
</Files>
Esto restringe el acceso al login solo a tu IP.
🔹 Oculta la versión de WordPress
En tu functions.php:
remove_action('wp_head', 'wp_generator');
Así evitas mostrar la versión exacta de WordPress en el código fuente.
🔹 Desactiva la edición de archivos desde el panel
En tu archivo wp-config.php:
define('DISALLOW_FILE_EDIT', true);
Esto impide que un atacante modifique archivos desde el panel si accede con un usuario comprometido.
🔹 Instala un firewall de aplicación (WAF)
Opciones recomendadas para 2025:
- 🔰 Wordfence Security (versión free o premium)
- 🛡️ All-In-One WP Security
- ☁️ Cloudflare WAF (gratuito)
Cloudflare además ofrece protección DDoS y mejora el rendimiento.
🔒 Paso 4. Copias de seguridad y monitorización
De nada sirve asegurar si no puedes restaurar. Usa un sistema de backups automáticos diarios, tanto en el hosting como en la nube.
Ejemplo con WP-CLI:
wp db export backups/$(date +%F).sql
Y para subirlo automáticamente a Google Drive o S3, usa rclone.
Para monitorizar cambios en archivos:
sudo apt install inotify-tools
inotifywait -m /var/www/html -e modify,create,delete
Así sabrás si alguien cambia algo sin permiso.
🧠 Paso 5. Revisión periódica y automatización
Haz una checklist mensual:
- 🔄 Actualiza core, plugins y temas
- 🧱 Revisa permisos y archivos sospechosos
- 🔍 Escanea con VirusTotal o Sucuri SiteCheck
- ⚙️ Verifica logs del servidor
- 🧑💻 Cambia contraseñas y tokens antiguos
Y si administras varios sitios, considera WP-CLI + cronjobs para automatizar tareas.
💡 Bonus: snippet para enviar alertas por email
Puedes crear un pequeño script PHP que te avise si el sitio está caído:
<?php
$url = 'https://tuweb.com';
if (@fopen($url, 'r') === false) {
mail('admin@tuweb.com', '⚠️ Sitio caído', "No se puede acceder a $url");
}
?>
Y programarlo con cron cada 10 minutos. Simple y efectivo.
🎯 Conclusión
La seguridad total no existe, pero puedes hacer que atacarte no valga la pena. Cada pequeño ajuste suma: desde los permisos hasta los encabezados o el firewall.
Recuerda: un WordPress seguro empieza en el servidor. Y un servidor seguro se mantiene con disciplina.
👉 Consejo final: Configura alertas automáticas, mantén tus plugins bajo control y nunca instales nada de fuentes dudosas. Y si quieres ir un paso más allá, en el próximo artículo veremos cómo automatizar auditorías de seguridad con WP-CLI y cronjobs.



Comentarios recientes