Este artículo explica cómo restringir el acceso a un sitio o directorio en un servidor Web Apache para que sólo sea accesible desde cierta dirección IP o red.



Tal vez parezca un error filtrar el acceso a un sitio Web a nivel aplicación (servidor Web) en lugar de a nivel TCP/IP (mediante el firewall netfilter/iptables del kernel Linux). Sin embargo, en ciertos casos un mismo servidor Web provee acceso a diferentes sitios a través del mismo nombre de host o IP (y puerto), donde algunos son de acceso público mientras que otros son de acceso restringido. Por ende, en estos escenarios no es posible filtrar el acceso por IP a través del firewall, ya que se filtra el acceso a un puerto e IP destino de forma completa (todo o nada).

Para filtrar el acceso a un recurso en la capa de aplicación, Apache provee el módulo authz_host. Vemos directamente un ejemplo.

Se desea permitir el acceso a un sitio o aplicación Web (accesible mediante el alias "/app") sólo a clientes dentro de la subred 192.168.134.0/24. La configuración del módulo authz_host varía entre versiones de Apache:

Apache 2.2:

Alias /app /usr/local/app/www
<Directory "/usr/local/app/www">

        Order deny,allow
        Deny from all
        Allow from 192.168.134

</Directory>

Apache 2.4:

Alias /app /usr/local/app/www
<Directory "/usr/local/app/www">

        Requiere ip 192.168.134

</Directory>

Referencias


Tal vez pueda interesarte


Compartí este artículo