= Squid en NTLM authenticatie = == Algemene info == De volgende url's hebben mij veel geleerd: http://www.opensourcehowto.org/how-to/squid/squid-with-ntlm-authentication.html http://www.cyberciti.biz/faq/squid-ntlm-authentication-configuration-howto/ http://mkeadle.org/index.php?p=13 De volgende howto heb ik gevolgt: http://mkeadle.org/index.php?p=13 = Windows config = == Windows 2003 server configuratie == Heb AD wizard gevolgt. Volgende instellingen op server * Domein: ADTEST.PSY.DATUX.NL * IP: 192.168.13.13 * Server hostnaam: w2k3-edwin.adtest.psy.datux.nl * Server als DNS laten configureren door de AD wizard. * Gewone standaard gebruiker: edwin, pass test == Windows XP prof. client == * Als DNS 192.168.13.13 instellen. * Aanmelden op het domein(Inloggen als Administrator, niet als user) en testen Als je zover bent heb je dus een werkende windows Active directory met 1 aangemelde computer. W00t! = Syn-3 config = Installeer minimaal de volgende pakketten, inclusief dependencies. Laatste versies in svn tree. * Syn-3 pakket samba * Syn-3 pakket mit_kerberos * Syn-3 pakket squid = Kerberos config = Eerst moeten we zorgen dat kerberos goed werkt. De config staat nog in /etc, maar deze komt later misschien in /home/system: {{{ [Syn-3] root@proxy.psy.datux.nl /var/log/samba# cat /etc/krb5.conf [libdefaults] default_realm = PSY.DATUX.NL [realms] PSY.DATUX.NL = { kdc = 192.168.13.13 } }}} Let op de hoofdletters en op het feit dat je de LANGE '''domain''' naam gebruikt voor het AD-domain. (dus NIET de volledige hostname) Gebruik voor kdc het ip van de AD-server. Testen of het werkt doe je zo: {{{ [Syn-3] root@proxy.psy.datux.nl /var/log/samba# kinit administrator@ADTEST.PSY.DATUX.NL Password for administrator@ADTEST.PSY.DATUX.NL: [Syn-3] root@proxy.psy.datux.nl /var/log/samba# klist -e Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@ADTEST.PSY.DATUX.NL Valid starting Expires Service principal 04/21/08 17:03:32 04/22/08 03:03:33 krbtgt/ADTEST.PSY.DATUX.NL@ADTEST.PSY.DATUX.NL renew until 04/22/08 17:03:32, Etype (skey, tkt): ArcFour with HMAC/md5, ArcFour with HMAC/md5 Kerberos 4 ticket cache: /tmp/tkt0 klist: You have no tickets cached }}} Let op de hoofdletters en zo. Je hebt nu een werkende kerberos omgeving die authenticeert naar de AD server. = Samba config = Ik heb de oude samba config gemoved, en een symlink gemaakt naar de smb_ads.conf. Zo kan ik hier straks een los pakketje of losse SCC optie van maken: {{{ [Syn-3] root@proxy.psy.datux.nl /home/system/samba# ls -la total 12 drwxr-xr-x 4 root root 86 Apr 21 16:03 ./ drwxr-xr-x 19 root root 4096 Jul 3 2007 ../ drwx------ 2 root root 40 Apr 21 16:03 private/ drwxr-xr-x 2 root root 107 Apr 21 15:58 shares/ lrwxrwxrwx 1 root root 12 Apr 21 16:02 smb.conf -> smb_ads.conf -rw-r--r-- 1 root root 719 Apr 21 16:30 smb_ads.conf -rw-r--r-- 1 root root 2051 Apr 10 14:51 smb_pdc.conf }}} Inhoud van mn config: {{{ [Syn-3] root@proxy.psy.datux.nl /home/system/samba# cat smb_ads.conf [global] workgroup = ADTEST netbios name = proxy realm = ADTEST.PSY.DATUX.NL server string = Linux Samba Server security = ads encrypt passwords = Yes password server = w2k3-edwin log file = /var/log/samba/%m.log max log size = 0 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 preferred master = False local master = No domain master = False dns proxy = No wins server = 192.168.13.13 winbind separator = / winbind enum users = yes winbind enum groups = yes winbind use default domain = yes idmap uid = 10000-20000 idmap gid = 10000-20000 }}} Letop dat de netbios naam overeenkomt met de Syn-3 hostnaam! De samba services mogen op dit moment nog down zijn. (werken toch nog niet op dit moment) Pas /etc/resolv.conf aan zodat de dns server van de 2003 bak gebruikt word: {{{ [Syn-3] root@proxy.psy.datux.nl /home/system/samba# cat /etc/resolv.conf nameserver 192.168.13.13 }}} Join het domein {{{ [Syn-3] root@proxy.psy.datux.nl /home/system/samba# net ads join -U administrator administrator's password: Using short domain name -- ADTEST Joined 'PROXY' to realm 'ADTEST.PSY.DATUX.NL' }}} (Re)start samba en test of alles werkt: {{{ [Syn-3] root@proxy.psy.datux.nl /home/system/samba# svc -du /service/smbd/ /service/nmbd/ /service/winbindd/ [Syn-3] root@proxy.psy.datux.nl /home/system/samba# wbinfo -t checking the trust secret via RPC calls succeeded [Syn-3] root@proxy.psy.datux.nl /home/system/samba# wbinfo -u administrator gast support_388945a0 krbtgt edwin [Syn-3] root@proxy.psy.datux.nl /home/system/samba# wbinfo -g BUILTIN/administrators BUILTIN/users domeincomputers domeincontrollers schema-administrators ondernemingsadministrators domeinadministrators domeingebruikers domeingasten maker eigenaars groepsbeleid dnsupdateproxy }}} '''Als wbinfo -t niet werkt, komt waarschijnlijk de hostname/domain van de server niet overeen met de rest!''' Als je zover bent heb je je samba server succesvol gejoined aan de AD server. double-w00t. = nss config = Nu moet linux ook usernames en groepen kunnen 'resolven' via de AD server. Nu gaan we het systeem dus echt gebruik laten maken van AD: Wijzig nsswitch.conf: {{{ [Syn-3] root@proxy.psy.datux.nl ~# cat /etc/nsswitch.conf ... passwd: files winbind ldap group: files winbind ldap ... }}} Als alles goed gegaan is kun je nu de volgende dingen doen: {{{ [Syn-3] root@proxy.psy.datux.nl ~# id edwin uid=10000(edwin) gid=10004(domeingebruikers) groups=10004(domeingebruikers) [Syn-3] root@proxy.psy.datux.nl ~# id administrator uid=10001(administrator) gid=10004(domeingebruikers) groups=10004(domeingebruikers),10007(schema-administrators),10008(ondernemingsadministrators),10009(domeinadministrators),10011(maker eigenaars groepsbeleid),10002(BUILTIN/administrators) [Syn-3] root@proxy.psy.datux.nl ~# getent passwd ... administrator:*:10001:10004:Administrator:/home/ADTEST/administrator:/bin/false gast:*:10002:10010:Gast:/home/ADTEST/gast:/bin/false support_388945a0:*:10003:10004:SUPPORT_388945a0:/home/ADTEST/support_388945a0:/bin/false krbtgt:*:10004:10004:krbtgt:/home/ADTEST/krbtgt:/bin/false edwin:*:10000:10004:edwin eefting:/home/ADTEST/edwin:/bin/false ... [Syn-3] root@proxy.psy.datux.nl ~# getent group ... domeincomputers:x:10005: domeincontrollers:x:10006: schema-administrators:x:10007:administrator ondernemingsadministrators:x:10008:administrator domeinadministrators:x:10009:administrator domeingebruikers:x:10004: domeingasten:x:10010: maker eigenaars groepsbeleid:x:10011:administrator dnsupdateproxy:x:10012: BUILTIN/administrators:x:10002:administrator BUILTIN/users:x:10003: ... }}} Als je zover bent maakt linux al actief gebruik van AD. Als de windows server nu crashed, zal het resolven van usernames en groups dus niet goed lukken. = Squid configuratie = == Windows instellingen == Nu is het simpel nog een kwestie van squid configureren. Zorg eerst dat squid met zn standaard Syn-3 config reeds goed werkt, en stel in de windows xp client de Proxy in. Test dit alles. We zien dat Windows de proxy nu anoniem gebruikt, zoals normaal is: {{{ [Syn-3] root@proxy.psy.datux.nl ~# tail -f /var/log/squid/access.log 1208791882.340 33 192.168.13.14 TCP_MISS/200 899 GET http://ilse.nl/images/tabjes/bt-internet.gif - DIRECT/62.69.179.217 image/gif 1208791882.352 28 192.168.13.14 TCP_MISS/200 917 GET http://ilse.nl/images/tabjes/bt-achterklap.gif - DIRECT/62.69.179.217 image/gif 1208791882.362 34 192.168.13.14 TCP_MISS/200 886 GET http://ilse.nl/images/tabjes/bt-zakelijk.gif - DIRECT/62.69.179.217 image/gif ... }}} == NTLM authenticatie instellen == Zorg eerst dat je de ntlm_auth van de samba package hebt! Die van squid is de verkeerde. (deze zou er niet meer in moeten zitten vanaf nu) Deze kan je zo testen: {{{ [Syn-3] root@proxy.psy.datux.nl /# ntlm_auth --username=edwin password: NT_STATUS_WRONG_PASSWORD: Wrong Password (0xc000006a) [Syn-3] root@proxy.psy.datux.nl /# ntlm_auth --username=edwin password: NT_STATUS_OK: Success (0x0) }}} Set daarna de permissies van de winbindd socket, zodat squid er bij kan: {{{ [Syn-3] root@proxy.psy.datux.nl ~# chgrp nogroup /var/cache/samba/winbindd_privileged/ }}} Nu is het tijd om /home/system/proxy/squid.conf te wijzigen. Voeg als extra authenticatie ntlm toe. Deze moet VOOR basic komen! {{{ auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp auth_param ntlm children 50 }}} Hierdoor kunnen AD clients zich authentificeren op 'magische' wijs, via het NTLM systeem. Appart inloggen op de proxy via de vervelende popup is dan niet meer nodig. Verander auth_basic van ldap naar ntlm_auth: {{{ auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic auth_param basic children 50 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 5 hour }}} Hierdoor kunnen niet-AD clients zich nog gewoon met de vervelende popup authentificeren. Voeg een nieuwe acl toe aan de reeds bestaande acl lijst: {{{ acl NTLMUsers proxy_auth REQUIRED }}} Activeer de authenticatie daadwerkelijk door een nieuwe regel toe te voegen aan de http_access lijst: {{{ http_access allow NTLMUsers }}} Deactiveren van authenticatie kan nu door hier weer een hekje voor te zetten. Restart squid en test of het werkt: {{{ [Syn-3] root@proxy.psy.datux.nl /home/system/proxy/filterlists# svcstart /service/squid/ Starting /service/squid/ ...DONE [Syn-3] root@proxy.psy.datux.nl /home/system/proxy/filterlists# tail -f /var/log/squid/access.log ... 1208804648.362 1 192.168.13.14 TCP_DENIED/407 1752 GET http://nl.msn.com/ - NONE/- text/html 1208804648.367 1 192.168.13.14 TCP_DENIED/407 1908 GET http://nl.msn.com/ - NONE/- text/html 1208804648.486 0 192.168.13.14 TCP_DENIED/407 1854 GET http://estc.msn.com/br/hp/v11/nl-nl/css/ushp_v11.css - NONE/- text/html 1208804648.487 0 192.168.13.14 TCP_DENIED/407 1842 GET http://estc.msn.com/br/hp/v11/nl-nl/css/ovr2.css - NONE/- text/html 1208804648.497 1 192.168.13.14 TCP_DENIED/407 2010 GET http://estc.msn.com/br/hp/v11/nl-nl/css/ushp_v11.css - NONE/- text/html 1208804648.497 0 192.168.13.14 TCP_DENIED/407 1848 GET http://estc.msn.com/br/hp/v11/nl-nl/css/ie_v11.css - NONE/- text/html 1208804648.500 3 192.168.13.14 TCP_DENIED/407 1998 GET http://estc.msn.com/br/hp/v11/nl-nl/css/ovr2.css - NONE/- text/html 1208804648.503 2 192.168.13.14 TCP_DENIED/407 2004 GET http://estc.msn.com/br/hp/v11/nl-nl/css/ie_v11.css - NONE/- text/html 1208804648.700 202 192.168.13.14 TCP_MISS/304 308 GET http://estc.msn.com/br/hp/v11/nl-nl/css/ushp_v11.css edwin DIRECT/8.12.211.124 - 1208804648.713 209 192.168.13.14 TCP_MISS/304 337 GET http://estc.msn.com/br/hp/v11/nl-nl/css/ie_v11.css edwin DIRECT/8.12.211.124 - }}} Score!! == GROUP filtering == Op dit moment zit er alleen nog maar voor LDAP group filtering in de Advanced proxy filtering module. Omdit nu toch al te kunnen moet u het volgende checken. * is het bestand /usr/bin/wbinfo_group.pl aanwezig? Zo niet, zorg ervoor dat u deze uit een source .tar.gz van squid haalt. In versie 4.3(stable), zit het reeds bij in. * plaats het volgende '''external_acl_type wbinfo_group %LOGIN /usr/bin/wbinfo_group.pl''' in de squid config, bij de andere external_acl_type. U moet nu in staat zijn om met deze ACL te filteren, zie het LDAP voorbeeld in de config file voor voorbeeld.