Proxy-Server – Grundlagen
Was ein Proxy-Server ist, welche Typen es gibt und wie du ihn in Windows, Browsern und per GPO richtig konfigurierst.
Was ist ein Proxy-Server?
Ein Proxy-Server ist ein Vermittler zwischen einem Client (z.B. deinem PC) und dem Internet. Statt dass dein Browser direkt eine Anfrage an www.example.com schickt, sendet er sie zuerst an den Proxy – der Proxy stellt die Anfrage dann im eigenen Namen und leitet die Antwort zurück.
Das klingt zunächst nach einem unnötigen Umweg, bringt aber im Unternehmenskontext erhebliche Vorteile:
- Sichtbarkeit: Der gesamte Web-Traffic läuft durch einen zentralen Punkt und kann geloggt werden.
- Kontrolle: Unerwünschte Websites oder Kategorien lassen sich blockieren.
- Effizienz: Häufig abgerufene Inhalte (z.B. Windows-Updates) werden gecacht und sparen Bandbreite.
- Sicherheit: SSL Inspection ermöglicht das Prüfen von verschlüsseltem HTTPS-Traffic auf Malware.
Proxy-Typen im Überblick
In der Praxis begegnest du vier grundlegenden Typen, die sich in Funktion und Einsatzrichtung unterscheiden:
| Typ | Richtung | Typischer Einsatz |
|---|---|---|
| Forward Proxy | Client → Proxy → Internet | Unternehmens-Internetzugang, Content Filtering |
| Reverse Proxy | Internet → Proxy → interner Server | Webserver absichern, Load Balancing (z.B. nginx, HAProxy) |
| Transparenter Proxy | Client merkt nichts | ISP-seitige Filter, interne Umleitung ohne Client-Konfiguration |
| SOCKS-Proxy | Protokollunabhängig (TCP/UDP) | SSH-Tunnel, Anwendungen ohne nativen HTTP-Proxy-Support |
Forward Proxy – der Klassiker im Unternehmen
Der Forward Proxy ist das, was man im KMU-Umfeld typischerweise meint, wenn man von “dem Proxy” spricht. Er sitzt zwischen den internen Clients und dem Internet:
[PC im Büro] ──→ [Proxy 192.168.1.100:8080] ──→ [www.example.com]
Der Zielserver sieht nur die IP des Proxys, nicht die des einzelnen PCs. Das ermöglicht:
- Zentrales Logging: Wer hat wann welche URL aufgerufen?
- Content Filtering: Kategorien wie “Social Media” oder “Streaming” blockieren
- SSL Inspection: HTTPS entschlüsseln und auf Malware prüfen
- Bandbreitenlimitierung per User oder Gruppe
Reverse Proxy – der Torwächter für Server
Ein Reverse Proxy sitzt vor internen Webservern und nimmt Anfragen aus dem Internet entgegen:
[Browser extern] ──→ [Reverse Proxy / nginx] ──→ [App-Server intern]
Klassische Anwendungsfälle: nginx oder HAProxy als SSL-Termination vor mehreren internen App-Servern, Microsoft Application Proxy für On-Premise-Apps über Azure AD.
Transparenter Proxy
Beim transparenten Proxy ist keine Client-Konfiguration nötig – der Traffic wird auf Netzwerkebene (Firewall/Router) zum Proxy umgeleitet. Der Client weiss davon nichts (daher “transparent”). Viele Firewalls wie die Sophos oder pfSense können diesen Modus aktivieren.
Gängige Proxy-Lösungen
| Lösung | Art | Besonderheit |
|---|---|---|
| Squid | Open Source, Linux | Klassiker, sehr konfigurierbar, kostenlos |
| Zscaler Internet Access | Cloud, Zero Trust | Kein eigener Proxy-Server nötig, Agent auf Clients |
| Cisco Umbrella | Cloud, DNS-basiert | Filtert schon auf DNS-Ebene, sehr schnell ausrollbar |
| Sophos Web Gateway | On-Premise / Cloud | Integriert in Sophos Firewall, einfache Verwaltung |
| Squid on pfSense/OPNsense | Open Source | Gut für KMU ohne dedizierte Proxy-Hardware |
Leistungsstarker Open-Source Forward-Proxy mit Caching, Content Filtering und SSL Inspection. Standard auf Linux-Systemen.
www.squid-cache.org
Proxy in Windows konfigurieren
System-Proxy per netsh (WinHTTP)
WinHTTP ist der Windows-interne HTTP-Stack, den Dienste und viele System-Tools nutzen (z.B. Windows Update, PowerShell Invoke-WebRequest).
# Proxy setzen
netsh winhttp set proxy proxy-server="192.168.1.100:8080" bypass-list="*.firma.ch;10.*;localhost"
# Aktuellen Proxy anzeigen
netsh winhttp show proxy
# Proxy entfernen
netsh winhttp reset proxy
# Proxy aus Internet Explorer / WinINET-Einstellungen übernehmen
netsh winhttp import proxy source=ie
Proxy per Registry (WinINET / Browser)
Der “normale” Browser-Proxy wird über die Internet-Einstellungen gesetzt und liegt in der Registry. Du kannst das per PowerShell für den aktuellen Benutzer setzen:
$regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
# Proxy aktivieren
Set-ItemProperty -Path $regPath -Name ProxyServer -Value "192.168.1.100:8080"
Set-ItemProperty -Path $regPath -Name ProxyEnable -Value 1
# Ausnahmen setzen (Semikolon-getrennt)
Set-ItemProperty -Path $regPath -Name ProxyOverride -Value "*.firma.ch;10.*;192.168.*;localhost"
# Proxy deaktivieren
Set-ItemProperty -Path $regPath -Name ProxyEnable -Value 0
Proxy per Umgebungsvariable (für CLI-Tools)
Viele Linux-Tools, Python, curl, git und andere nutzen Umgebungsvariablen:
# Für die aktuelle PowerShell-Session
$env:HTTP_PROXY = "http://192.168.1.100:8080"
$env:HTTPS_PROXY = "http://192.168.1.100:8080"
$env:NO_PROXY = "localhost,127.0.0.1,*.firma.ch,10.0.0.0/8"
# Dauerhaft (User-Scope)
[System.Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://192.168.1.100:8080", "User")
Automatische Proxy-Konfiguration: PAC-Datei und WPAD
In grösseren Umgebungen willst du den Proxy nicht auf jedem PC manuell setzen. Dafür gibt es zwei Mechanismen:
PAC-Datei (Proxy Auto-Configuration)
Eine PAC-Datei ist ein JavaScript-File, das der Browser ausführt, um zu entscheiden: direkter Aufruf oder via Proxy? Du hinterlegst sie auf einem Webserver und verlinkst sie in den Client-Einstellungen.
Minimales Beispiel (proxy.pac):
function FindProxyForURL(url, host) {
// Interne Adressen direkt
if (isInNet(host, "10.0.0.0", "255.0.0.0")) return "DIRECT";
if (isInNet(host, "192.168.0.0", "255.255.0.0")) return "DIRECT";
if (dnsDomainIs(host, ".firma.ch")) return "DIRECT";
// Alles andere über Proxy
return "PROXY 192.168.1.100:8080; DIRECT";
}
Die URL zur PAC-Datei trägst du in den Gruppenrichtlinien oder den Browser-Einstellungen ein:
http://proxy.firma.ch/proxy.pac
WPAD (Web Proxy Auto-Discovery Protocol)
WPAD ermöglicht es, dass Clients die PAC-Datei automatisch finden – ganz ohne manuelle Konfiguration. Der Client sucht per DHCP oder DNS nach dem Standort der PAC-Datei.
DNS-Methode: Lege einen DNS-A-Eintrag wpad.firma.ch an, der auf den Webserver zeigt, der die Datei unter /wpad.dat bereitstellt.
DHCP-Methode: Konfiguriere DHCP Option 252 mit dem Wert http://wpad.firma.ch/wpad.dat.
Proxy per GPO verteilen
Im Active Directory verteilst du die Proxy-Einstellungen am saubersten per Gruppenrichtlinie:
Pfad: Benutzerkonfiguration > Windows-Einstellungen > Internet Explorer-Wartung > Verbindung > Proxyeinstellungen
Oder moderner via Administrative Vorlagen (für Edge/Chrome):
- Chrome:
Computerkonfiguration > Administrative Vorlagen > Google > Google Chrome > Proxyeinstellungen - Edge:
Computerkonfiguration > Administrative Vorlagen > Microsoft Edge > Proxyeinstellungen
Für die PAC-Datei:
Automatische Proxykonfiguration: http://proxy.firma.ch/proxy.pac
SSL Inspection – HTTPS entschlüsseln
Moderner Web-Traffic ist fast ausschliesslich HTTPS. Ohne SSL Inspection sieht der Proxy nur den Ziel-Hostnamen, aber nicht den Inhalt. Für echtes Content Filtering und Malware-Prüfung brauchst du SSL Inspection (auch “SSL Bumping” oder “HTTPS Interception” genannt).
Funktionsweise:
- Client baut Verbindung zum Proxy auf
- Proxy baut eine eigene Verbindung zur Zielseite auf
- Proxy präsentiert dem Client ein dynamisch generiertes Zertifikat, signiert mit der eigenen CA
- Client muss dieser internen CA vertrauen (Root-Zertifikat in Windows/Browser importieren)
Client ←─ [Proxy-CA-Zertifikat] ─→ Proxy ←─ [Echtes Zertifikat] ─→ Zielserver
Root-Zertifikat auf Windows-Clients verteilen (per GPO):
# Lokal testen: Zertifikat in Trusted Root importieren
Import-Certificate -FilePath "C:\Certs\ProxyCA.cer" `
-CertStoreLocation Cert:\LocalMachine\Root
Per GPO: Computerkonfiguration > Windows-Einstellungen > Sicherheitseinstellungen > Richtlinien für öffentliche Schlüssel > Vertrauenswürdige Stammzertifizierungsstellen
Proxy-Einstellungen pro Anwendung prüfen und debuggen
Welchen Proxy nutzt gerade mein System?
# WinHTTP-Proxy prüfen
netsh winhttp show proxy
# WinINET-Proxy prüfen (Registry)
Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings" |
Select-Object ProxyServer, ProxyEnable, ProxyOverride, AutoConfigURL
# Umgebungsvariablen prüfen
Get-ChildItem Env: | Where-Object { $_.Name -match "proxy" }
Verbindungstest durch den Proxy
# Testen ob Proxy erreichbar ist
Test-NetConnection -ComputerName 192.168.1.100 -Port 8080
# HTTP-Anfrage mit explizitem Proxy
Invoke-WebRequest -Uri "https://example.com" -Proxy "http://192.168.1.100:8080" -UseBasicParsing
# curl mit Proxy
curl --proxy http://192.168.1.100:8080 https://example.com -I
Häufige Fehlerbilder
| Symptom | Wahrscheinliche Ursache | Massnahme |
|---|---|---|
| Browser geht, PowerShell nicht | WinHTTP nicht konfiguriert | netsh winhttp set proxy ... |
| ”407 Proxy Authentication Required” | Proxy verlangt Credentials | NTLM/Kerberos-Auth prüfen, Credentials im Proxy hinterlegen |
| SSL-Fehler auf allen Websites | SSL Inspection aktiv, Root-CA fehlt | Root-Zertifikat in Trusted Root importieren |
| Interne Seiten nicht erreichbar | Bypass-Liste unvollständig | Interne Domains in ProxyOverride / PAC-Datei DIRECT |
| App funktioniert ohne Proxy, mit Proxy nicht | App unterstützt keinen Proxy | Umgebungsvariablen HTTP_PROXY versuchen oder App auf Whitelist |
| Teams/OneDrive langsam hinter Proxy | Microsoft-Traffic über Proxy geleitet | Microsoft 365-Endpunkte direkt routen (PAC-Datei anpassen) |
Squid – Minimale Konfiguration (Linux)
Squid ist der verbreitetste Open-Source Forward-Proxy. Eine minimale, funktionierende Konfiguration:
# /etc/squid/squid.conf (Ausschnitt)
# Zugriffsregeln
acl localnet src 192.168.0.0/16
acl localnet src 10.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 443 8080
# Erlauben
http_access allow localnet
http_access deny all
# Port und DNS
http_port 8080
dns_nameservers 192.168.1.1
# Caching
cache_mem 256 MB
cache_dir ufs /var/spool/squid 10000 16 256
maximum_object_size 50 MB
# Logging
access_log /var/log/squid/access.log squid
# Konfiguration prüfen und Dienst neu starten
squid -k parse
systemctl restart squid
# Logs live verfolgen
tail -f /var/log/squid/access.log
Weiterlernen
- Squid Cache Wiki – offizielle Dokumentation
- Microsoft: Proxy considerations for Microsoft 365 (englisch)
- Microsoft: WinHTTP Proxykonfiguration (englisch)
- 4sysops: Proxy settings via PAC file and GPO (englisch)
- ip-insider.de: Was ist ein Forward Proxy?
- Wikipedia: Proxy Auto-Configuration (PAC)
Verwandte Themen: DNS-Grundlagen · VPN-Grundlagen · IT-Security Grundlagen KMU · Windows Firewall · Wireshark Grundlagen
Videos
Kommentare
Frage, Verbesserungsvorschlag oder eigene Erfahrung zu diesem Artikel? Schreib einen Kommentar. Neue Beiträge erscheinen nach kurzer Moderation.
- Lade Kommentare …