Das mod_proxy-Modul ermöglicht Apache, als Proxy-Server
zu fungieren, sowohl als Forward Proxy als auch als Reverse Proxy.
Das mod_authz_host-Modul wird verwendet, um den Zugriff
auf den Server basierend auf Hostnamen, IP-Adressen oder IP-Bereichen zu
steuern.
Das mod_authz_core-Modul bietet eine allgemeine
Zugriffskontrollstruktur, die in Kombination mit anderen
Authentifizierungs- und Autorisierungsmodulen verwendet werden kann.
Die Zugriffskontrolle wird in der Apache-Konfigurationsdatei
(httpd.conf oder apache2.conf) oder in
spezifischen Virtual Host- oder Verzeichnis-Konfigurationsdateien
(.htaccess) definiert.
<VirtualHost *:3128>
ProxyRequests On
<Proxy *>
Require ip 192.168.1.0/24
Require ip 10.0.0.0/8
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/proxy_error.log
CustomLog ${APACHE_LOG_DIR}/proxy_access.log combined
</VirtualHost>
Diese Konfiguration erlaubt den Zugriff auf den Forward Proxy nur für Clients aus den Netzwerken 192.168.1.0/24 und 10.0.0.0/8.
<VirtualHost *:3128>
ProxyRequests On
<Proxy *>
Require host example.com
Require host mydomain.local
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/proxy_error.log
CustomLog ${APACHE_LOG_DIR}/proxy_access.log combined
</VirtualHost>
Diese Konfiguration erlaubt den Zugriff auf den Forward Proxy nur für
Clients, deren Hostnamen example.com oder
mydomain.local entsprechen.
Apache bietet keine native Unterstützung für zeitbasierte Zugriffskontrollen. Dies kann jedoch durch externe Skripte erreicht werden, die in Kombination mit Apache-Konfigurationsanweisungen verwendet werden können.
<VirtualHost *:3128>
ProxyRequests On
<Proxy *>
# Beispiel für die Verwendung eines externen Skripts zur Zugriffskontrolle
Require expr %{TIME_HOUR} -ge 9 && %{TIME_HOUR} -lt 17 && %{TIME_WDAY} -ge 1 && %{TIME_WDAY} -le 5
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/proxy_error.log
CustomLog ${APACHE_LOG_DIR}/proxy_access.log combined
</VirtualHost>
Diese Konfiguration erlaubt den Zugriff auf den Proxy nur während der Bürozeiten von Montag bis Freitag zwischen 9:00 und 17:00 Uhr.
<VirtualHost *:3128>
ProxyRequests On
<Proxy "*">
Require all granted
</Proxy>
<Location "/blocked">
Require all denied
</Location>
ErrorLog ${APACHE_LOG_DIR}/proxy_error.log
CustomLog ${APACHE_LOG_DIR}/proxy_access.log combined
</VirtualHost>
Diese Konfiguration erlaubt den Zugriff auf alle URLs außer denen,
die mit /blocked beginnen.
Der Apache HTTP Server bietet verschiedene Mechanismen zur
Zugriffskontrolle, die es ermöglichen, den Zugriff auf den Forward Proxy
detailliert zu steuern. Durch die Kombination von
mod_proxy, mod_authz_host und
mod_authz_core können Administratoren spezifische Regeln
basierend auf IP-Adressen, Hostnamen, URLs und externen Bedingungen
festlegen. Diese Zugriffskontrollen können ähnlich flexibel wie die ACLs
in Squid konfiguriert werden, bieten jedoch durch die Integration mit
den umfassenden Möglichkeiten von Apache zusätzliche Flexibilität und
Funktionalität.