Proteger archivos .htaccess en WordPress con seguridad extra
¿Alguna vez has oído hablar del archivo .htaccess y te has preguntado qué es o por qué es tan importante? Si tienes una web en WordPress, este pequeño archivo es como el portero de un edificio: controla quién entra, quién sale y qué pueden hacer los visitantes dentro de tu propiedad. Sin embargo, si no lo proteges adecuadamente, también puede convertirse en la puerta trasera que los hackers utilizan para colarse en tu sitio.
En este artículo, vamos a sumergirnos en el fascinante (y crucial) mundo de la seguridad de WordPress, centrándonos en cómo proteger .htaccess con capas extra de seguridad. No necesitas ser un experto en informática para seguir esta guía; te lo explicaré todo paso a paso, como si estuviéramos tomando un café y te lo contara un amigo. Al final, tendrás un plan claro para reforzar seguridad y dormir más tranquilo sabiendo que tu web está blindada.
¿Qué es exactamente el archivo .htaccess?
Antes de lanzarnos a protegerlo, es fundamental entender qué es. .htaccess es un archivo de configuración que usan los servidores web Apache (los más comunes en el hosting). Su nombre significa "hypertext access" y, aunque no lo veas desde el panel de WordPress, reside en la carpeta raíz de tu instalación (normalmente en public_html).
Este archivo es poderoso porque te permite modificar el comportamiento del servidor sin tocar la configuración global. Por ejemplo, puedes usarlo para:
- Crear redirecciones 301 (por ejemplo, pasar de
httpahttps). - Bloquear direcciones IP específicas.
- Proteger con contraseña ciertos directorios.
- Desactivar la ejecución de scripts en carpetas sensibles.
- Cachear páginas para hacerlas más rápidas.
El problema es que, al ser tan potente, si un atacante logra modificarlo, puede causar estragos: redirigir a tu web a sitios de phishing, inyectar malware o incluso secuestrar tu tráfico. Por eso, proteger .htaccess no es una opción, es una necesidad.
Primer paso: Haz una copia de seguridad antes de tocar nada
[WARNING] Este es el consejo más importante de todo el artículo: antes de modificar cualquier archivo en tu servidor, haz una copia de seguridad. Si algo sale mal, podrás restaurar el estado anterior en segundos.
Para hacerlo, simplemente accede a tu panel de control de hosting (cPanel, Syspanel, etc.) y busca el administrador de archivos. Navega hasta la carpeta raíz de tu WordPress, localiza el archivo .htaccess, haz clic derecho y selecciona "Descargar". Guárdalo en tu ordenador y, si quieres, también puedes copiar su contenido en un bloc de notas. Así tendrás un respaldo doble.
Bloquear el acceso directo al archivo .htaccess
La primera capa de protección es evitar que alguien pueda ver o editar este archivo desde el navegador. Por defecto, Apache suele denegar el acceso, pero no está de más añadir una regla explícita. Para ello, crea un nuevo archivo llamado .htaccess (si no existe) o edita el actual y añade este código al principio:
<FilesMatch "^\.htaccess">
Require all denied
</FilesMatch>
Si tu servidor utiliza una versión anterior de Apache, el código sería:
<FilesMatch "^\.htaccess">
Order allow,deny
Deny from all
</FilesMatch>
Esto le dice al servidor que cualquier petición para acceder a un archivo que empiece por .htaccess sea rechazada automáticamente. Es una medida simple, pero muy efectiva.
Deshabilitar la ejecución de PHP en carpetas críticas
Uno de los trucos más comunes que usan los hackers es subir un archivo PHP malicioso (como un shell o backdoor) a una carpeta que no debería ejecutar código, como wp-content/uploads/. Si consiguen hacerlo, pueden tomar el control total de tu web.
Para evitarlo, añade este bloque a tu .htaccess:
<DirectoryMatch "^/wp-content/uploads/">
<FilesMatch "\.(php|php5|php7|phtml)$">
Require all denied
</FilesMatch>
</DirectoryMatch>
Si tu hosting usa una sintaxis más clásica, puedes usar:
<FilesMatch "\.(php|php5|php7|phtml)$">
Order allow,deny
Deny from all
</FilesMatch>
[INFO] Esta regla impide que cualquier archivo con extensión .php dentro de la carpeta de subidas se ejecute. Tus imágenes, PDFs y otros archivos multimedia seguirán funcionando con normalidad, pero el código malicioso no podrá ejecutarse.
Bloquear el acceso al archivo wp-config.php
Otro archivo crítico es wp-config.php, que contiene las credenciales de tu base de datos. Aunque este archivo no se llama .htaccess, protegerlo es igual de importante. Añade esto a tu .htaccess:
<Files wp-config.php>
Require all denied
</Files>
O, en versiones antiguas de Apache:
<Files wp-config.php>
Order allow,deny
Deny from all
</Files>
Así, si alguien intenta acceder directamente a tudominio.com/wp-config.php, verá un error 403 (Acceso prohibido).
Proteger el directorio de administración de WordPress
¿Sabías que puedes añadir una capa extra de protección al acceso a tu panel de administración (/wp-admin)? Puedes hacerlo de dos formas: mediante una contraseña adicional del servidor o restringiendo por IP.
Restringir por IP
Si siempre accedes a tu WordPress desde la misma dirección IP (por ejemplo, desde tu oficina o casa), puedes limitar el acceso al área de administración solo a esa IP. El código sería:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000$
RewriteRule ^(.*)$ - [R=403,L]
</IfModule>
Sustituye 123.456.789.000 por tu IP real. Puedes encontrarla buscando "cuál es mi IP" en Google.
[WARNING] Esta medida puede ser un arma de doble filo. Si tu IP cambia (por ejemplo, al viajar o usar una red móvil), podrías quedarte fuera de tu propio panel de administración. Úsala solo si estás seguro de que tu IP es fija o tienes acceso a un VPN.
Añadir una contraseña extra del servidor
Otra opción es proteger la carpeta wp-admin con una contraseña adicional. Para ello, necesitas crear dos archivos: .htpasswd (donde se guarda la contraseña cifrada) y modificar tu .htaccess.
Primero, genera el hash de tu contraseña en esta página. Luego, crea un archivo llamado .htpasswd en una carpeta fuera del directorio público (por ejemplo, en home/tu_usuario/). El contenido será algo como:
usuario:$apr1$abcdefgh$1234567890abcdef1234567890
Después, añade esto a tu .htaccess:
<Directory "/ruta/absoluta/a/wp-admin">
AuthType Basic
AuthName "Acceso restringido"
AuthUserFile /home/tu_usuario/.htpasswd
Require valid-user
</Directory>
Asegúrate de usar la ruta absoluta correcta. A partir de ese momento, cuando intentes acceder a tudominio.com/wp-admin, el navegador te pedirá usuario y contraseña antes de mostrar la pantalla de login de WordPress.
Bloquear el acceso a archivos y directorios sensibles
Además de .htaccess y wp-config.php, hay otros archivos que no deberían ser accesibles desde el exterior. Por ejemplo, el archivo readme.html (que revela la versión de WordPress que usas) o los archivos de log.
Añade este bloque para denegar el acceso a varios tipos de archivos a la vez:
<FilesMatch "\.(htaccess|htpasswd|ini|log|sh|inc|bak|sql|conf)$">
Require all denied
</FilesMatch>
Y para ocultar el archivo readme.html y license.txt:
<Files "readme.html">
Require all denied
</Files>
<Files "license.txt">
Require all denied
</Files>
Desactivar la navegación de directorios
Si alguien visita tudominio.com/wp-content/uploads/ y no hay un index.php dentro, el servidor podría mostrar un listado de todos los archivos. Esto es una mina de oro para los atacantes, ya que pueden ver exactamente qué archivos tienes y buscar vulnerabilidades.
Para evitar esto, añade:
Options -Indexes
Esta línea le dice al servidor que no muestre el listado de archivos si no hay un index.php o index.html en esa carpeta.
Proteger el archivo .htaccess contra modificaciones externas
Otra técnica avanzada es hacer que el archivo .htaccess sea de solo lectura. Esto no se hace desde el propio archivo, sino desde el panel de control de tu hosting. En cPanel, busca "Administrador de archivos", haz clic derecho sobre .htaccess y selecciona "Cambiar permisos". Establece los permisos a 444 (solo lectura para todos) o 644 (lectura y escritura solo para el propietario).
[TIP] Si usas Syspanel (el panel de control de HestiaCP), recuerda que el puerto de acceso es el 2106. Dentro de Syspanel, puedes encontrar la gestión de archivos en la sección "Archivos" o "Administrador de archivos".
Añadir reglas de bloqueo por país (opcional)
Si tu web es local y no necesitas tráfico internacional, puedes bloquear países específicos para reducir los intentos de acceso malicioso. Esto se hace con módulos como GeoIP, pero no todos los servidores lo tienen activado.
Una alternativa más sencilla es bloquear rangos de IP de países concretos, pero esto puede ser tedioso de mantener. Si te interesa, busca en tu panel de hosting si ofrecen un firewall a nivel de servidor (muchos lo tienen como "ModSecurity" o "Imunify360").
Consejos extra para reforzar la seguridad de tu WordPress
Proteger el .htaccess es solo una pieza del puzle. Para una seguridad integral, combina estas medidas:
- Mantén todo actualizado: WordPress, temas y plugins. Las actualizaciones corrigen vulnerabilidades conocidas.
- Usa contraseñas fuertes: Tanto en el panel de administración como en tu cuenta de hosting. Activa la autenticación de dos factores (2FA).
- Elimina plugins y temas que no uses: Cada pieza de código extra es una posible puerta de entrada.
- Instala un plugin de seguridad: Wordfence, Sucuri o iThemes Security son excelentes opciones que automatizan muchas de estas protecciones.
- Cambia el prefijo de la base de datos: Si tu instalación usa
wp_por defecto, un atacante lo sabe. Cambiarlo a algo aleatorio añade una capa de confusión. - Haz copias de seguridad periódicas: No solo antes de modificar archivos, sino de forma automática. Si algo sale mal, podrás restaurar tu web en minutos.
Preguntas frecuentes (FAQ)
¿Qué pasa si mi hosting no es Apache?
Si tu servidor usa Nginx, no existe .htaccess. En su lugar, la configuración se hace en archivos como nginx.conf. Sin embargo, muchos hosts con Nginx usan una capa de compatibilidad con Apache. Si no estás seguro, pregunta a tu proveedor de hosting.
¿Puedo romper mi web si me equivoco con el código?
Sí, es posible. Un error en el .htaccess puede generar un error 500 (Error interno del servidor). Por eso es tan importante hacer una copia de seguridad antes de cualquier cambio. Si algo falla, sube la copia de seguridad desde el administrador de archivos.
¿Cuánto tiempo tarda en hacer efecto un cambio en el .htaccess?
Los cambios son inmediatos. No necesitas reiniciar el servidor. Solo guarda el archivo y prueba a acceder a tu web.
¿Es mejor usar un plugin de seguridad que editar el .htaccess manualmente?
Los plugins son excelentes porque automatizan muchas tareas y son más fáciles de usar para principiantes. Sin embargo, editar el .htaccess manualmente te da un control total y no depende de un tercero. Lo ideal es combinar ambos: usa un plugin para monitoreo y copias de seguridad, pero también implementa estas reglas manuales para una protección más profunda.
Conclusión
Proteger el archivo .htaccess es una de las medidas más efectivas y económicas para reforzar seguridad en WordPress. Aunque al principio pueda parecer técnico, con esta guía paso a paso has aprendido a bloquear accesos no deseados, deshabilitar la ejecución de scripts peligrosos y añadir capas extra de autenticación.
Recuerda siempre trabajar con una copia de seguridad a mano y no añadir más reglas de las que entiendas. Empieza con las básicas (bloquear el acceso directo y desactivar la ejecución de PHP en uploads) y ve añadiendo más según te sientas cómodo.
La seguridad web no es un destino, sino un viaje constante. Cada pequeña acción que tomas para proteger .htaccess y tus archivos críticos te acerca a tener una web más robusta y confiable. Si tienes dudas, no dudes en consultar con tu proveedor de hosting; están para ayudarte.
Ahora, ve y aplica estos consejos. Tu WordPress (y tu tranquilidad) te lo agradecerán.
