Zpět na seznam článků     Číst komentáře (3)     Verze pro tisk

to MS Proxy: Já jsem IE!

Autor: compman   
2.6.2006

..aneb "NTLM Authorization Proxy Server".. nemůžete se ve firmě dostat na Internet jinak než ze systému MS Windows a s použitím Internet Exploreru? Oblafněte proradnou Proxinu..


Znáte to - věčný spor síťových administrátorů o tom, zda je lepší Windows nebo Linux.. "Linuxáci" tvrdí, že toto řešení má více výhod, protože je rychlejší, konfigurovatelnější, stabilnější a hlavně - je zadarmo. "Windowsáci" v čele s komentáři Microsoftu tvrdí, že je jejich server více zabezpečen díky podpoře firmy Microsoft, která pro jejich servery vydává Service Packy, jež zatmelují různé díry. Ale jako hlavní důvod uvádí administrátoři MS sítí malou náročnost na jejich řemeslo. Microsoft za ně dělá vlastně věškerou práci vydáváním záplat a upgradů.
Firma Microsoft se na to dívá z jiného úhlu: "...správa serveru je znatelně méně náročná na teoretické/praktické znalosti než je tomu u konkurenčních produktů...". Jenomže, zatímco Linuxová proxy defalutně připouští vše možné, MS Proxy používá primárně IWS (Integrated Windows Authentication), známou jako autentizační protokol NTLM (NT Lan Manager).


NTLM ?
Pracuje na principu výzvy a odpovědi, proto se mu také říká "challenge-response" protokol. Používá se hlavně v doménách s "Windows 2000" serverem. Cituji microsoft.com/cze: "V síťovém prostředí slouží protokol NTLM k ověřování transakcí mezi dvěma počítači, kdy jeden nebo oba počítače pracují se systémem Windows NT verze 4.0 nebo starším. Sítě s takovou konfigurací jsou označovány jako sítě ve smíšeném režimu. Jedná se o výchozí nastavení systémů řady Windows Server 2003."
Dříve - na Windows 9x - se používaly LM (LanMan) hashe, nyní se ve Windows používá Kerberos.
Více informací o NTLM - viz. Odkazy níže.

Jak funguje autentizace pomocí NTLM ?
Tří-typovým handshake.. rozumněli jste? :)
Komunikaci začíná (jak jinak) klient (C) a odpovídá mu server (S):

1) C -> S : GET ..... . //klasický GET požadavek na cokoli
2) S -> C : 401 Unauthorized (WWW-Authenticate: NTLM) . //server spojení odmítnul a uvedl příčinu - NTLM nebylo použito
3) C -> S : GET ..... (Authorization: NTLM [base64 hash zprávy - Type 1]) . //totéž co v bodě 1, jen s přidaným base64 hashem, ve kterém jsou obsaženy různé možnosti komunikace klienta, někdy i název stanice a domény, ve které se klient nachází
4) S -> C : 401 Unauthorized (WWW-Authenticate: NTLM [base64 hash zprávy - Type 2]) . //pro "tvrdohlavý" server to pořád není dostačující a tak hodí znova 401 :) , avšak pošle klientovi také "výzvu" (challenge) a může obsahovat i "dobrovolně vydané" informace o serveru
5) C -> S : GET ..... (Authorization: NTLM [base64 hash zprávy - Type 3]) . //zpráva typu 3 už obsahuje jak jméno stanice, tak jméno domény, jméno přihlášeného uživatele a potvrzení, že uživatel zná heslo k tomuto účtu, aniž by heslo bylo posláno přímo (!)
6) S -> C : 200 Ok . //Ok. Ok? Vše proběhlo úspěšně a uživatel je autorizován. Ok! :)


ale zpět k tématu...

Co? Kde? Jak? Proč? "NTLM Authorization Proxy Server"?
Jak už z názvu plyne, jedná se o proxy server napsaný v Pythonu, který spustíme na naší mašině (localhost - 127.0.0.1). Jak už bylo zmiňováno v úvodu, je to pro "oblafnutí" MS Proxy. Vlastně nejde ani tak o "oblafnutí", jako spíše o NTLM autentizaci. Starší prohlížeče mimo Internet Explorer nepodporují právě tuto autentizaci, a tudíž se nedostanou přes (tu zatracenou a neotisknutelnými přívlastky nazývanou) MS Proxy. Řešením je právě "něco", co nám bude měnit hlavičky packetů, aby vypadaly jako od IE a také "něco", které se postará o NTLM autentizaci, přičemž "něco" je náš malý proxy server :). Velice zajímavé je také to, že server lze jednoduše "spustit", bez instalace a bez binárních souborů (Python).

Kde to stáhnu, a jak to nakonfiguruji?
Všechny důležité odkazy jsem nechal až nakonec. K dispozici je naštěstí zip (pro Windows), tak i tar.gz se "zdrojovými kódy". Je k dispozici jak "experimentální", tak "stable" vydání. Starou stabilní verzi (0.97) stahujte pouze, pokud vám experimentální (která je právě taky docela stabilní) nefunguje.
Co se týče konfigurace, pro funkčnost se MUSÍ editovat soubor "server.cfg". Pokud si nevíte s konfigurací rady, vizte Odkazy níže.
Také musíte nastavit klientský program (prohlížeč), aby vše směroval na localhost na daný port.

Připravit, pozór, start!
Ještě před spuštěním se ujistěte, že máte nainstalován Python 1.5.2 nebo novější. Jestliže máte vše ostatní hotovo, můžete zhlédnout kódy programu :) , nebo můžete samozřejmě zkusit server spustit.
Pokud program neskončí hláškou pana Errora a server funguje, máte vyhráno. :)

Jak jsme toho docílili? Jak to funguje?
Prohlížeč posílá požadavky na naši malou proxinku na 127.0.0.1, místo přímého posílání na "MS Proxy". "Naše" proxy tyto packety zpracuje - upraví jim hlavičku tak, aby vypadaly, jako z OS Windows a z IE (dle konfigurace), a až pak je bude posílat na MS Proxy. Navíc se postará o NTLM autentizaci (zase dle konfigurace). Odpovědi z MS Proxy samozřejmě půjdou přes "naši" proxy. Tímto jednoduchým způsobem se lze dostat přes "příliš-microsofťácky-nastavený proxy server" :).

pre-dodatek
Úplně nahoře jsem se zmínil, že tento způsob už v dnešní době má malé využití. Ano, má, ale pokud "MS Proxy" povoluje pouze IE a vy chcete používat třeba firefox (který umí NTLM autentizaci), potom je tento prográmek vhodný. Linuxoví uživatelé ho ocení obzvlášť, byl (poslední verze - 2002) totiž primárně vyvíjen pro wget.

Odkazy
- Přesunutá domovská stránka projektu, je zde i download.
- README - přečíst, dozvíte se tam o "Basic" a "Digest" možnostech autentizace, program používá "Basic" .. toto readme opravdu doporučuji prostudovat, protože jsem z něj nečerpal :)
Něco jsem musel i hledat v Googlu. Bez něj bych tento článek nenapsal .. bez něj bych vlastně byl pořád jen "obyčejný" uživatel PC, bez znalosti Linuxu. :)
- Wikipedie!
- Kompletní info o NTLM
- Více informací, jak probíhá NTLM autentizace
- NTLM a FireFox

Asi v polovině psaní tohoto návodu jsem vygooglil článek na Linuxzone o NTLM APS (jak to nazývá tvůrce). Článek se však zabývá praktickou částí a hlavně nastavením. Vetšina tamějšího textu je přeložena právě z domovské stránky projektu (funkce a možnosti programu). Najdete tam onu slibovanou pomoc s nastavením :). Rovněž něco z historie NTLM tam také je.


Epilog?
Snažil jsem se to napsat tak, aby to pochopili i "inteligentní začátečníci", kteří si pojmy, kterým nerozumí, najdou na Googlu.. a ti, kteří to chápat nechtějí, nepochopí. Využití programu je poměrně dalekosáhlé, jelikož umožňuje i vzdálenou web NTLM autentizaci.
Jak vždycky ríkám, na něco jsem určitě zapomněl, jen nevím na co. Od toho tu máme komentáře :).

compman :)


Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 0/0

1  2  3  4  5    
(známkování jako ve škole)