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
<RequireAny>
Require all denied
Require ip <YOUR_IP_ADDRESS>
</RequireAny>
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>