Negar el acceso a un sitio web con un archivo .htaccess

Generalidades

Este artículo explica las diferentes maneras en las que puedes negar el acceso a tu sitio web o partes específicas de tu sitio usando un archivo .htaccess.

Este artículo muestra ejemplos de las versiones de Apache 2.2 y 2.4.

Todos los servidores de DreamHost corren actualmente la versión 2.4, pero el código antiguo 2.2 seguirá funcionando.

Crear un archivo .htaccess en tu servidor web de DreamHost

Los códigos de ejemplo en este artículo deben ser puestos en el archivo .htaccess de tu sitio web. Revisa el siguiente artículo para ver instrucciones de como crear un archivo .htaccess en tu servidor web:

Si el archivo ya existe, da clic en los siguientes artículos para ver instrucciones de como actualizarlo (dependiendo si estás usando FTP o SSH):

Una vez el archivo ha sido creado, puedes agregar los ejemplos de código abajo de él.

Negar acceso a un sitio web completo

El siguiente código previene que cualquier persona vea tu sitio web. Los visitantes verán un 403 en vez cuando vean tu sitio web.

Apache 2.2

Order deny,allow
Deny from all

Apache 2.4

Require all denied

Negar acceso a archivos

Rechazar acceso a extensiones de archivo específicos

El siguiente código fuerza a cualquier archivo terminado en .inc a dar el error 403 cuando sea visitado:

Apache 2.2

<Files ~ "\.inc$">  
  Order Allow,Deny
  Deny from All
</Files>

Apache 2.4

<FilesMatch "\.(inc)$">
Require all denied
</FilesMatch>

Negar acceso a archivos "escondidos"

Los archivos que empiezan con un punto son considerados "escondidos" por UNIX. Usualmente, no quieres darlos a ver a los visitantes.

DreamHost deshabilita el acceso a .htaccess y .htpasswd, pero puedes recursivamente negar todos los accesos a todos los archivos poniendo el siguiente .htaccess dentro del nivel más alto.

RedirectMatch 403 /\..*$

Negar acceso a carpetas

Negar acceso a listar el directorio

Si no tienes un archivo index en tu directorio, todos tus archivos son listados en una lista de directorio para que que lo vea cualquiera. El siguiente código fuerza a esta lista a dar un error 403 Forbidden cuando lo visiten:

Options -Indexes

Negar acceso durante una hora específica en el día

Si deseas bloquear el acceso a archivos en un directorio durante un momento específico en el día, entonces agrega el siguiente código a tu archivo de .htaccess:

RewriteEngine On
# If the hour is 16 (4 PM)
RewriteCond %{TIME_HOUR} ^16$
# Then deny all access
RewriteRule ^.*$ - [F,L]

Si alguien visita el directorio a cualquier hora entre las 4:00 – 4:59 pm, un error 500 Internal server error se mostrará. Tu puedes especificar multiples horas también.

RewriteEngine On
# Multiple hour blocks
# If the hour is 4 PM or 5 PM or 8 AM
RewriteCond %{TIME_HOUR} ^16|17|08$
# Then deny all access
RewriteRule ^.*$ - [F,L]

Negar acceso a un directorio

Si tienes un directorio llamado blah que quieres bloquear, pero puede aparecer en cualquier lado de tu directorio, usa el siguiente código:

RewriteEngine On
RewriteRule (^|/)blah(/|$) - [F]

Negar acceso de IPs específicas

Si tienes problemas con ciertos visitantes de tu sitio web, puedes rechazarlos fácilmente.

Apache 2.2

Hay dos maneras diferentes de prohibir la entrada a los visitantes:

  • Usando su dirección IP, o
  • El dominio del que están visitando.

He aquí un ejemplo que niega un usuario por su dirección IP:

deny from 173.236.241.100

Cuando el usuario trata de conectar tu sitio desde esa IP específica, ellos verán un error 403 Forbidden. Si quieres bloquear un bloque entero de IPs, solo deja el último octeto por fuera. Por ejemplo:

deny from 173.236.241.

Esto niega acceso a cualquiera que tenga esa IP en el rango de 173.236.241.0 a 173.236.241.255.

El siguiente enlace es una herramienta online útil que genera automáticamente rangos de IP:

Apache 2.4

<RequireAll>
Require all granted
Require not ip xxx.xxx.xxx.xxx
</RequireAll>

Permitir acceso a una IP específica

Si necesitas negar acceso a tu sitio a todos pero poder seguir accediendo con tu IP u otra específica para visitarlo, usa esto:

Apache 2.2

order deny,allow
deny from all
allow from <YOUR_IP_ADDRESS>

Apache 2.4

<RequireAll>
Require all denied
Require ip <YOUR_IP_ADDRESS>
</RequireAll>

Negar acceso a un dominio específico

Esto niega acceso a cualquiera que se conecte a tu sitio desde www.example.com.

Apache 2.2

Si alguien da clic en un enlace en example.com que redireccione a tu sitio, ellos verán un error 403 Forbidden error:

SetEnvIfNoCase Referer "example.com" bad_referer
Order Allow,Deny
Allow from ALL
Deny from env=bad_referer

Este ejemplo arroja un error 500 Internal Server Error para cualquiera enlazando de example.com:

RewriteEngine on
RewriteCond %{HTTP_REFERER} example\.com [NC,OR]
RewriteRule .* - [F]

El siguiente ejemplo redirecciona a cualquier visitante conectando de example.com a google.com:

RewriteEngine On
RewriteCond %{HTTP_REFERER} ^https://example.com/
RewriteRule /* https://www.google.com [R,L]

Apache 2.4

<RequireAll>
  Require all granted
  Require not host example.com
</RequireAll>

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?