Proxy: Squid Pt. 1 (Basis-Setup)

Lesedauer: 5 Minuten

Ein Proxy-Server ist eine vermittelnde Instanz zwischen internen Clients und externen Diensten. Er nimmt Anfragen der Endgeräte entgegen, setzt definierte Regeln und Sicherheitsvorgaben durch und leitet erlaubte Verbindungen kontrolliert weiter. Dadurch wird eine klare technische Trennung zwischen internem Netz und öffentlichem Internet geschaffen, was die Überwachung und Absicherung des Datenverkehrs erheblich vereinfacht. Besonders in Umgebungen mit restriktiven Vorgaben, wie beispielsweise Kiosk-Systemen, PC-Terminals oder anderen streng reglementierten Arbeitsplätzen, bietet ein Proxy eine zentrale Stelle, an dem sich Kommunikationswege zuverlässig steuern und dokumentieren lassen.

Squid ist ein weit verbreiteter Proxy-Dienst, der speziell für HTTP-, HTTPS- und FTP-Verkehr entwickelt wurde und unter der GPL steht. Die Software wird seit den 1990er-Jahren als Open-Source-Projekt gepflegt – ursprünglich mit Fokus auf leistungsfähiges Caching, heute ergänzt um flexible Zugriffssteuerung, Authentifizierung und Filtermechanismen. Squid wird typischerweise in Unternehmen, öffentlichen Einrichtungen, Schulungs- und Terminalumgebungen eingesetzt, in denen feste Kommunikationsregeln gelten und eine zentrale Kontrolle der Netzverbindungen erforderlich ist. Aufgrund seiner offenen Lizenz, der aktiven Community und der breiten Unterstützung in Linux-Distributionen eignet er sich besonders für Setups, die eine transparente und auditierbare Proxy-Infrastruktur benötigen.

Installation (Ubuntu Server 24.04.3)

Aufgabenstellung

Für dieses Setup soll zunächst ein einzelnes Kiosksystem über den Proxy angebunden werden. Dieses präsentiert dem Benutzer lediglich eine definierte Internetseite. Der Proxy übernimmt dabei die Aufgabe, den ausgehenden Datenverkehr strikt nach einer Whitelist zu filtern, sodass nur die vorgesehene Zieladresse und später eventuell ergänzte Domains erreichbar sind. Gleichzeitig müssen die Server zugelassen werden, über die das Kiosk-Terminal seine System- und Browser-Updates bezieht. So können sowohl apt- als auch snap-Pakete problemlos installiert werden. Da das Terminal keinen direkten DNS-Verkehr ins Internet erzeugen soll, übernimmt der Proxy zusätzlich die Rolle eines DNS-Forwarders und leitet alle Namensauflösungen zentral an einen externen Resolver weiter. Ergänzende Firewall-Regeln stellen sicher, dass nur Geräte aus einem klar definierten IP-Bereich den Proxy erreichen können. Der Proxy selbst bleibt administrierbar, kann über SSH verwaltet werden und hält seine eigenen Paketquellen aktuell. Bei Bedarf führt er automatische Aktualisierungen oder Neustarts durch, ohne die Funktionsfähigkeit des Kiosksystems zu beeinträchtigen.

Notwendige Pakete

$ sudo apt install squid

Konfigurationsdateien

/etc/squid/squid.conf

Alle Einstellungen, die für den Proxy erforderlich sind, werden in der Squid-Konfigurationsdatei /etc/squid/squid.conf vorgenommen:

# -----------------------------
# Squid Proxy - Kiosk-Testsetup
# Netz: 172.16.0.0/24
# Proxy-Server-IP: 172.16.23.154
# -----------------------------

# Proxy-Port
http_port 3128

# -----------------------------
# ACLs
# -----------------------------

# Nur Clients aus 172.16.0.0/24 dürfen den Proxy nutzen
acl kiosks src 172.16.0.0/24

# Erlaubte Ports
acl Safe_ports port 80
acl Safe_ports port 443
acl Safe_ports port 1025-65535
acl CONNECT method CONNECT

# Ziel-Whitelist (Domains in /etc/squid/whitelist.txt)
acl whitelist dstdomain "/etc/squid/whitelist.txt"

