mod_access_compat
Autorizaciones de grupo basadas en el host (nombre o dirección IP)
Extension
mod_access_compat.c
access_compat_module
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.

# Atención

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.

# Fusionando secciones de configuración

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.

Require
mod_authz_host
mod_authz_core
Allow
Controla qué hosts pueden acceder a un área del servidor
Allow from all|host|env=[!]env-variable [host|env=[!]env-variable] ...
directory
.htaccess
Limit

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:

Un nomre de dominio (parcial)
  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.

Una dirección IP completa
  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

Una dirección IP parcial
  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.

Una pareja de red/máscara de red
  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.

Una especificación de red/nnn CIDR
  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.

# Fusión de secciones de configuración

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.

Deny
Controla a qué hosts se les deniega el acceso al servidor
Deny from all|host|env=[!]env-variable [host|env=[!]env-variable] ...
directory
.htaccess
Limit

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.

Order
Controla el estado por defecto del acceso y el orden en que se evalúan Allow y Deny.
Order ordering
Order Deny,Allow
directory
.htaccess
Limit

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`
  Primero, se interpretan todas las directivas 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`
  Primero, se interpretan todas las directivas 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`
  Este orden tiene el mismo efecto que `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.

# Fusión de secciones de configuración

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.

Satisfy
Interacción entre control de acceso a nivel-de-hostess y autenticación de usuario
Satisfy Any|All
Satisfy All
directory
.htaccess
AuthConfig

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.

# Fusión de secciones de configuración.

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.

Allow
Require