Ein Application Level Gateway (ALG) ist eine Sicherheitskomponente,
die auf Anwendungsebene arbeitet, um spezifische Protokolle zu
analysieren und zu filtern. Ein ALG kann Protokolle wie FTP, SIP, und
HTTP/S unterstützen und sicherstellen, dass diese Protokolle sicher
durch eine Firewall übertragen werden.
19.1.1.1 Hauptfunktionen eines
ALGs:
Protokollanalyse: Überprüft und modifiziert den
Datenverkehr, um sicherzustellen, dass er den Sicherheitsrichtlinien
entspricht.
Übersetzung von Adressen und Ports: Ermöglicht die
Kommunikation über NAT (Network Address Translation) und
Firewall-Grenzen hinweg.
Sicherheitsfilter: Blockiert potenziell
gefährlichen Datenverkehr und schützt das Netzwerk vor Angriffen auf
Anwendungsebene.
19.1.2 Integration von Squid als
ALG
Squid kann als Teil eines ALGs fungieren, indem es
HTTP/S-Datenverkehr filtert und überwacht. Es kann Inhalte blockieren,
Zugriffsrechte verwalten und Caching-Funktionen bieten, um die
Netzwerkleistung zu verbessern.
acl safe_ports port 80 443: Definiert sichere Ports
(HTTP und HTTPS).
acl CONNECT method CONNECT: Erlaubt den
CONNECT-Methodenaufruf (für HTTPS).
http_access deny !safe_ports: Verweigert den
Zugriff auf unsichere Ports.
http_access deny CONNECT !SSL_ports: Verweigert den
CONNECT-Methodenaufruf auf nicht-SSL-Ports.
19.2 Authentisierung
19.2.1 Authentisierungsverfahren
und deren Konfiguration
Die Authentisierung ist ein wichtiger Aspekt bei der Sicherung eines
Proxy-Servers. Squid unterstützt mehrere Authentisierungsverfahren, um
sicherzustellen, dass nur autorisierte Benutzer auf den Proxy zugreifen
können.
19.2.1.1 Methoden der
Authentisierung:
Basic Authentifizierung: Eine einfache, jedoch
weniger sichere Methode, bei der Benutzername und Passwort im Klartext
übertragen werden.
Digest Authentifizierung: Eine sicherere Methode
als Basic Auth, bei der die Anmeldeinformationen als Hashwert übertragen
werden.
NTLM Authentifizierung: Eine Windows-basierte
Methode, die Einzelanmeldung (Single Sign-On) ermöglicht.
Kerberos: Ein starkes Authentisierungsprotokoll,
das ebenfalls Einzelanmeldung unterstützt.
19.2.1.2 Beispiel für Basic
Authentifizierung:
# Definieren des Authentifizierungsprogramms
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
# ACL für authentifizierte Benutzer
acl authenticated_users proxy_auth REQUIRED
# Zugriffskontrollrichtlinien
http_access allow authenticated_users
http_access deny all
auth_param basic program: Definiert das
Authentifizierungsprogramm und die Passwortdatei.
auth_param basic children: Anzahl der Kindprozesse
für die Authentifizierung.
auth_param basic realm: Der
Authentifizierungsbereich, der dem Benutzer angezeigt wird.
auth_param basic credentialsttl: Gültigkeitsdauer
der Anmeldeinformationen.
acl authenticated_users proxy_auth REQUIRED:
Definiert eine ACL für authentifizierte Benutzer.
http_access allow authenticated_users: Erlaubt den
Zugriff für authentifizierte Benutzer.
http_access deny all: Verweigert den Zugriff für
alle anderen.
19.3 Zugriffsbeschränkungen
19.3.1 Umsetzung und Verwaltung von
Zugriffsbeschränkungen
Zugriffsbeschränkungen sind notwendig, um unerwünschten Zugriff auf
bestimmte Inhalte oder Dienste zu verhindern. Squid bietet flexible
Möglichkeiten, um solche Beschränkungen zu implementieren.
19.3.1.1
Beispielkonfiguration:
# Definieren von ACLs
acl restricted_sites dstdomain "/etc/squid/restricted_sites.txt"
acl office_hours time M T W H F 09:00-17:00
# Zugriffskontrollrichtlinien
http_access deny restricted_sites
http_access allow office_hours
http_access deny all
acl restricted_sites dstdomain
“/etc/squid/restricted_sites.txt”: Definiert eine ACL für
gesperrte Websites.
acl office_hours time M T W H F 09:00-17:00:
Definiert eine ACL für Bürozeiten.
http_access deny restricted_sites: Verweigert den
Zugriff auf gesperrte Websites.
http_access allow office_hours: Erlaubt den Zugriff
während der Bürozeiten.
http_access deny all: Verweigert den Zugriff
außerhalb der definierten Bedingungen.
19.3.2 Sicherheitsrichtlinien und
deren Durchsetzung
Sicherheitsrichtlinien sind notwendig, um die Integrität und
Sicherheit des Netzwerks zu gewährleisten. Squid ermöglicht die
Durchsetzung solcher Richtlinien durch die Kombination von ACLs und
Zugriffskontrollrichtlinien.
19.3.2.1 Beispiel für
Sicherheitsrichtlinien:
# Erlauben nur sicherer Methoden und Ports
acl allowed_methods method GET POST CONNECT
acl safe_ports port 80 443
# Zugriffskontrollrichtlinien
http_access deny !allowed_methods
http_access deny !safe_ports
http_access allow authenticated_users
http_access deny all
acl allowed_methods method GET POST CONNECT:
Definiert eine ACL für erlaubte HTTP-Methoden.
acl safe_ports port 80 443: Definiert eine ACL für
sichere Ports.
http_access deny !allowed_methods: Verweigert den
Zugriff für nicht erlaubte Methoden.
http_access deny !safe_ports: Verweigert den
Zugriff auf unsichere Ports.
http_access allow authenticated_users: Erlaubt den
Zugriff für authentifizierte Benutzer.
http_access deny all: Verweigert den Zugriff für
alle anderen.
Durch die richtige Konfiguration und Verwaltung von
Authentisierungsverfahren, Zugriffsbeschränkungen und
Sicherheitsrichtlinien kann Squid effektiv als Application Level Gateway
in Kombination mit Firewalls eingesetzt werden, um die Sicherheit und
Kontrolle des Netzwerks zu gewährleisten.