So konfigurieren Sie einen authentifizierenden Proxyserver

8

Mein Arbeitsproxyserver erfordert eine Authentifizierung mit den Benutzeranmeldeinformationen der Microsoft AD-Domäne. Jeder weiß, wie es funktioniert: Wenn Sie sich an einer Windows-Workstation anmelden, werden Ihre browserbasierten Internetzugriffsanforderungen "Internet Explorer" automatisch anhand Ihrer Domain-Anmeldeinformationen authentifiziert (und identifiziert).

Ich fand heraus, dass Firefox sich auch gegen diese Proxyserver authentifizieren kann, und ging lange davon aus, dass sie "etwas Besonderes tun". Kürzlich hat ein Kollege Linux Mint in einer VM installiert und zu meiner Überraschung war er damit beschäftigt, Updates aus dem Internet zu erhalten. Als ich fragte, wie er es zur Arbeit gebracht habe, zuckte er die Achseln und sagte: "Es hat einfach funktioniert."

Dies veranlasste mich, die Proxy-Einstellungen erneut zu überprüfen. Ich führe Kubuntu aus (mit einer Mischung aus G * - und K * -Anwendungen, aber ich verwende die GTK-Anwendungen nur, wenn ich überzeugt bin, dass sie viel besser sind als alles K *)

Ich habe immer noch eine Kopie des Windows-Gasts in einer VirtualBox-VM, hauptsächlich zum Drucken und zum Zugriff auf interne / Unternehmenswebsites (für die sowohl eine Authentifizierung und Identifizierung über MS-Domänenanmeldeinformationen erforderlich ist) als auch zum Ändern meines Domänenkennworts alle paar Tage .

Es wäre also sehr hilfreich, wenn ich [einige / die meisten / alle] meiner Linux-Anwendungen über den Proxyserver zum Laufen bringen könnte. Meine dringendsten Bedürfnisse sind, dass Akregator und Muon arbeiten können. Andere Anwendungen, die davon profitieren können, sind einige Apps, die automatisch aktualisiert werden (z. B. Virtual Box Extentions) oder sich um einen Browser wickeln (Get More Themes / Wall Papers / etc, und die gelegentliche Verwendung von wget).

SSH / SCP-Clients können ohne Authentifizierung über die Firewall arbeiten.

Was ist der richtige Weg (Tool und / oder Verfahren), um dies zu konfigurieren, idealerweise an einem einzigen Ort, da die Pflege meines Passworts an mehreren Orten ein Rezept für die Sperrung meines Kontos ist: - /

Oh, und es wäre ein wahr gewordener Traum, wenn ich das Äquivalent zum Firefox-Dienstprogramm zum Deaktivieren / Aktivieren von Proxys "Quick Proxy" haben könnte, z. B. einen Klick, um die Verwendung von Proxys zu aktivieren oder zu deaktivieren, ohne sich ab- und wieder anzumelden. je nachdem in welchem ​​Netzwerk ich bin. Wenn Sie darüber nachdenken, sollte ein Dienstprogramm trainierbar sein, um Ihre IP-Adresse zu überprüfen und zu wissen, wann Sie den Proxy verwenden müssen! Aber ich schweife ab.

Ich stelle mir vor, dass die Ausführung eines lokalen Proxyservers, der die Authentifizierung dynamisch hinzufügen und bei Bedarf an einen Upstream-Proxyserver weiterleiten kann, die einzige echte Lösung sein könnte.

Johan
quelle
Um welche Art von Proxy handelt es sich? Linux oder Windows?
Mitternachtsstahl
Der Proxyserver basiert auf Windows.
Johan
Es hört sich so an, als ob sich der Proxy in einer Pass-by-Konfiguration befindet und Ihre Firewall ausgehenden Webverkehr von allen Hosts zulässt. So konnte Ihr Kollege ohne Authentifizierung surfen. Ist der Proxyserver, den Sie verwenden, ISA oder TMG?
Mitternachtsstahl
Die Firewall erlaubt nicht den Ausgang von allen Hosts, sonst würde ich nur den Proxyserver umgehen. Was bedeutet "Pass by Configuration"? Lassen Sie mich klarstellen: Von meiner Linux-Workstation aus können nur a) Firefox (unter Verwendung einer eigenen in Firefox gespeicherten Proxy-Konfiguration und Authentifizierung) auf das Internet zugreifen sowie Anwendungen, die auf einer Windows-VM ausgeführt werden (Hinweis: Die Windows-VM ist ein Domain-Mitglied und der Benutzer authentifiziert sich bei der Anmeldung gegen die Domain)
Johan
Ich weiß nicht, ob es ISA oder TMG ist. Wenn die Lösung je nach Lösung unterschiedlich ist, würde mich beide Lösung interessieren.
Johan

