Versi�n 2.4 del Servidor HTTP Apache
El control de acceso, hace referencia a todos los medios que proporcionan una forma de controlar el acceso a cualquier recurso. Esta parte est� separada de autenticaci�n y autorizaci�n.
El control de acceso puede efectuarse mediante diferentes m�dulos. Los
m�s importantes de �stos son mod_authz_core
y
mod_authz_host
. Tambi�n se habla en este documento de
el control de acceso usando el m�dulo mod_rewrite
.
Si lo que se quiere es restringir algunas zonas del sitio web, bas�ndonos
en la direcci�n del visitante, esto puede ser realizado de manera
f�cil con el m�dulo mod_authz_host
.
La directiva Require
proporciona una variedad de diferentes maneras de permitir o denegar el acceso a los recursos. Adem�s puede ser usada junto con las directivas:RequireAll
, RequireAny
, y RequireNone
, estos requerimientos pueden
ser combinados de forma compleja y arbitraria, para cumplir cualquiera que
sean tus pol�ticas de acceso.
Las directivas Allow
,
Deny
, y
Order
,
proporcionadas por mod_access_compat
, est�n obsoletas y
ser�n quitadas en futuras versiones. Deber� evitar su uso, y tambi�n
los tutoriales desactualizaos que recomienden su uso.
El uso de estas directivas es:
Require host address
Require ip ip.address
En la primera l�nea, address es el FQDN de un nombre de dominio (o un nombre parcial del dominio); puede proporcionar m�ltiples direcciones o nombres de dominio, si se desea.
En la segunda l�nea, ip.address es la direcci�n IP, una direcci�n IP parcial, una red con su m�scara, o una especificaci�n red/nnn CIDR. Pueden usarse tanto IPV4 como IPV6.
Consulte tambi�n la documentaci�n de mod_authz_host para otros ejemplos de esta sintaxis.
Puede ser insertado not
para negar un requisito en particular.
Note que, ya que not
es una negaci�n de un valor, no puede ser
usado por si solo para permitir o denegar una petici�n, como not true
que no contituye ser false. En consecuencia, para denegar una
visita usando una negaci�n, el bloque debe tener un elemento que se eval�a como
verdadero o falso. Por ejemplo, si tienes a alguien espameandote tu tabl�n de
mensajes, y tu quieres evitar que entren o dejarlos fuera, puedes realizar
lo siguiente:
<RequireAll> Require all granted Require not ip 10.252.46.165 </RequireAll>
Los visitantes que vengan desde la IP que se configura (10.252.46.165
)
no tendr�n acceso al contenido que cubre esta directiva. Si en cambio, lo que se
tiene es el nombre de la m�quina, en vez de la IP, podr�s usar:
Require not host host.example.com
Y, Si lo que se quiere es bloquear el acceso desde dominio especifico, podr�s especificar parte de una direcci�n o nombre de dominio:
Require not ip 192.168.205 Require not host phishers.example.com moreidiots.example Require not host gov
Uso de las directivas RequireAll
, RequireAny
, y RequireNone
pueden ser usadas
para forzar requisitos m�s complejos.
Haciendo el uso de <If>
,
puedes permitir o denegar el acceso basado en variables de entrono arbitrarias
o en los valores de las cabeceras de las peticiones. Por ejemplo para denegar
el acceso bas�ndonos en el "user-agent" (tipo de navegador as� como Sistema Operativo)
puede que hagamos lo siguiente:
<If "%{HTTP_USER_AGENT} == 'BadBot'"> Require all denied </If>
Usando la sintaxis de Require
expr
, esto tambi�n puede ser escrito de la siguiente forma:
Require expr %{HTTP_USER_AGENT} != 'BadBot'
El control de acceso por User-Agent
es una t�cnica poco fiable,
ya que la cabecera de User-Agent
puede ser modificada y establecerse
al antojo del usuario.
Vea tambi�n la p�gina de expresiones para una mayor aclaraci�n de que sintaxis tienen las expresiones y que variables est�n disponibles.
El flag [F]
de RewriteRule
causa una respuesta 403 Forbidden
para ser enviada. USando esto, podr� denegar el acceso a recursos bas�ndose
en criterio arbitrario.
Por ejemplo, si lo que desea es bloquear un recurso entre las 8pm y las
7am, podr� hacerlo usando mod_rewrite
:
RewriteEngine On RewriteCond "%{TIME_HOUR}" ">=20" [OR] RewriteCond "%{TIME_HOUR}" "<07" RewriteRule "^/fridge" "-" [F]
Esto devolver� una respuesta de error 403 Forbidden para cualquier petici�n despu�s de las 8pm y antes de las 7am. Esta t�cnica puede ser usada para cualquier criterio que desee usar. Tambi�n puede redireccionar, o incluso reescribir estas peticiones, si se prefiere ese enfoque.
La directiva <If>
,
a�adida en la 2.4, sustituye muchas cosas que mod_rewrite
tradicionalmente sol�a hacer, y deber� comprobar estas antes de recurrir a
El motor de expresiones le da una gran capacidad de poder para hacer una gran variedad de cosas basadas en las variables arbitrarias del servidor, y debe consultar este documento para m�s detalles.
Tambi�n, deber� leer la documentaci�n de mod_authz_core
para ejemplos de combinaciones de m�ltiples requisitos de acceso y especificar
c�mo interact�an.
Vea tambi�n los howtos de Authenticaci�n y Autorizaci�n