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.
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.
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.
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.
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.
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.
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.
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.
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.
<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.
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.
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.
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.
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.
