Zum Inhalt springen
sw
en

Tippe um zu suchen

Netzwerk

Proxy-Server – Grundlagen

Was ein Proxy-Server ist, welche Typen es gibt und wie du ihn in Windows, Browsern und per GPO richtig konfigurierst.

8 Min Lesezeit Fortgeschritten Zuletzt aktualisiert:

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:

TypRichtungTypischer Einsatz
Forward ProxyClient → Proxy → InternetUnternehmens-Internetzugang, Content Filtering
Reverse ProxyInternet → Proxy → interner ServerWebserver absichern, Load Balancing (z.B. nginx, HAProxy)
Transparenter ProxyClient merkt nichtsISP-seitige Filter, interne Umleitung ohne Client-Konfiguration
SOCKS-ProxyProtokollunabhä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ösungArtBesonderheit
SquidOpen Source, LinuxKlassiker, sehr konfigurierbar, kostenlos
Zscaler Internet AccessCloud, Zero TrustKein eigener Proxy-Server nötig, Agent auf Clients
Cisco UmbrellaCloud, DNS-basiertFiltert schon auf DNS-Ebene, sehr schnell ausrollbar
Sophos Web GatewayOn-Premise / CloudIntegriert in Sophos Firewall, einfache Verwaltung
Squid on pfSense/OPNsenseOpen SourceGut für KMU ohne dedizierte Proxy-Hardware
Squid Proxy Server Gratis linux

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:

  1. Client baut Verbindung zum Proxy auf
  2. Proxy baut eine eigene Verbindung zur Zielseite auf
  3. Proxy präsentiert dem Client ein dynamisch generiertes Zertifikat, signiert mit der eigenen CA
  4. 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

SymptomWahrscheinliche UrsacheMassnahme
Browser geht, PowerShell nichtWinHTTP nicht konfiguriertnetsh winhttp set proxy ...
”407 Proxy Authentication Required”Proxy verlangt CredentialsNTLM/Kerberos-Auth prüfen, Credentials im Proxy hinterlegen
SSL-Fehler auf allen WebsitesSSL Inspection aktiv, Root-CA fehltRoot-Zertifikat in Trusted Root importieren
Interne Seiten nicht erreichbarBypass-Liste unvollständigInterne Domains in ProxyOverride / PAC-Datei DIRECT
App funktioniert ohne Proxy, mit Proxy nichtApp unterstützt keinen ProxyUmgebungsvariablen HTTP_PROXY versuchen oder App auf Whitelist
Teams/OneDrive langsam hinter ProxyMicrosoft-Traffic über Proxy geleitetMicrosoft 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


Verwandte Themen: DNS-Grundlagen · VPN-Grundlagen · IT-Security Grundlagen KMU · Windows Firewall · Wireshark Grundlagen

Videos

YouTube
Grundlagen: Proxy Server

Kommentare

Frage, Verbesserungsvorschlag oder eigene Erfahrung zu diesem Artikel? Schreib einen Kommentar. Neue Beiträge erscheinen nach kurzer Moderation.

  • Lade Kommentare …
Kommentar schreiben