<-
Apache > Servidor HTTP > Documentación > Versión 2.5 > How-To / Tutoriales

Control de Acceso

Idiomas disponibles:  en  |  es  |  fr 

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.

Consulte también

top

Módulos y Directivas relacionados

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.

top

Control de Acceso por host

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.

top

Control de acceso por variables arbitrarias.

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'

Advertencia:

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.

top

Control de acceso con mod_rewrite

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

top

Más información

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

Idiomas disponibles:  en  |  es  |  fr 

top

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 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 Libera.chat, or sent to our mailing lists.