V korporacích dnes vládne Microsoft s jeho Active Directory a nám nezbývá, než se tomuto faktu přizpůsobit. V našem konkrétním případě se pokusíme o dohodu mezi Squid3 běžícím na Ubuntu a řadičem domény ve verzi 2008R2. Hlavním předpokladem je vždy komfort uživatelů, takže je nebudeme nutit zadávat jména a hesla více, než je nutné.
Dále se budeme snažit o co nejnižší finanční náklady našeho řešení. Když nebudeme počítat svůj čas, který jsme mohli v klídku prosedět u pivka na zahrádce, nebude nás to stát vlastně nic (to pivko si stejně nakonec dáme). Možná vás nakonec šéf i pochválí a promítne vaši snahu na výplatní pásku, ale spíše skončíte jen s pocitem dobře odvedené práce.
Kde začít? IWA!
Říkali jsme si, že nebudeme otravovat uživatele (až na výjimky). Potřebujeme, aby prohlížeč (IE) poskytl přihlašovací údaje pokud možno sám. Tato funkce (IWA – Integrated Windows Authentication) byla uvedena společně s Windows 2000. Prohlížeč se pokusí bezpečně předat informace o uživateli s použitím protokolu Kerberos, pokud selže, použije se NTLMSSP (NT LAN Manager Security Support Provider). Amatéři toto nastavení vnutí stanicím v doméně přes Group Policy na serveru, zkušenější informatici využijí této příležitosti pro návštěvu vybraných oddělení (marketing, HR, účtárna, …). Ostatní prohlížeče, jako třeba Firefox, IWA standardně také podporují.
Nástroje > Možnosti Internetu > Upřesnit > Povolit Integrované ověření systémem Windows
Naše síť a co o ní musíme vědět
Správný informatik zná zpaměti IP adresy veřejných DNS serverů, pamatuje si nejméně jedno sériové číslo na instalaci Windows a doma má alespoň dva subnety. A proto si lehce dosadíte své údaje na místo těchto vzorových.
- Síť
- Název domény – DOMAIN.INTERNAL
- Název domény (pre-Win2000) – DINTERNAL (tohle se hodí, když ze soucitu vytáhnete stroj s Windows 95)
- Adresa – 192.168.21.0/24
- Proxy
- IP – 192.168.21.44
- Hostname – proxy.domain.internal
- Kerberos hostname – PROXY-K
- Doménové servery
- eupdc1.domain.internal
- 192.168.21.11
- eupdc2.domain.internal
- 192.168.21.12
Nastavení DNS
Pokud máte korektně (čti: doporučeně) nastavenou doménu, budou DNS servery běžet na doménových řadičích. Jednou, před lety, jsem měl DNS na Windows serverech vypnutý a používal jsem vedle běžící BIND, ale nastávaly problémy s aktualizací záznamů, nehledě na šílený balast kolem, co si tam Windowsy zapisovaly. Založte si tedy zde A a reverzní PTR záznam našeho proxy serveru. Mám pocit, že by se stejně sám nakonec vytvořil při přihlášení stroje do domény, ale jistota je jistota. A teď si nastavíme DNS na našem proxy. Překvapivě už se na Ubuntu přímo neupravuje /etc/resolv.conf
jak bych čekal, ale je potřeba zajít hlouběji až do /etc/network/interfaces
. Soubor bude tedy vypadat nějak takhle.
# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.21.44 netmask 255.255.255.0 gateway 192.168.21.9 dns-nameservers 192.168.21.11 192.168.21.12 dns-search domain.internal
Pingneme si cvičně doménový řadič a něco venku a vyzkoušíme rovnou i reverse lookup.
# ping eupdc1.domain.internal -c 4 # ping www.google.com -c 4 # dig -x 192.168.21.11
Synchronizace času – NTP
NTP určitě všichni dobře znáte (a pokud ne, máme o něm článek – pozn. redakce), náš server použije doménové řadiče jako zdroje času. Upravíme si /etc/ntp.conf
a doplníme naše servery.
server eupdc1.domain.internal server eupdc2.domain.internal
Restartneme démona a uvidíme, jak to vypadá s časem.
# service ntp restart * Stopping NTP server ntpd [ OK ] * Starting NTP server ntpd [ OK ] # ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== eupdc1.domain.i 192.168.21.11 3 u 29 64 3 149.465 -64.000 54.114 eupdc2.domain.i 192.168.21.12 4 u 29 64 3 41.705 -29.083 0.993
Tříhlavý pes – Kerberos
Tento protokol má zajímavou minulost, původně byl určen na zabezpečení síťových služeb ve vzdělávacím projektu Athena (MIT, DEC, IBM), kde byly mimo jiné položeny základy X Window System. Nějakou dobu dokonce USA zakázaly export této technologie, protože v té době používal dnes již dávno překonaný DES algoritmus. Nyní se používá notně modifikovaná verze 5. Ještě se s ním můžete také například setkat při autentizaci do WLAN sítí.
Nainstalujeme si ho.
# apt-get install krb5-user libkrb53
A následně upravíme /etc/krb5.conf
.
[libdefaults] default_realm = DOMAIN.INTERNAL # The following krb5.conf variables are only for MIT Kerberos. dns_lookup_kdc = no dns_lookup_realm = no ticket_lifetime = 24h default_keytab_name = /etc/squid3/PROXY.keytab ;Windows 2003 ;default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 ;default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 ;permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5 ;Windows 2008 default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5 [realms] DOMAIN.INTERNAL = { kdc = eupdc1.domain.internal kdc = eupdc2.domain.internal admin_server = eupdc1.domain.internal eupdc2.domain.internal default_domain = domain.internal } [domain_realm] .domain.internal = DOMAIN.INTERNAL domain.internal = DOMAIN.INTERNAL
Aktuální konfigurace je vhodná pro řadiče domény 2008R2. Pro starší řadiče adekvátně upravte, pokud máte pouze jeden, zbavte se i dalších nepotřebných údajů.
A teď se nám bude hodit konečně Squid a LDAP (ten se použije pro Basic authentication).
# apt-get install squid3 ldap-utils
Naše proxy se bude pokoušet ověřit uživatele následujícími metodami a v tomto pořadí, takže snad uspějeme.
Negotiate/Kerberos, Negotiate/NTLM, NTLM a Basic authentication
Pro první dvě Negotiate (domlouvací) metody budeme ještě potřebovat wrapper od pana Moellerse a potom se bude hodit msktutil (Microsoft Keytab Utility), která nám pomůže vytvořit účet počítače pro účely ověřování přes Kerberos.
Msktutil seženete na Fuhm.net a doplníme knihovny pro správnou funkci utility ze standardního repozitáře.
# apt-get install libsasl2-modules-gssapi-mit libsasl2-modules
Pokud tohle všechno máme, nastal čas si popovídat. Připravte si administrátorský účet, případně účet s oprávněním vkládat počítače do AD. Spusťte následující příkaz a zadejte následně heslo.
# kinit administrator Password for administrator@DOMAIN.INTERNAL:
Následně spusťte příkaz klist
a pokud je vše správně, měli byste dostat obdobný výstup.
# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@DOMAIN.INTERNAL Valid starting Expires Service principal 29/08/2012 16:13 30/08/2012 02:13 krbtgt/DOMAIN.INTERNAL@DOMAIN.INTERNAL renew until 30/08/2012 16:13
No není to krása? Než půjdete domů, dejte ještě:
# kdestroy
No a příště nás čeká ta těžší část, dokončíme konfiguraci Kerberose, rozchodíme si NTLM a konečně upravíme nastavení Squidu. Také si ukážeme jak vytvořit pěkné statistiky přístupů z access logů a konečně pochopíme, proč jsou někteří uživatelé tak přepracovaní.