El archivo .htaccess es una herramienta poderosa para controlar el acceso a un sitio web. A través de él, es posible restringir el acceso a archivos, directorios o incluso bloquear usuarios por dirección IP. En este artículo se explican diversas formas de proteger un sitio web mediante este archivo de configuración en servidores Apache.
Cómo crear o editar un archivo .htaccess
Antes de aplicar restricciones, es necesario asegurarse de que el archivo .htaccess exista en el servidor. Si no está presente, se puede crear manualmente o editarlo siguiendo estos métodos:
🔹 Vía FTP: Acceder al servidor mediante un cliente FTP, como FileZilla o Transmit, y editar el archivo dentro del directorio raíz del sitio.
🔹 Vía SSH: Para usuarios con acceso SSH, se puede usar un editor de texto como nano o vim para modificar el archivo directamente desde la terminal.
Si el archivo ya existe, simplemente se deben agregar las reglas necesarias para aplicar las restricciones de acceso.
Restringir el acceso a un sitio web completo
Si se desea bloquear completamente el acceso al sitio, se puede utilizar la siguiente configuración en .htaccess:
Require all denied
Cualquier usuario que intente acceder al sitio verá un error 403 – Prohibido. Esta configuración es útil en situaciones donde se necesita restringir temporalmente el acceso, por ejemplo, durante tareas de mantenimiento.
Restringir el acceso a archivos específicos
Si se quiere bloquear el acceso a ciertos tipos de archivos, como archivos de configuración sensibles, se puede utilizar el siguiente código:
<FilesMatch "\.(inc|config|bak|log)$">
Require all denied
</FilesMatch>
En este caso, cualquier archivo con extensiones .inc, .config, .bak o .log será inaccesible para los visitantes.
Restringir el acceso a archivos ocultos
En sistemas UNIX y Linux, los archivos cuyo nombre comienza con un «.» (punto) se consideran archivos ocultos. Para evitar que los usuarios accedan a ellos, se puede agregar esta regla en el .htaccess:
<FilesMatch "^\.">
Require all denied
</FilesMatch>
Esta configuración impide que cualquier archivo oculto sea accesible desde un navegador.
Restringir el acceso a directorios específicos
Si se quiere negar el acceso a un directorio en particular, como una carpeta llamada «privado», se puede utilizar la siguiente regla en .htaccess:
RewriteEngine On
RewriteRule (^|/)privado(/|$) - [F]
Esto genera un error 403 cuando un usuario intenta acceder a la carpeta privado, sin importar en qué parte del sitio se encuentre.
Evitar que los archivos de un directorio sean listados
Si un directorio no contiene un archivo index.html o index.php, el servidor puede mostrar automáticamente un listado de los archivos contenidos en él. Para evitar esto y mejorar la seguridad, se puede agregar la siguiente línea en .htaccess:
Options -Indexes
Con esta configuración, cualquier usuario que intente ver el contenido del directorio recibirá un error 403 – Prohibido en lugar de la lista de archivos.
Bloquear el acceso en horarios específicos
Si se desea denegar el acceso a un directorio en ciertos horarios del día, se puede utilizar la siguiente regla:
RewriteEngine On
RewriteCond %{TIME_HOUR} ^16$
RewriteRule ^.*$ - [F,L]
En este caso, si alguien intenta acceder al directorio entre las 16:00 y las 16:59, el servidor devolverá un error 500 – Error interno del servidor.
Si se necesita bloquear el acceso en varios horarios, se puede modificar la regla de esta manera:
RewriteEngine On
RewriteCond %{TIME_HOUR} ^08|12|16|22$
RewriteRule ^.*$ - [F,L]
Esto restringirá el acceso durante las 08:00, 12:00, 16:00 y 22:00 horas.
Restringir el acceso por dirección IP
Una de las formas más efectivas de proteger un sitio web contra accesos no autorizados es mediante el bloqueo de direcciones IP específicas.
Bloquear una IP específica
<RequireAll>
Require all granted
Require not ip 192.168.1.100
</RequireAll>
Esto evitará que la dirección 192.168.1.100 acceda al sitio.
Bloquear un rango de direcciones IP
Si se desea bloquear un rango completo de IPs, se puede usar esta regla:
<RequireAll>
Require all granted
Require not ip 192.168.1.
</RequireAll>
Esto bloqueará todas las direcciones desde 192.168.1.0 hasta 192.168.1.255.
Permitir el acceso solo a una IP específica
Si se quiere que solo una IP tenga acceso al sitio, mientras se bloquea a todos los demás usuarios, se puede utilizar la siguiente regla:
<RequireAny>
Require all denied
Require ip 90.161.226.107
</RequireAny>
Esto permitirá el acceso únicamente a la IP 90.161.226.107, bloqueando a cualquier otro visitante.
Bloquear el acceso desde un dominio específico
Si se desea negar el acceso a los visitantes que provienen de un dominio en particular, como example.com, se puede agregar esta regla en .htaccess:
<RequireAll>
Require all granted
Require not host example.com
</RequireAll>
Esto impedirá que cualquier usuario con un host que termine en example.com acceda al sitio.
Conclusión
El archivo .htaccess es una herramienta clave para controlar el acceso a un sitio web, permitiendo proteger directorios, restringir IPs y evitar listados de archivos. Implementar estas reglas ayuda a mejorar la seguridad del sitio y prevenir accesos no autorizados.
Antes de realizar cambios en .htaccess, se recomienda hacer una copia de seguridad del archivo original, ya que errores en la configuración pueden hacer que el sitio sea inaccesible.
Para administradores web y desarrolladores, dominar el uso de .htaccess es esencial para fortalecer la seguridad y personalizar el comportamiento del servidor Apache.