Restricciones de IP (mod_authz_host)
Restricciones de IP
Hasta el momento hemos visto como restringir los tipos de aplicaciones que Apache puede usar (con los módulos), que a su vez determina en gran medida el tipo de páginas que puede manejar y las tecnologías de creación de páginas web que puede gestionar (PHP, Java, Python, ...). También hemos hablado de los tipos de ficheros que Apache puede servir o no gracias a la gestión de los tipos MIME. En esta sección hablaremos de una tercera restricción adicional: como restringir quiénes pueden acceder a los contenidos, limitando los usuarios (o equipos) que pueden acceder a determinados contenidos.
El módulo mod_access (renombrado a mod_authz_host a partir de la versión 2.2 de Apache) es el encargado de estas funciones, y proporciona control de acceso basado en el nombre del host, dirección IP u otras características de la petición del cliente (capturadas mediante variables de entorno). Las directivas de mod_access pueden aplicarse dentro de secciones <Directory>, <Files>, <Location> y en ficheros .htaccess, permitiendo así limitar el acceso al nivel que deseemos. De esta forma, el acceso se puede controlar sólo en ciertas partes del servidor o en el servidor completo.
La gestión del acceso se hace mediante las siguientes directivas:
- Allow y Deny: Especifican a qué clientes se les permite o no acceder a esa parte del servidor.
- Order: Controla el estado de acceso por defecto y el orden de evaluación:
- Order allow,deny:
- Primero se evalúan todas las directivas Allow
- Al menos una debe encajar, en caso contrario se deniega el acceso
- Después se evalúan todas las directivas Deny, si una encaja se deniega el acceso
- Por último, todas las peticiones que no encajen con ninguna directiva anterior se deniegan por defecto
- Order deny,allow:
- Primero se evalúan todas las directivas Deny
- Si alguna encaja la petición se deniega salvo que encaje también en una directiva Allow
- Todas las peticiones que no encajen con ninguna directiva son permitidas (¡CUIDADO!)
- Directiva Satisfy: Si un sitio está protegido por el mecanismo que estamos describiendo y por password proveniente de un módulo de autenticación, especifica si se deben satisfacer ambas restricciones (autenticación o autorización) o solo una de ellas. Podemos encontrar más información en: http://httpd.apache.org/docs/2.2/mod/core.html#satisfy
La siguiente imagen muestra un ejemplo de cómo se usan estas directivas en el fichero apache2.conf de una instalación por defecto, en este caso para prohibir el acceso a los clientes de la web a los archivos .htaccess:

Finalmente, comentar que en general las directivas de control de acceso vistas se aplican a todos los métodos HTTP (GET, PUT, POST, etc.). Es posible no obstante restringir métodos concretos con secciones <Limit>, tal y como se indica en los siguientes enlaces, donde podemos encontrar más información del tema descrito:
- http://www.cyberciti.biz/faq/apache-restrict-access-based-on-ip-address-to-selected-directories/
- http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html
La política de restricción de IPs puede y debe trabajar en colaboración con otras herramientas de bloqueo (firewalls, ACLs de routers, filtrado TCP/IP, …) para una mejor protección. En la siguiente actividad práctica se dan una serie de ejemplos de cómo gestionar estas directivas.