Verwendet man einen Caching- oder Filtering-Proxy oder hat eine entsprechende Firewall bzw. UTM (z.B. von Securepoint) im Einsatz, so lautet die Best Practice auf den Computern die Einstellungen für den Proxy-Server vorzunehmen. Zwar geht es auch mit “Transparent Proxies”, also das die Firewall den Verkehr quasi umleitet, aber die Clients reagieren deutlich besser wenn sie von dem Proxy-Server Wissen.

Dieser Beitrag wurde durch eine Frage von meinem Kollegen Jörg (IT-Service Häcker e.K., Grüße an dieser Stelle) inspiriert. Vielen Dank für den Trigger.

Die Sache mit den Proxy-Einstellungen ist nicht so trivial wie man vielleicht meinen möchte. So gibt es unterschiedliche Schnittstellen (WinINET und WinHTTP) und zudem können Anwendungen noch dazu eigene Einstellungen haben. Das bedeutet es muss beachtet werden, ob man die Einstellung für die eine oder die anderen oder beide Schnittstellen setzen muss und ob diese pro Benutzer oder für den gesamten Computer greifen sollen und ob gegebenen falls auch noch gezielt Anwendungen konfiguriert werden müssen.

Für viele Anwendungen gilt in der Regel die Konfiguration von WinINET.

Gruppenrichtlinie

Der Klassiker in Active Directory-Umgebungen ist der Weg mittels Gruppenrichtlinie, aber darum soll es hier nicht gehen. Dennoch anbei ein paar Links hierzu und die Quellen (siehe ganz unten) sind ebenfalls interessant:

Windows Pro – Proxy-Server für IE11, Edge und Google Chrome über GPO konfigurieren

TheITBros.com – Configuring Proxy Settings via GPO on Windows

Befehl

Hat man es mit Systemen zu tun, die nicht Mitglied einer Domäne sind oder die entsprechenden Einstelllungen sollen bei der Erst-Einrichtung via Befehl oder Skript eingepflegt oder mittels RMM verteilt werden, ist es gut zu Wissen, welche Wege es gibt.

Ein Klassiker stellt dabei netsh dar, der WinHTTP konfiguriert:

  • Einstellungen anzeigen: netsh winhttp show proxy
  • Einstellungen zurücksetzen: netsh winhttp reset proxy
  • Einen Proxy-Server setzen: netsh winhttp set proxy <IP oder FQDN>:<Port>
  • Eine Ausnahme festlegen: netsh winhttp set proxy “<IP oder FQDN>:<Port>” bypass-list= “*.domain.local”

Diese Einstellungen greifen systemweit, aber nicht für Anwendungen die WinINET nutzen!

Man kann die Einstellungen aus “Systemsteuerung – Internetoptionen” bzw. “Einstellungen – Netzwerk und Internet – Proxy” (also WinINET) systemweit (für WinHTTP) mit nachfolgendem Befehl übernehmen:

netsh winhttp import proxy source=ie

Registry

Die relevanten Stellen für WinINET in der Registry sind

HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings

und

HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings

bzw. je nach verwendeten Methode dann noch jeweils die Unterschlüssel “Connections”.

Man könnte also die Einstellungen über die GUI so setzen wie man dies möchte und die Daten aus der Registry ex- und auf einem Zielsystem importieren.

Skript

Im Grunde ändert ein Befehl oder Skript nur die Registry entsprechend ab. In Form von PowerShell kann dies für WinINET so aussehen:

$ProxySettingsPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

Set-ItemProperty -Path $ProxySettingsPath -Name ProxyEnable -Value 1
Set-ItemProperty -Path $ProxySettingsPath -Name ProxyServer -Value "<IP oder FQDN>:<Port>"
Set-ItemProperty -Path $ProxySettingsPath -Name ProxyOverride -Value '*.domain.local'
Set-ItemProperty -Path $ProxySettingsPath -Name AutoDetect -Value 0

So wird pro Benutzer die Einstellung gesetzt, die Änderung greift in der Regel sofort, je nach Anwendung muss diese einmal neu gestartet werden.

Möchte man unterschiedliche Proxy-Server pro Protokoll setzen, sieht die entsprechende Zeile wie folgt aus:

Set-ItemProperty -Path $proxy -Name ProxyServer -Value "http=<IP oder FQDN>:<Port>;https=<IP oder FQDN>:<Port>"

Weitere Protokolle sind ftp und socks. Ist man nicht sicher, wie die Werte aussehen müssen, kann man diese zunächst über die GUI konfigurieren und via regedit im genannten Pfad nachsehen.

Das System-weite setzen ist mitunter nicht so einfach, daher empfiehlt sich als Workaround die Kombination aus dem Ändern der Registry (für pro Benutzer) wie in diesem Abschnitt mittels PowerShell dargestellt und das anschließende Ausführen von

netsh winhttp import proxy source=ie

Auf diese Weise kann man WinINET und WinHTTP abdecken.

Weiteres

Mit .NET Core bzw. PowerShell Core gibt es die Option, durch das Festlegen von Umgebungsvariablen (HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, NO_PROXY) die Nutzung eines Proxy-Servers zu konfigurieren. Das funktioniert natürlich nur, wenn man PowerShell 7.x oder neuer installiert hat. In Windows 11 ist z.B. PowerShell 5.1 von vornherein mit dabei.

Der Vollständigkeit halber: Mit zum Beispiel Batch oder VBScript (Visual Basic Script) und weiteren geht das auch. Da PowerShell der modernere Ansatz ist, belassen wir es an dieser Stelle dabei.

Automatisch per WPAD

Zwar nicht direkt auf dem System, aber automatisch lassen sich Proxy-Einstellungen auch per Web Proxy Autodiscovery Protocol (WPAD) verteilen. Allerdings müssen hierzu mehrere Voraussetzungen erfüllt sein und man benötigt unter anderem einen Web-Server der die entsprechende Datei bereitstellen kann. Im verlinkten Wikipedia-Artikel wird schnell deutlich, das dies unter Umständen mehr Aufwand bedeutet, als einfach ein paar Befehls- oder Skript-Zeilen.

Vorsicht Falle!

Wie eingangs erwähnt und ungeachtet dieser Einstellungen stellt eine Herausforderung dar, wenn Anwendungen wie manche Browser und weitere, eine eigene Proxy-Konfigurationsmöglichkeit mitbringen. In diesen Fällen nutzen die System- oder Benutzer-weiten Einstellungen wie sie hier genannt wurden leider nichts. Im Zweifelsfall muss man ermitteln wo und wie die jeweilige Anwendung die Einstellungen speichert um diese dann beispielsweise per PowerShell anpassen zu können.


Wie hat Dir der Artikel gefallen ?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (2 Stimmen, durchschnittlich 5,00 von 5 Sternen)
Loading...

Du möchtest den Blog unterstützen ?

Neben PayPal.ME gibt es noch weitere Möglichkeiten, lies hier wie du diesen Blog unterstützen kannst.


Quellen

MSXFAQ  – Windows Proxy Konfiguration

 Der Windows Papst – Windows Proxy Server systemweit einstellen

IP loging – Windows proxy settings ultimate guide part II – configuring proxy settings