# -----------------------------
# Zugriffskontrolle
# -----------------------------

# Alles blocken, was nicht aus dem Subnetz kommt
http_access deny !kiosks

# CONNECT nur zu Safe Ports
http_access deny CONNECT !Safe_ports

# Zugriff nur zu erlaubten Domains (Whitelist)
http_access allow whitelist kiosks

# Rest blocken
http_access deny all

# -----------------------------
# Logging / Sonstiges
# -----------------------------

access_log /var/log/squid/access.log squid

# Header-Härtung / IP-Verschleierung
forwarded_for off
request_header_access Via deny all
request_header_access X-Forwarded-For deny all
request_header_access Proxy-Authorization deny all
request_header_access Proxy-Authenticate deny all

# Hostname setzen (PRODUKTIV anpassen)
visible_hostname kiosk-proxy-test

# -----------------------------
# Kein Caching (reiner „Forward Proxy“)
# -----------------------------

cache deny all
cache_mem 0 MB
maximum_object_size_in_memory 0 KB
refresh_pattern . 0 0% 0

Die Konfiguration ist als kompakter Forward-Proxy ausgelegt, der ausschließlich definierte Zieladressen (acl whitelist dstdomain) vermittelt und ohne eigene Webdienste oder lokale Datenhaltung arbeitet. Der Zugriff wird durch eine Quellnetz-ACL (acl kiosks src) strikt auf das vorgesehene Kiosk-Segment begrenzt. Ergänzende Portregeln (acl Safe_ports) schränken erlaubte Verbindungen auf reguläre HTTP- und HTTPS-Ports ein und verhindern unerwünschte CONNECT-Tunnels (http_access deny CONNECT !Safe_ports).

Die Zielsteuerung erfolgt vollständig über eine Domain-Whitelist, die Squid anhand des Hostnamens auswertet (dstdomain "/etc/squid/whitelist.txt"). Verbindungen werden nur akzeptiert, wenn sowohl Quellnetz-ACL als auch Whitelist-ACL erfüllt sind (http_access allow whitelist kiosks). Änderungen an den freigegebenen Zielen erfordern dadurch lediglich Anpassungen in der Whitelist-Datei, nicht an der Hauptkonfiguration.

Zur Minimierung von Metadaten werden identifizierende Weiterleitungs-Header deaktiviert. Der Proxy erzeugt keinen X-Forwarded-For-Header (forwarded_for off) und gibt keine Via-Kennzeichnung (request_header_access Via deny all) an externe Server weiter. Ebenso werden Proxy-Auth-Header unterdrückt (request_header_access Proxy-Authorization deny all), wodurch interne Strukturen und Anmeldeinformationen nicht nach außen gelangen.

Da der Einsatz keinen Vorteil durch Objektzwischenspeicherung bietet, ist der Cache vollständig deaktiviert (cache deny all). Squid speichert weder Inhalte im RAM (cache_mem 0 MB) noch auf der Festplatte, und ein neutrales Refresh-Pattern (refresh_pattern . 0 0% 0) verhindert automatische TTL-Optimierungen. Dadurch arbeitet der Proxy deterministisch und ohne lokale Persistenz, was in kontrollierten Kiosk- bzw. Terminal-Umgebungen die Transparenz und Wartbarkeit erhöht.

/etc/squid/whitelist.txt

In der Datei /etc/squid/whitelist.txt sind die Zieladressen definiert, zu denen der Proxy Verbindungen zulässt. Sie fungiert als zentrale Steuerungsstelle für alle erlaubten Domains und ermöglicht es, den zugänglichen Funktionsumfang des Kiosk-Systems ohne Änderungen an der eigentlichen Squid-Konfiguration zu erweitern oder einzuschränken. Jede Domain, die in dieser Datei steht, wird von Squid beim Verbindungsaufbau geprüft und ausschließlich bei Übereinstimmung akzeptiert.

# Beispielseite
.example.com
.example.org

# Ubuntu Spiegelserver (APT)
.ubuntu.com

# Snap Updateserver
.snapcraftcontent.com
.snapcraft.io

Loading

Updated on 30. November 2025
Was this article helpful?