Versión 2.5 del Servidor HTTP Apache
Descripción: | Autorizaciones de grupo basadas en el host (nombre o dirección IP) |
---|---|
Estado: | Extensión |
Identificador de Módulos: | access_compat_module |
Fichero de Código Fuente: | mod_access_compat.c |
Compatibilidad: | Disponible en el servidor Apache HTTP 2.3 como un módulo de compatibilidad con versiones previas de Apache http 2.x. Las directivas facilitadas por este módulo han quedado obsoletas en favor de la nueva refactorización de authz. Por favor vea mod_authz_host |
Las directivas facilitadas por mod_access_compat
se usan en las secciones
<Directory>
,
<Files>
, y
<Location>
así como en los ficheros
.htaccess
para controlar el acceso a partes específicas del servidor. El acceso se puede controlar en base al nombre de host del cliente, dirección IP u otras características de la petición del cliente, tal y como se capturan en las
variables de entorno. La directivas
Allow
y
Deny
se usan para especificar qué clientes tienen acceso y cuales no al servidor, mientras que la directiva
Order
configura el estado del acceso por defecto, y configura cómo las directivas
Allow
y
Deny
interactuan la una con la otra.
Se pueden configurar simultáneamente restricciones basadas en el host y autenticación con contraseña. En ese caso, la directiva Satisfy
se usa para determinar como los dos sets de restricciones interactuan.
Las directivas facilitadas por mod_access_compat
han quedado obsoletas en favor de
mod_authz_host
. Mezclar directivas antiguas como
Order
,
Allow
o
Deny
con las nuevas directivas como
Require
es técnicamente posible pero no recomendable. Éste módulo se creó para dar soporte a configuraciones que solo contienen directivas antiguas para facilitar una actualización a la versión 2.4. Por favor compruebe la guía
Actualizando para más información.
En general, las directivas de restricción de acceso aplican a todos los métodos de acceso (GET
, PUT
, POST
, etc). Éste es el comportamiento deseado en la mayor parte de los casos. Sin embargo, es posible restringir algunos métodos, dejando otros métodos sin restricción, configurando las directivas dentro de una sección <Limit>
.
Cuando cualquier directiva facilitada por este módulo se usa en una nueva sección de configuración, no se heredará ninguna directiva facilitada por este módulo en secciones anteriores de configuración.
Descripción: | Controla qué hosts pueden acceder a un área del servidor |
---|---|
Sintaxis: | Allow from all|host|env=[!]env-variable
[host|env=[!]env-variable] ... |
Contexto: | directory, .htaccess |
Anula: | Limit |
Estado: | Extensión |
Módulo: | mod_access_compat |
La directiva Allow
afecta a qué hosts pueden acceder un área del servidor. El acceso puede controlarse por nombre de host, dirección IP, rango de direcciones IP, o por otras caracterísitcas de la petición del cliente capturadas en variables de entorno.
El primer parámetro para esta directiva siempre es from
. Los siguientes parámetros pueden tomar tres formas diferentes. Si se especifica Allow from all
, entonces se permite el acceso a todos los host, dependiendo de la configuración de las directivas
Deny
y
Order
tal y como se indicó más arriba. Para permitir solo host específicos o grupos de host acceder al servidor, se puede especificar el host en cualquiera de los siguientes formatos:
Allow from example.org Allow from .net example.edu
Hosts cuyo nombre coincide, o acaba en estas cadenas de caracteres se les permite acceso. Solo componentes completos pueden coincidir, así que el ejemplo de arriba coincidirá con foo.example.org
pero no coincidirán con fooexample.org
. Esta configuración provocará que Apache httpd haga una doble resolución de DNS en la dirección IP del cliente, independientemente de la configuración de la directiva
HostnameLookups
. Hará una resolución inversa de DNS en la dirección IP para encontrar el nombre de host asociado, y entonces hará una resolución del nombre de host para asegurarse de que coincide con la dirección IP original. Solo se le dará acceso al nombre de host si ambas resoluciones de DNS son consistentes.
Allow from 10.1.2.3 Allow from 192.168.1.104 192.168.1.205
Se le permite acceso a una dirección IP de un host
Allow from 10.1 Allow from 10 172.20 192.168.2
Los primeros 1 al 3 bytes de una dirección IP, para restricción de subred.
Allow from 10.1.0.0/255.255.0.0
Una red a.b.c.d, y una máscara de red w.x.y.z. Para una restricción de subred más específica.
Allow from 10.1.0.0/16
Similar al caso anterior, exceptuando que la máscara de red se especifica con número de bits.
Tenga en cuenta que los tres últimos ejemplos coinciden exactamente con el mismo grupo de hosts.
Direcciones y subredes IPv6 pueden especificarse como se describe aquí:
Allow from 2001:db8::a00:20ff:fea7:ccea Allow from 2001:db8::a00:20ff:fea7:ccea/10
El tercer formato de parámetros para la directiva Allow
permite que el acceso al servidor se controle mediante la existencia de
variable de entorno. Cuando se especifica
Allow from env=env-variable
, entonces se le da acceso si la variable de entorno env-variable existe. Cuando se especifica
Allow from env=!env-variable
, entonces se da acceso si la variable de entorno
env-variable no existe. El servidor facilita la configuración de variables de entorno de una manera flexible basándose en las características de la petición del cliente usando las directivas facilitadas por mod_setenvif
. Por tanto, esta directiva se puede usar para permitir acceso basándose en tales factores como el User-Agent
del cliente (tipo de navegador), Referer
, u otros campos de cabeceras HTTP de petición.
SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in <Directory "/docroot"> Order Deny,Allow Deny from all Allow from env=let_me_in </Directory>
En este caso, navegadores con una cadena user-agent que comienza con KnockKnock/2.0
podrán acceder, y al resto se les denegará el acceso.
Cuando se usa cualquier directiva facilitada por este módulo en una nueva sección de configuración, no se heredará ninguna directiva facilitada por este módulo en secciones anteriores de configuración.
Descripción: | Controla a qué hosts se les deniega el acceso al servidor |
---|---|
Sintaxis: | Deny from all|host|env=[!]env-variable
[host|env=[!]env-variable] ... |
Contexto: | directory, .htaccess |
Anula: | Limit |
Estado: | Extensión |
Módulo: | mod_access_compat |
Esta directiva permite que se restrinja el acceso al servidor basándose en el nombre de host, dirección IP, o variables de entorno. Los parámetros para la directiva
Deny
son idénticos a los parámetros para la directiva
Allow
.
Descripción: | Controla el estado por defecto del acceso y el orden en que se evalúan
Allow y
Deny . |
---|---|
Sintaxis: | Order ordering |
Valor por defecto: | Order Deny,Allow |
Contexto: | directory, .htaccess |
Anula: | Limit |
Estado: | Extensión |
Módulo: | mod_access_compat |
La directiva Order
, junto con las directivas
Allow
y
Deny
, realizan un sistema de control de tres fases. La primera fase proceso o bien todas las directivas
Allow
o todas las directivas
Deny
, tal y como se haya especificado en la directiva
Order
. La segunda fase interpreta el resto de directivas
(Deny
o
Allow
). La tercera fase se aplica a todas las peticiones que no coinciden con cualquiera de las dos fases anteriores.
Tenga en cuenta que todas las directivas
Allow
y
Deny
son procesadas, al contrario que el cortafuegos típico, donde solo se usa la primera coincidencia. La última coincidencia es efectiva (también al contrario que un cortafuegos típico). Además, el orden en el que las directivas aparecen en la configuración no es relevante -- todas las líneas
Allow
se interpretan como un grupo, todas las líneas Deny
se interpretan como otro grupo, y el estado por defecto se procesa a sí mismo.
Ordenar es una de las dos:
Allow,Deny
Allow
; al menos una debe coincidir, o se deniega el acceso a la petición. Después, todas las directivas Deny
son interpretadas. Si alguna coincide, se deniega el acceso a la petición. Por último, cualquier petición que no encaje en una directiva Allow
o Deny
se les deniega el acceso por defecto.Deny,Allow
Deny
; si alguna coincide, se deniega el acceso a la petición a menos que también encaje con una directiva Allow
. Cualquier petición que no encaje ni con directivas Allow
ni Deny
se les permite el acceso.Mutual-failure
Order Allow,Deny
y ha quedado obsoleto en su favor.Las palabras clave solo pueden ser separadas por coma; no se permiten espacios en blanco entre ellas.
Filtro | Resultado Allow,Deny | Resultado Deny,Allow |
---|---|---|
Solo coincide con Allow | Petición permitida | Petición permitida |
Solo coincide con Deny | Petición denegada | Petición denegada |
No coincide | Por defecto con la segunda directiva: Denegado | Por defecto con la segunda directiva: Permitido |
Coincide con ambas Allow & Deny | Control de coincidencia final: Denegado | Control de coincidencia final: Permitido |
En el siguiente ejemplo, todos los host en el dominio example.org tienen permitido el acceso; el resto de host tienen el acceso denegado.
Order Deny,Allow Deny from all Allow from example.org
En el siguiente ejemplo, todos los hosts del dominio example.org tienen permitido el acceso, excepto para los host que están en el subdominio foo.example.org, a los que se le deniega el acceso. Todos los host que no coinciden con el dominio example.org tienen el acceso denegado porque el estado por defecto es Deny
con el acceso al servidor.
Order Allow,Deny Allow from example.org Deny from foo.example.org
Por otro lado, si el Order
en el último ejemplo se cambia a Deny,Allow
, se permitirá el acceso a todos los host. Esto pasa porque, independientemente del orden actual de las directivas en el fichero de configuración, Allow from example.org
será interpretrado en último lugar y sobreescribirá la orden de Deny from foo.example.org
. Todos los host que no estén en el dominio example.org
también tendrán acceso porque el estado por defecto es Allow
.
La presencia de una directiva Order
puede afectar el acceso a una parte del servidor incluso en la ausencia de las directivas Allow
y Deny
por su efecto en el estado del acceso por defecto. Por ejemplo,
<Directory "/www"> Order Allow,Deny </Directory>
denegará todos los accesos al directorio /www
porque el estado del acceso por defecto está configurado con Deny
.
La directiva Order
controla el orden de procesamiento de las directivas solo en cada fase del procesamiento de la configuración de un servidor. Esto implica, por ejemplo, que una directiva
Allow
o Deny
dentro de una sección
<Location>
será siempre interpretada después de una directiva
Allow
o Deny
dentro de una sección
<Directory>
o fichero .htaccess
, independientemente de la configuración de la directiva Order
. Para detalles sobre la fusión de secciones de configuración, vea la documentación en Cómo funcionan las secciones Directory, Location y Files.
Cuando se usa cualquier directiva facilitada por este módulo en una nueva sección de configuración, no se heredará ninguna directiva facilitada por este módulo en secciones anteriores de configuración.
Descripción: | Interacción entre control de acceso a nivel-de-hostess y autenticación de usuario |
---|---|
Sintaxis: | Satisfy Any|All |
Valor por defecto: | Satisfy All |
Contexto: | directory, .htaccess |
Anula: | AuthConfig |
Estado: | Extensión |
Módulo: | mod_access_compat |
Política de acceso si se usan ambos Allow
y Require
. El parámetro puede ser All
o Any
. Esta directiva solo es útil si el acceso a un área en particular se está restringiendo por usuario/contraseña y dirección de host del cliente. En este caso el comportamiento por defecto (All
) es requerir que el cliente pase la restricción de dirección de acceso y además introduce un usuario y contraseña válidos. Con la opción Any
se le garantizará acceso al cliente si pasa la restricción de host o introduce un usuario y contraseña válidos. Esto puede usarse para restringir con contraseña el acceso a un area, pero para permitir acceso a los clientes desde unas direcciones en particular sin pedirles contraseña.
Por ejemplo, si quisiera dejar entrar a personas de su red con acceso sin restricciones a una parte de su website, pero requiere que gente de fuera de su red facilite una contraseña, podría usar una configuración similar a la siguiente:
Require valid-user Allow from 192.168.1 Satisfy Any
Otro uso típico de la directiva Satisfy
es para suavizar las restricciones de acceso a un subdirectorio:
<Directory "/var/www/private"> Require valid-user </Directory> <Directory "/var/www/private/public"> Allow from all Satisfy Any </Directory>
En el ejemplo de arriba, se requiere autenticación para el directorio /var/www/private
, pero no se requerirá para el directorio /var/www/private/public
.
Desde la versión 2.0.51 las directivas Satisfy
pueden restringirse a métodos específicos con secciones <Limit>
y <LimitExcept>
.
Cuando se usa cualquier directiva facilitada por este módulo en una nueva sección de configuración, no se heredará ninguna directiva facilitada por este módulo en secciones anteriores de configuración.