Login
Newsletter
Do, 7. Februar 2008, 16:37

Mit cntlm Firmen-Proxy überwinden

In Unternehmen, die ihre Infrastruktur auf Microsoft-Produkten aufbauen, findet man oft Web-Proxy-Server, die NTLM-Authentifikation verlangen.

Als Linux-Anwender hat man hiermit noch kein Problem, wenn man die führenden Webbrowser wie Firefox oder Konqueror einsetzt. Prekär wird die Lage allerdings, wenn man Tools wie apt-get, w3m oder wget nutzen will.

Die Administratoren der Firewall könnten als Abhilfe die NTLM-Authentifikation abschalten und stattdessen die Basic-Authentifikation aktivieren. In vielen Unternehmen dürfte dies jedoch aufgrund der Firmenpolitik nicht möglich sein. Damit bleibt als einziger Ausweg, seinen Tools die NTLM-Authentifikation beizubringen.

Eine einschlägige Websuche zu diesem Thema fördert fast durchgehend das Tool ntlmaps zutage. Das Programm ist gut dokumentiert und normalerweise nach dem Ausfüllen der benötigten Angaben in der Konfigurationsdatei problemlos zu benutzen. Allerdings gibt es Fälle, wo es nicht funktioniert. In diesem Fall hat man wenig Chancen, da die Entwicklung nahezu stillsteht und im Internet nichts zu eventuellen Problemen zu finden ist. Aber auch wenn es funktioniert, ist es meinem Gefühl nach eher langsam. Außerdem benötigt es Python, und es ist unklar, welche Python-Versionen geeignet sind (offiziell nur 1.5.2).

Abhilfe schafft nun das Programm cntlm. Es ist bereits mindestens ein Jahr alt, aber eines dieser völlig übersehenen Juwelen im Open-Source-Bereich. Bei mir funktionierte es auf Anhieb. Die Konfiguration ist genauso einfach wie bei ntlmaps.

cntlm sollte allmählich in den Distributionen ankommen. In Debian 4.0 fehlt es, in Debian Testing ist es jedoch mittlerweile enthalten. Ich installierte es auf meinem Debian-System, indem ich das Quellcode-Paket für Testing nahm, es entpackte und »debuild« aufrief. Dies erzeugte ein Binärpaket, das man dann mit dpkg -i installieren kann.

Nachdem man die Konfiguration vorgenommen hat, kann man cntlm, das als Daemon läuft, mit /etc/init.d/cntlm start starten. Hat man als Port 3128 angegeben, so kann man nun die Umgebungsvariable http_proxy folgendermaßen definieren:

export http_proxy=http://localhost:3128/

Selbstredend kann man auch seinen Browser so konfigurieren, dass er cntlm als Proxy verwendet, doch das scheint mir nur sinnvoll, wenn der Browser das NTLM-Protokoll nicht beherrscht.

Die meisten Kommandozeilen-Tools unter Linux benutzen die Umgebungsvariable http_proxy automatisch. Wo das nicht der Fall ist, kann man mit Konfigurations-Optionen nachhelfen, z.B. bei apt-get: Dazu schreibt man in die Datei /etc/apt/apt.conf die Zeile

Acquire::http::Proxy "http://localhost:3128/";

Um den Umstieg von ntlmaps zu erleichtern, kann man auch Port 5865, den Standard-Port von ntlmaps, wählen.

cntlm funktionierte für mich nicht nur, wo ntlmaps aus unbekannten Gründen abstürzte, sondern ist auch durch die Implementierung in C deutlich schneller als dieses und benötigt nur ein Viertel des Speichers.

Kommentare (Insgesamt: 15 || Alle anzeigen )
Re: kerberos wär mir lieber (svvc, Mi, 5. März 2008)
kerberos wär mir lieber (svvc, Mo, 3. März 2008)
Re[2]: OpenVPN (Erik, Sa, 9. Februar 2008)
Re[2]: Debian... (kamome, Fr, 8. Februar 2008)
Re: OpenVPN (fuffy, Fr, 8. Februar 2008)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten