Threat Management Gateway (TMG) i Internet Security and Acceleration Server (ISA) fungují jako forward HTTP/S proxy. TMG k tomu má ještě HTTPS inspekci, pokud chcete. Používá to výchozí port 8080, což jistě znáte.
Důležité je ale, že tahle proxy umí ověřovat uživatele. Umí je ověřovat pomocí Windows authentication, tedy přímo těmi údaji, kterými se uživatelé přihlásili do systému. Má to tedy SSO (single sign on). Uživatelé nemusí nic zadávat, ale přesto proxy ví, o koho se jedná.
A můžete tedy mít přístupová pravidla pro jednotlivé Windows skupiny, nebo klidně jednotlivá individua.
TMG i ISA umí ověřovat klienty pomocí NTLM, nebo Kerberos. Oba tyto protokoly nabízí ten zmíněny SSO, takže to uživatel vlastně ani nepozná. Rozdíl je v tom, že NTLM je algoritmicky zastaralý (MD5, MD4, DES) a je infrastrukturně nebezpečný. NTLM je také výkonově podstatně horší, než Kerberos, obzvláště přes trusty (vztahy důvěry).
Kerberos je naopak pro intranetové použití maximálně bezpečný - umí používat AES, pakliže máte domain functional level (DFL) na úrovni alespoň Windows 2008. Vzájemně autentizuje všechny účastníky transakce a navíc má parádní výkon.
Když nastavím proxy ručně...
Pokud zadáte do nastavení proxy jen IP adresu, bude to vždycky používat NTLM. To je natvrdo zakódováno do Windows. Pokud zadáte naopak přímo doménové jméno TMG/ISA serveru, bude se nejspíš moci použít Kerberos. Pokud byste zadávali nějaký alias (A, nebo CNAME), tak to závisí na verzi systému i prohlížeče. Nekdy se použije NTLM, někdy se může Kerberos.
Takže je lepší tam dávat přímo doménové jméno toho serveru a máte nejspíš Kerberos.
Nojo, ale co když používám automatickou konfiguraci, nebo mám cluster/array s CARP?
No právě. To se v obou případech používá technologie WPAD (prostě WPAD.DAT soubor, nebo skript). Jenže problém je, že TMG i ISA do tohoto souboru dávají ve výchozím stavu IP adresy.
Tedy IP adresu sami sebe, nebo IP adresy všech členů clusteru. Takže se pak Kerberos rozhodně nepoužije a místo toho jedete jen přes NTLM. Úplně zbytečně. A znám případy, kdy kvůli špatnému výkonu NTLM v tomto scénáři někdo úplně zbytečně posiloval farmu.
Mít i tak Kerberos je jednoduché. Stačí prostě jenom přimět TMG/ISA server, aby do toho WPAD skriptu dával místo IP adres rovnou jména členů té vaší array, nebo sama sebe. Stačí k tomu tento skript, který najdete i na oficiálním webu Microsoftu (tady, tu, zde, nebo tady):
Set oISA = CreateObject("FPC.Root")
Set oArray = oISA.GetContainingArray
Set oWebProxy = oArray.ArrayPolicy.WebProxy
If oWebProxy.CarpNameSystem = 0 Then WScript.Echo "Already ok."
oWebProxy.CarpNameSystem = 0
oWebProxy.Save true
WScript.Echo "Cofigured ok."
Je to VBS, stačí to spustit na jednom členovi array, nebo na konfiguračním serveru (CSS).