Versión 2.5 del Servidor HTTP Apache

Apache > Servidor HTTP > Documentación > Versión 2.5 > Módulos

# Módulo Apache mod_access_compat

Idiomas disponibles: en | es | fr | ja

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`

### Resumen de contenidos

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.

### Directivas

### Lista de comprobación de errores corregidos

- httpd historial de cambios
- Problemas Conocidos
- Reportar un error

### Consulte también

- `Require`
- `mod_authz_host`
- `mod_authz_core`
- Comentarios

## Directiva Allow ¶

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:

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.

## Directiva Deny ¶

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`.

## Directiva Order ¶

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`
  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.

## Directiva Satisfy ¶

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>`.

### 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.

### Consulte también

- `Allow`
- `Require`

Idiomas disponibles: en | es | fr | ja

## Comentarios

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.