Proteger WordPress con .htaccess: reglas básicas de seguridad
¿Qué es el archivo .htaccess y por qué es clave para tu seguridad WordPress?
Cuando piensas en proteger tu sitio web, quizás te imaginas plugins complejos o firewalls de pago. Pero existe una herramienta silenciosa, gratuita y extremadamente poderosa que ya vive en tu servidor: el archivo .htaccess. Este pequeño archivo de configuración, que se encuentra en la raíz de tu instalación de WordPress, le dice a tu servidor web (normalmente Apache) cómo manejar las solicitudes de los visitantes. Es como un portero con una lista de reglas: puede dejar pasar a la gente, bloquear a los sospechosos y negar el acceso a áreas privadas.
La seguridad WordPress .htaccess es una de las primeras líneas de defensa que puedes implementar sin necesidad de conocimientos avanzados de programación. Con solo unas pocas líneas de texto, puedes frustrar ataques automatizados, bloquear bots maliciosos y proteger archivos sensibles. En esta guía, te mostraré, paso a paso, las reglas más efectivas para reforzar la seguridad de tu sitio usando este archivo. No te preocupes si nunca has tocado un código: todo lo explicaré de forma clara y con ejemplos listos para copiar y pegar.
Antes de empezar, una advertencia importante: el archivo .htaccess es un archivo de configuración crítico. Un error de sintaxis puede tumbar tu sitio web. Por eso, siempre debes hacer una copia de seguridad del archivo original antes de modificarlo. Además, te recomiendo probar los cambios en un entorno de desarrollo si es posible. Dicho esto, vamos a por ello.
Preparación: Accede a tu archivo .htaccess de forma segura
Para editar el archivo .htaccess, necesitas acceder a los archivos de tu servidor. Tienes dos opciones principales:
- A través del administrador de archivos de tu panel de control (como cPanel o Syspanel). Si usas Syspanel, recuerda que el acceso se realiza a través del puerto 2106 (por ejemplo,
https://tu-dominio.com:2106). Una vez dentro, localiza la carpetapublic_htmly busca el archivo.htaccess. Si no lo ves, activa la opción de "mostrar archivos ocultos". - A través de un cliente FTP (como FileZilla). Conéctate a tu servidor y navega hasta la raíz de tu instalación de WordPress. Descarga el archivo
.htaccessa tu ordenador, edítalo con un editor de texto plano (como el Bloc de notas o Visual Studio Code) y súbelo de nuevo.
[!WARNING]
Nunca edites el archivo .htaccess directamente desde el editor del panel de control sin tener una copia de seguridad. Un simple error de escritura puede hacer que tu sitio muestre un error "500 Internal Server Error". Si esto ocurre, simplemente sube la copia de seguridad que guardaste para restaurar el acceso.
Una vez que tengas el archivo abierto, verás que probablemente ya contiene algunas líneas de código generadas por WordPress (el bloque de # BEGIN WordPress). No lo borres, solo añadiremos nuestras reglas por encima o por debajo de ese bloque. Lo ideal es añadir nuestras reglas de seguridad antes de la línea # BEGIN WordPress.
Regla #1: Bloquear el acceso directo al archivo .htaccess
Esta es la regla de oro. Si un atacante puede leer tu archivo .htaccess, podrá ver todas tus reglas y buscar vulnerabilidades. Bloquear el acceso directo a él es fundamental para la seguridad WordPress .htaccess. Añade este código al principio de tu archivo:
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
Este código le dice al servidor que deniegue cualquier solicitud que intente acceder directamente al archivo .htaccess. Es simple, pero muy efectivo.
Regla #2: Bloquear el acceso a archivos sensibles de WordPress
WordPress tiene varios archivos y carpetas que contienen información crítica y que no deberían ser accesibles públicamente. Por ejemplo, el archivo wp-config.php guarda las claves de acceso a tu base de datos. Es el archivo más importante de toda tu instalación.
Para proteger estos archivos, puedes usar la siguiente regla. Esta bloquea el acceso a archivos que empiezan con wp-config, a los archivos de instalación (install.php) y a los archivos de registro (error_log o debug.log).
<FilesMatch "^(wp-config\.php|install\.php|error_log|debug\.log)">
Order Allow,Deny
Deny from all
</FilesMatch>
[!INFO]
¿Qué eswp-config.php? Es el archivo de configuración principal de WordPress donde se almacenan las credenciales de la base de datos, las claves secretas y el prefijo de las tablas. Si un atacante lo lee, tendría las llaves de tu casa. Esta regla es imprescindible.
Regla #3: Bloquear bots maliciosos y rastreadores no deseados
No todos los bots son buenos. Algunos rascan tu contenido, otros buscan vulnerabilidades en plugins o temas, y otros simplemente consumen recursos de tu servidor sin aportar nada. Para bloquear bots WordPress no deseados, puedes usar una lista de "User Agents" (la identificación que usa un navegador o bot para presentarse). Esta regla bloqueará a los bots más conocidos y agresivos.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (ahrefs|majestic|rogerbot|semrush|dotbot|mj12bot|curl|wget|python|java) [NC]
RewriteRule .* - [F,L]
</IfModule>
¿Cómo funciona?
RewriteCondverifica si el "User Agent" del visitante coincide con la lista entre paréntesis. La[NC]significa que no distingue entre mayúsculas y minúsculas.RewriteRulele dice al servidor que si la condición se cumple, devuelva un error "403 Forbidden" ([F]) y detenga el procesamiento ([L]).
Puedes añadir o quitar nombres de la lista según tus necesidades. Por ejemplo, si ves en tus estadísticas que un bot llamado "BadBot" te visita mucho, solo tienes que añadirlo a la lista: (ahrefs|BadBot|majestic|...).
[!TIP]
Ten cuidado al bloquear bots. Algunos, como Googlebot o Bingbot, son esenciales para que tu sitio aparezca en los buscadores. NO los incluyas en esta lista o tu SEO se verá gravemente afectado. Esta regla es solo para bots de spam y scraping.
Regla #4: Deshabilitar la ejecución de PHP en carpetas críticas
Una de las técnicas de ataque más comunes es subir un archivo PHP malicioso (un "web shell") a una carpeta de subida de archivos (como wp-content/uploads/) y luego ejecutarlo para tomar el control del sitio. Para evitar esto, podemos deshabilitar la ejecución de PHP en las carpetas donde los usuarios pueden subir archivos.
Crea un archivo .htaccess dentro de la carpeta wp-content/uploads/ (o cualquier otra carpeta de subida) con el siguiente contenido:
<FilesMatch "\.(php|php5|php7|phtml)$">
Order Allow,Deny
Deny from all
</FilesMatch>
Este código deniega el acceso a cualquier archivo con extensión .php dentro de esa carpeta. Así, aunque un atacante suba un archivo malicioso, el servidor no lo ejecutará, simplemente mostrará un error de acceso denegado.
Regla #5: Proteger los archivos de log y de configuración
Además de wp-config.php, hay otros archivos que pueden filtrar información útil para un atacante. Por ejemplo, los archivos de log (error_log, debug.log) pueden contener rutas de archivos, versiones de plugins e incluso fragmentos de código. Esta regla refuerza la protección de estos archivos críticos:
<FilesMatch "\.(log|ini|txt|md|json)$">
Order Allow,Deny
Deny from all
</FilesMatch>
[!WARNING]
Esta regla puede bloquear el acceso a archivos.txto.jsonque sean necesarios para el funcionamiento de algunos plugins o temas. Por ejemplo, algunos plugins de SEO utilizan archivos.jsonpara sus ajustes. Si después de aplicar esta regla notas que algo no funciona, puedes excluir archivos específicos con una regla más granular. Es mejor empezar siendo restrictivo y luego ir ajustando.
Regla #6: Limitar el tamaño de las solicitudes para evitar ataques DoS
Los ataques de Denegación de Servicio (DoS) buscan saturar tu servidor con solicitudes enormes. Podemos mitigar esto limitando el tamaño de las peticiones que el servidor acepta. Esta regla no es infalible, pero añade una capa extra de protección.
LimitRequestBody 10485760
Esta línea limita el tamaño del cuerpo de la solicitud a 10 megabytes (10 * 1024 * 1024 bytes). Es suficiente para la mayoría de las operaciones normales (como subir imágenes), pero bloquea solicitudes gigantescas que suelen ser maliciosas.
Regla #7: Proteger el archivo de configuración de Syspanel (si lo usas)
Si tu hosting utiliza Syspanel, es importante que sepas que el acceso a su panel de administración se realiza a través del puerto 2106. Para proteger aún más tu sitio, puedes añadir una regla que bloquee el acceso a los archivos de configuración de Syspanel desde la web. Aunque Syspanel normalmente gestiona esto por ti, añadir una capa extra no está de más.
<FilesMatch "^(syspanel\.conf|syspanel\.ini)$">
Order Allow,Deny
Deny from all
</FilesMatch>
[!INFO]
Recuerda que Syspanel se accede por el puerto 2106. Esta regla es una medida de seguridad adicional para evitar que alguien intente acceder a estos archivos a través de la URL normal de tu sitio web.
Preguntas Frecuentes sobre la seguridad WordPress .htaccess
¿Qué hago si mi sitio muestra un error 500 después de editar .htaccess?
No entres en pánico. Es un problema común. Simplemente, accede a tu servidor por FTP o por el administrador de archivos de Syspanel (puerto 2106) y sube la copia de seguridad que hiciste del archivo original. Si no hiciste una copia, puedes intentar eliminar las líneas que añadiste, pero es más seguro tener la copia.
¿Estas reglas funcionan en cualquier hosting?
La mayoría de los hostings usan Apache, que es el servidor que interpreta .htaccess. Sin embargo, si tu hosting usa Nginx (otro tipo de servidor), el archivo .htaccess no funcionará. En ese caso, tendrás que aplicar las reglas desde el archivo de configuración del servidor, lo cual es más complejo. Lo mejor es preguntar a tu proveedor de hosting si usan Apache.
¿Puedo usar un plugin de seguridad en lugar de .htaccess?
Sí, por supuesto. Los plugins como Wordfence o Sucuri son excelentes y ofrecen muchas más funciones (como firewall de aplicaciones web, escaneo de malware, etc.). Sin embargo, las reglas .htaccess son una capa base que funciona incluso si tu plugin tiene algún fallo o se desactiva. La combinación de ambos métodos es la mejor estrategia.
¿Cada cuánto debo revisar mis reglas de .htaccess?
Te recomiendo revisarlas cada vez que actualices WordPress o algún plugin importante. A veces, los plugins modifican el archivo .htaccess (por ejemplo, para reglas de caché o de redirecciones), y es posible que eliminen o sobrescriban tus reglas de seguridad. Una revisión mensual es una buena práctica.
Conclusión: Refuerza tu WordPress con estas reglas .htaccess
Implementar estas reglas de seguridad WordPress .htaccess te tomará unos minutos, pero te aportará una tranquilidad enorme. No son una solución mágica que haga tu sitio invulnerable, pero sí una barrera sólida que disuadirá a la mayoría de los atacantes automatizados y bots maliciosos. Recuerda que la seguridad es un proceso continuo, no un destino.
Para resumir, aquí tienes una lista de verificación rápida:
- Haz una copia de seguridad de tu .htaccess original.
- Bloquea el acceso directo al archivo .htaccess.
- Bloquea el acceso a
wp-config.phpy otros archivos críticos. - Bloquea los bots maliciosos más comunes.
- Deshabilita PHP en tus carpetas de subida.
- Limita el tamaño de las solicitudes.
- Prueba tu sitio web después de cada cambio.
Si tienes algún problema o duda, no dudes en contactar con el soporte de tu hosting. Si usas Syspanel, recuerda que el acceso de administración es por el puerto 2106. Ellos podrán ayudarte a verificar si las reglas se han aplicado correctamente y a solucionar cualquier conflicto. Con estas buenas prácticas, estarás un paso más cerca de tener un WordPress robusto y seguro.