Antworten:

2

Von meiner Linux-Workstation aus sind die einzigen Anwendungen, die auf das Internet zugreifen können, a) Firefox (unter Verwendung einer eigenen in Firefox gespeicherten Proxy-Konfiguration und -Authentifizierung) sowie Anwendungen, die auf einer Windows-VM ausgeführt werden (Hinweis: Die Windows-VM ist ein Domänenmitglied und Der Benutzer authentifiziert sich beim Anmelden bei der Domain.

Lösungsoption : Führen Sie einen Webproxy auf Ihrer Windows-VM aus. Richten Sie Ihr System so ein, dass diese Instanz als Proxy verwendet wird.

Da Ihre Windows-VM bereits authentifiziert ist und Datenverkehr durch sie zugelassen wird, werden durch das Einrichten eines SOCKS-Proxys auf dieser VM-Instanz Ihre Authentifizierungsanforderungen zentralisiert. Wenn es nur für Sie und Ihre Boxen ist, sollte dies in Ordnung sein und ist wahrscheinlich ziemlich einfach.

Huckepack auf dieser Idee ist, einen SSHD-Daemon auf der Windows-VM zum Laufen zu bringen, damit Sie Dinge wie SSH SOCKS-Tunnel von Ihren anderen Boxen über die VM ausführen können:

ssh -D 1080 windows-user@windows-vm

Für Apps, bei denen möglicherweise Probleme auftreten oder bei denen Sie die Apps nicht neu konfigurieren möchten, können Sie sshtunnel verwenden , mit dem iptables-Regeln für die Weiterleitung des Datenverkehrs eingerichtet werden. Funktioniert für Linux- und Mac-Systeme.

Wenn Sie die Installation eines Proxys auf der Windows-VM selbst vermeiden müssen, können Sie eine Squid-Proxy-Box einrichten, die so konfiguriert ist, dass sie sich bei Windows AD authentifiziert. Eine Anleitung dazu finden Sie hier:

Lösungsoption : Squid Proxy Authentifiziert über AD / NTLM

http://techmiso.com/1934/howto-install-squid-web-proxy-server-with-active-directory-authentication/( toter Link )

Eine andere NTLM-Proxy-Lösung, obwohl ich denke, dass diese tatsächlich auf einem Windows-Computer ausgeführt wird:

Lösungsoption : NTLM-Proxy http://cntlm.sourceforge.net/

Flügel Tang Wong
quelle
Ich untersuche cntlm bereits, es befindet sich zufällig auch in den Standard-Ubuntu-Repositories.
Johan
1
Die cntlm-Lösung scheint vielversprechend zu sein. Bisher können damit wget und chrom arbeiten. Wget arbeitet mit der cntlm-Adresse: port in der .wgetrc-Datei. Chromium wird so konfiguriert, dass es die sogenannten "System-Proxy-Einstellungen des Computers" verwendet, wobei ich den Proxy in den KDE-Systemeinstellungen-> Proxy-> Manuelle Konfiguration konfiguriert habe. Chromium verwendet dies dynamisch, dh wenn ich die Einstellung in KDE ändere, wird Chrom betroffen, ohne dass Chrom neu gestartet werden muss. TBC
Johan
Bisher funktioniert dies noch NICHT für Konqueror, Muon oder Akregator, von denen keine die Proxy-Einstellungen direkt verfügbar macht. Ich glaube, Muon verwendet apt-get im Hintergrund, das ähnlich wie wget konfiguriert werden kann. Ich verstehe den Unterschied zwischen den Konfigurationsoptionen "Manuell angegebener Proxy" von KDE und "Systemproxy" von KDE nicht. Dies kann der Schlüssel sein, damit es für alle Anwendungen funktioniert. Ich stelle auch fest, dass die KDE-Einstellungen auch nach dem Abmelden und erneuten Anmelden nicht in Shell-Skripten eingefügt werden, was enttäuschend ist.
Johan
Die Proxy-über-MS-Windows-Lösung ist für mich nicht akzeptabel. Andere mögen sich anders fühlen, aber das Ausführen einer ganzen zusätzlichen Betriebssysteminstanz, nur um ausgehenden Netzwerkpaketen Authentifizierung hinzuzufügen, ist ein bisschen zu viel Ressourcenfresser und entfernt meine Abhängigkeit von MS Windows nicht.
Johan
1
Ich habe das Problem mit cntlm gemäß dem obigen Vorschlag gelöst und kann es nur empfehlen. Das Problem, das ich mit den meisten KDE-Anwendungen hatte, die die globale KDE-Einstellung nicht verwendeten, war auf ein falsches Format zurückzuführen, das bei der Angabe des Proxyservers in den KDE-Proxyeinstellungen verwendet wurde. Übrigens scheint Chromium dafür nicht empfindlich zu sein (ich habe das http://bei der Konfiguration des Proxys weggelassen)
Johan
8

cntlm bietet eine Lösung zusammen mit einigen Konfigurationen.

Die grundlegenden Schritte sind:

  1. Installieren Sie cntlm.
  2. Bearbeiten Sie die Konfigurationsdatei unter /etc/cntlm.conf. Die enthaltenen Kommentare machen es einfach genug.
  3. Fügen Sie einen (oder zwei) Proxyserver hinzu.
  4. Geben Sie Ihren Benutzernamen und den NT-Domänennamen an den entsprechenden Stellen an und entfernen Sie den Kennworteintrag.
  5. Starten Sie den cntlm-Dienst, z. B. über

    $ sudo /etc/init.d/cntlm start
    
  6. Mit cntlm können Sie den Proxy testen und aus Ihrem Kennwort einen Hash generieren - z. B. mit dem Befehl (als root).

    $ cntlm -I -M http://www.test.com
    
  7. cntlm fordert Sie zur Eingabe Ihres Domain-Passworts auf. Anschließend werden verschiedene Authentifizierungsmechanismen für den konfigurierten Proxyserver getestet. Wenn eine Arbeitsmethode gefunden wird, werden zwei Zeilen gedruckt, die in die Konfigurationsdatei aufgenommen werden müssen.

  8. Stoppen Sie den cntlm-Server und fügen Sie die in Schritt 6 oben erhaltenen Zeilen zu hinzu /etc/cntlm.conf.
  9. Starten Sie cntlm neu

Jetzt cntlmläuft und ist einsatzbereit. An mehreren Stellen können verschiedene Programme für die Verwendung konfiguriert werden. cntlmAnschließend werden ausgehende Pakete transparent mit NT-Domänenauthentifizierungstoken versehen und an den konfigurierten Proxyserver weitergeleitet.

Verwenden von Qt / KDE

Geben Sie für native Qt / KDE-Anwendungen unter " KDE-Systemeinstellungen -> Netzwerkeinstellungen -> Proxyeinstellungen " "Manuell konfigurierten Proxyserver verwenden" an . Der Proxy wird wie http://localhostbeim Port 3128 angegeben (Standardeinstellung für, cntlmsofern Sie ihn nicht geändert haben). Diese Anwendungen werden dynamisch mit neuen Einstellungen aktualisiert und es ist kein Neustart oder Abmelden / Anmelden erforderlich, um die Einstellungen zu aktualisieren.

Dropbox- und Google-Clients

Viele Anwendungen können Shell-Umgebungsvariablen verwenden. Bemerkenswert sind hier die Dropbox- und Google Earth-Clients. Verwenden Sie für diese Anwendungen folgende Shell-Umgebungsvariablen:

no_proxy=localhost,127.0.0.0/8,*.local
NO_PROXY=localhost,127.0.0.0/8,*.local
all_proxy=socks://localhost:3128/
ALL_PROXY=socks://localhost:3128
http_proxy=http://localhost:3128
HTTP_PROXY=http://localhost:3128
ftp_proxy=http://localhost:3128
FTP_PROXY=http://localhost:3128
https_proxy=http://localhost:3128
HTTPS_PROXY=http://localhost:3128

s3cmd, locken & wget

Hinweis: Einige Anwendungen verwenden nur Kleinbuchstaben, andere nur Großbuchstaben. Einige versuchen zuerst den einen und dann den anderen.

s3cmd(Der Amazon S3-Client) curlund wgetkann bei Bedarf zusätzlich über eigene Konfigurationsdateien konfiguriert werden. Dies ist praktisch, da sie bei jedem Aufruf ihre eigenen Konfigurationsdateien lesen. Da diese Programme in der Regel nur von kurzer Dauer sind (ein einzelner Aufruf besteht nach Abschluss eines Downloads), ist dies sehr nützlich.

Das Format für s3cmdin ~/.s3cfgist:

proxy_host = localhost
proxy_port = 3128

Das Format für wget in ~/.wgetrcist:

https_proxy = http://localhost:3128
http_proxy = http://localhost:3128
ftp_proxy = http://localhost:3128

Das Format für curlin ~/.curlrcist:

proxy = localhost:3128

Andererseits erfordert das Bearbeiten des Shell-Profils oder anderer Umgebungskonfigurationsdateien normalerweise einen Neustart, ein Abmelden und ein erneutes Anmelden oder ähnliches. Es lohnt sich zu untersuchen /etc/environment, ~/.pam_environment, ~/.kde/env/proxy.shetc , da diese Standardplätze sind Proxy - Einstellungen über Shell - Umgebungsvariablen konfiguriert setzen, besonders alle Benutzer und Dienste auf dem System zu beeinflussen.

Ich verstehe auch, dass es möglich ist, die Umgebungseinstellungen auf Anwendungsbasis unter Verwendung der jeweiligen .desktopDateien zu ändern , habe es jedoch noch nicht (erfolgreich) versucht.

VirtualBox

VirtualBox kann so konfiguriert werden, dass ein Proxy (z. B. zum Suchen und Herunterladen von Softwareupdates) über die GUI oder über den folgenden Befehl verwendet wird:

$ VBoxManage setextradata global GUI/ProxySettings \
    "proxyEnabled,localhost,3128,authDisabled,,"

Um der Vollständigkeit halber zu deaktivieren, verwenden Sie:

$ VBoxManage setextradata global GUI/ProxySettings \    
    "proxyDisabled,,,authDisabled,,"

Feuerfuchs

Für Firefox verwende ich das QuickProxy-Addon. Wenn Firefox selbst manuell für die Verwendung des Proxyservers auf dem lokalen Computer konfiguriert wurde, aktiviert / deaktiviert QuickProxy die Einstellung lediglich.

GEEIGNET

APT (im Hintergrund von Synaptic, Myon und Freunden verwendet) verwendet eine Konfigurationsdatei in /etc/apt/apt.conf.d/z. B. Die 00proxy Aktivierung des Proxys für APT erfolgt über folgende Zeilen:

Acquire::http::Proxy "http://localhost:3128";
#Acquire::ftp::proxy "ftp://localhost:3128/";
#Acquire::https::proxy "https://localhost:3128/";

Hinweis: add-apt-repository verwendet das Stammprofil, oder Sie können sudo so konfigurieren, dass alle http * _proxy-Einstellungen durchlaufen werden.

Ein Skript, um sie alle zu regieren

FWIW Ich bin gerade dabei, ein modulares Skript zu schreiben, um den Proxy für zahlreiche Programme zu aktivieren / deaktivieren. Ich habe bisher folgende Module geschrieben:

$ ls -lF proxymanager/modules/
total 60
-rwxr-xr-x 1 root root  919 Oct  8 17:27 apt*
-rwxr-xr-x 1 root root 1037 Oct  8 13:10 bashrc*
-rwxr-xr-x 1 root root  391 Oct  8 12:18 cntlm*
-rwxr-xr-x 1 root root  684 Oct  8 12:58 curl*
-rwxr-xr-x 1 root root  609 Oct  8 13:02 dropbox*
-rwxr-xr-x 1 root root  672 Oct  8 12:18 gnome*
-rwxr-xr-x 1 root root  691 Oct  8 12:18 kde*
-rwxr-xr-x 1 root root  689 Oct  8 13:03 root_bashrc*
-rwxr-xr-x 1 root root  691 Oct  8 13:03 root_curl*
-rwxr-xr-x 1 root root  827 Oct  8 13:03 s3cmd*
-rwxr-xr-x 1 root root  454 Oct  8 13:03 survive_reboot*
-rwxr-xr-x 1 root root  860 Oct  8 13:06 suse-sysproxy*
-rwxr-xr-x 1 root root  653 Oct  8 12:46 sysenvironment*
-rwxr-xr-x 1 root root  465 Oct  8 13:04 virtualbox*
-rwxr-xr-x 1 root root  573 Oct  8 13:04 wgetrc*

Sowie eine Steuerungsanwendung. Diese werden hoffentlich bald in einen Github oder ein anderes Online-Zuhause verlegt.

Johan
quelle
Dies ist seitdem zu GitHub übergegangen, hat mehr Module gewonnen und nähert sich langsam aber sicher der verwendbaren Form. Wagemutige und abenteuerlustige Typen finden dies möglicherweise nützlich: github.com/Tahaan/proxymanager
Johan
Neues zu lernen. Danke. Wie kann ich das Passwort in der Befehlszeile an cntlm übergeben ... Ich möchte keine Aufforderung zur Eingabe des Passworts?
Thushi
0

Die Proxy-Authentifizierung mit ntlm wird unter den folgenden Links ausführlich erläutert.

Das Problem mit ntlm ist jedoch, dass Sie die cntlmKonfigurationsdatei mehrmals täglich aktualisieren müssen . Stellen Sie sich eine Situation vor, in der verschiedene Benutzer einen gemeinsamen Computer gemeinsam nutzen und bei cntlmjeder Anmeldung am System ihr AD-Kennwort in der Konfigurationsdatei aktualisieren müssen . Möglicherweise steht eine Methode zur Verfügung, mit der die cntlmKonfigurationsdatei automatisch aktualisiert wird, wenn ein Benutzer angemeldet ist.

user173141
quelle
Ich aktualisiere meine cntlm-Konfigurationsdatei nur, wenn sich mein NTLM-Proxy-Passwort (das Domain-Passwort) ändert.
Johan