Control de acceso. Autorización
El control de acceso, hace referencia a todos los medios que proporcionan una forma de controlar el acceso a cualquier recurso. 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.
Directiva Require
Podemos controlar el acceso a cualquier recurso o conjunto de recurso, por ejemplo usando una directiva Directory
, con Requiere
usando algunas de estas opciones:
Require all granted
: El acceso es permitido incondicionalmente.Require all denied
: El acceso es denegado incondicionalmente.Require user userid [userid] ...
: El acceso es permitido sólo si los usuarios indicados se han autentificado.Require group group-name [group-name] ...
: El acceso es permitido sólo a los grupos de usuarios especificados.Require valid-user
: El acceso es permitido a los usuarios válidos.Require ip 10 172.20 192.168.2
: El acceso es permitido si se hace desde el conjunto de direcciones especificadas.Require host dominio
: El acceso es permitido si se hace desde el dominio especificado.Require local
: El acceso es permitido desdelocalhost
.
Se puede usar el operador not
para indicar la denegación, por ejemplo:
Require not ip 10.0
Control de acceso en Apache 2.2
En versiones anteriores de Apache se utilizaban otras directivas para controlar el acceso: Allow
, Deny
, y Order
, están obsoletas y serán quitadas en futuras versiones.
Ejemplo 1
Por ejemplo en la versión Apache 2.2 podemos encontrar esta configuración:
<Directory "/var/www">
Order allow,deny
Allow from all
</Directory>
- Este es un modo Denegar por defecto. Donde le dará opcionalmente una lista de reglas Permitir.
- Luego se marcan las reglas de Permitir, y el acceso de alguien dispuesto debe coincidir al menos con una regla.
- Si alguien recibe permiso de una de las reglas Permitir, puedes rechazarlo con una regla de Negar.
En Apache 2.4 quedaría:
<Directory "/var/www">
Require all granted
</Directory>
Otro ejemplo, por ejemplo para no permitir el acceso a fichero .htaccess
, podíamos encontrar en Apache 2.2:
<FilesMatch "^\.ht">
Order deny,allow
Deny from all
</FilesMatch>
- Este es un modo de permitir por defecto. Donde le dará opcionalmente una lista de reglas de Denegar.
- Luego se verifican las reglas Denegar, para rechazar las solicitudes en función de estas reglas.
- Si alguien es rechazado por una de las reglas de Denegar, puede que lo devuelva con una regla de Permitir.
En Apache 2.4 quedaría:
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
Ejemplo 2
En Apache 2.2 podríamos tener:
Order Deny,Allow
Deny from all
Allow from example.org
En Apache 2.4 tendremos:
Require host example.org
Ejercicio
Permitir el acceso a www.pagina1.org\intranet
sólo desde el cliente conectado a la red interna, y el acceso a www.pagina1.org\internet
desde la red externa.