Changes between Initial Version and Version 1 of howto/SquidKerberosAuthentication


Ignore:
Timestamp:
12/21/10 14:23:31 (13 years ago)
Author:
Edwin Eefting
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • howto/SquidKerberosAuthentication

    v1 v1  
     1= Squid en Kerberos authenticatie =
     2
     3Deze howto zorgt ervoor dat Windows XP en hoger , die zijn aangemeld op een Windows Active directory server, zich ook transparant autenticeren bij uw SYN-3 squid server.
     4
     5
     6'''in progress'''
     7
     8== Algemene info ==
     9
     10De volgende url's hebben mij veel geleerd:
     11http://www.opensourcehowto.org/how-to/squid/squid-with-ntlm-authentication.html
     12
     13http://www.cyberciti.biz/faq/squid-ntlm-authentication-configuration-howto/
     14
     15http://mkeadle.org/index.php?p=13
     16
     17De volgende howto heb ik gevolgt:
     18http://mkeadle.org/index.php?p=13
     19
     20= Windows config =
     21
     22== Windows 2003 server configuratie ==
     23
     24Heb AD wizard gevolgt. Volgende instellingen op server
     25 * Domein: ADTEST.PSY.DATUX.NL
     26 * IP: 192.168.13.13
     27 * Server hostnaam: w2k3-edwin.adtest.psy.datux.nl
     28 * Server als DNS laten configureren door de AD wizard.
     29 * Gewone standaard gebruiker: edwin, pass test
     30
     31== Windows XP prof. client ==
     32
     33 * Als DNS 192.168.13.13 instellen.
     34 * Aanmelden op het domein(Inloggen als Administrator, niet als user) en testen
     35
     36Als je zover bent heb je dus een werkende windows Active directory met 1 aangemelde computer. W00t!
     37
     38= Syn-3 config =
     39
     40Installeer minimaal de volgende pakketten, inclusief dependencies. Laatste versies in svn tree.
     41 * Syn-3 pakket samba
     42 * Syn-3 pakket cups
     43 * Syn-3 pakket mit_kerberos
     44 * Syn-3 pakket squid
     45
     46
     47= Kerberos config =
     48
     49Eerst moeten we zorgen dat kerberos goed werkt. De config staat nog in /etc, maar deze komt later misschien in /home/system:
     50{{{
     51[Syn-3] root@proxy.psy.datux.nl /var/log/samba# cat /etc/krb5.conf
     52[libdefaults]
     53    default_realm = PSY.DATUX.NL
     54
     55[realms]
     56    PSY.DATUX.NL = {
     57    kdc = 192.168.13.13
     58}
     59}}}
     60
     61Let 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.
     62
     63Testen of het werkt doe je zo:
     64{{{
     65[Syn-3] root@proxy.psy.datux.nl /var/log/samba# kinit  administrator@PSY.DATUX.NL
     66Password for administrator@PSY.DATUX.NL:
     67
     68[Syn-3] root@proxy.psy.datux.nl /var/log/samba# klist -e
     69Ticket cache: FILE:/tmp/krb5cc_0
     70Default principal: administrator@PSY.DATUX.NL
     71
     72Valid starting     Expires            Service principal
     7304/21/08 17:03:32  04/22/08 03:03:33  krbtgt/PSY.DATUX.NL@PSY.DATUX.NL
     74        renew until 04/22/08 17:03:32, Etype (skey, tkt): ArcFour with HMAC/md5, ArcFour with HMAC/md5
     75
     76
     77Kerberos 4 ticket cache: /tmp/tkt0
     78klist: You have no tickets cached
     79
     80}}}
     81
     82Let op de hoofdletters en zo.
     83
     84Je hebt nu een werkende kerberos omgeving die authenticeert naar de AD server.
     85
     86= Samba config =
     87
     88Ik 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:
     89{{{
     90[Syn-3] root@proxy.psy.datux.nl /home/system/samba# ls -la
     91total 12
     92drwxr-xr-x   4 root root   86 Apr 21 16:03 ./
     93drwxr-xr-x  19 root root 4096 Jul  3  2007 ../
     94drwx------   2 root root   40 Apr 21 16:03 private/
     95drwxr-xr-x   2 root root  107 Apr 21 15:58 shares/
     96lrwxrwxrwx   1 root root   12 Apr 21 16:02 smb.conf -> smb_ads.conf
     97-rw-r--r--   1 root root  719 Apr 21 16:30 smb_ads.conf
     98-rw-r--r--   1 root root 2051 Apr 10 14:51 smb_pdc.conf
     99}}}
     100
     101Inhoud van mn config:
     102{{{
     103[Syn-3] root@proxy.psy.datux.nl /home/system/samba# cat smb_ads.conf
     104[global]
     105        workgroup = PSY
     106        netbios name = proxy
     107        realm = PSY.DATUX.NL
     108        server string = Linux Samba Server
     109        security = ads
     110        encrypt passwords = Yes
     111        password server = 192.168.13.13
     112        log file = /var/log/samba/%m.log
     113        max log size = 0
     114        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
     115        preferred master = False
     116        local master = No
     117        domain master = False
     118        dns proxy = No
     119        wins server = 192.168.13.13
     120        winbind separator = /
     121        winbind enum users = yes
     122        winbind enum groups = yes
     123        winbind use default domain = yes
     124        idmap uid = 10000-20000
     125        idmap gid = 10000-20000
     126}}}
     127
     128Letop dat de netbios naam overeenkomt met de Syn-3 hostnaam!
     129
     130De samba services mogen op dit moment nog down zijn. (werken toch nog niet op dit moment)
     131
     132Pas /etc/resolv.conf aan zodat de dns server van de 2003 bak gebruikt word:
     133{{{
     134[Syn-3] root@proxy.psy.datux.nl /home/system/samba# cat /etc/resolv.conf
     135nameserver 192.168.13.13
     136}}}
     137
     138Join het domein
     139
     140{{{
     141[Syn-3] root@proxy.psy.datux.nl /home/system/samba# net ads join -U administrator
     142administrator's password:
     143Using short domain name -- PSY
     144Joined 'PROXY' to realm 'PSY.DATUX.NL'
     145}}}
     146
     147(Re)start samba en test of alles werkt:
     148{{{
     149[Syn-3] root@proxy.psy.datux.nl /home/system/samba# svc -du /service/smbd/ /service/nmbd/ /service/winbindd/
     150
     151[Syn-3] root@proxy.psy.datux.nl /home/system/samba# wbinfo -t
     152checking the trust secret via RPC calls succeeded
     153
     154[Syn-3] root@proxy.psy.datux.nl /home/system/samba# wbinfo -u
     155administrator
     156gast
     157support_388945a0
     158krbtgt
     159edwin
     160
     161[Syn-3] root@proxy.psy.datux.nl /home/system/samba# wbinfo -g
     162BUILTIN/administrators
     163BUILTIN/users
     164domeincomputers
     165domeincontrollers
     166schema-administrators
     167ondernemingsadministrators
     168domeinadministrators
     169domeingebruikers
     170domeingasten
     171maker eigenaars groepsbeleid
     172dnsupdateproxy
     173}}}
     174
     175'''Als wbinfo -t niet werkt, komt waarschijnlijk de hostname/domain van de server niet overeen met de rest!'''
     176
     177Als je zover bent heb je je samba server succesvol gejoined aan de AD server. double-w00t.
     178
     179
     180= nss config =
     181
     182Nu moet linux ook usernames en groepen kunnen 'resolven' via de AD server. Nu gaan we het systeem dus echt gebruik laten maken van AD:
     183
     184Wijzig nsswitch.conf:
     185{{{
     186[Syn-3] root@proxy.psy.datux.nl ~# cat /etc/nsswitch.conf
     187...
     188passwd:         files winbind ldap
     189group:          files winbind ldap
     190...
     191}}}
     192
     193Als alles goed gegaan is kun je nu de volgende dingen doen:
     194{{{
     195[Syn-3] root@proxy.psy.datux.nl ~# id edwin
     196uid=10000(edwin) gid=10004(domeingebruikers) groups=10004(domeingebruikers)
     197
     198[Syn-3] root@proxy.psy.datux.nl ~# id administrator
     199uid=10001(administrator) gid=10004(domeingebruikers) groups=10004(domeingebruikers),10007(schema-administrators),10008(ondernemingsadministrators),10009(domeinadministrators),10011(maker eigenaars groepsbeleid),10002(BUILTIN/administrators)
     200
     201[Syn-3] root@proxy.psy.datux.nl ~# getent passwd
     202...
     203administrator:*:10001:10004:Administrator:/home/ADTEST/administrator:/bin/false
     204gast:*:10002:10010:Gast:/home/ADTEST/gast:/bin/false
     205support_388945a0:*:10003:10004:SUPPORT_388945a0:/home/ADTEST/support_388945a0:/bin/false
     206krbtgt:*:10004:10004:krbtgt:/home/ADTEST/krbtgt:/bin/false
     207edwin:*:10000:10004:edwin eefting:/home/ADTEST/edwin:/bin/false
     208...
     209
     210[Syn-3] root@proxy.psy.datux.nl ~# getent group
     211...
     212domeincomputers:x:10005:
     213domeincontrollers:x:10006:
     214schema-administrators:x:10007:administrator
     215ondernemingsadministrators:x:10008:administrator
     216domeinadministrators:x:10009:administrator
     217domeingebruikers:x:10004:
     218domeingasten:x:10010:
     219maker eigenaars groepsbeleid:x:10011:administrator
     220dnsupdateproxy:x:10012:
     221BUILTIN/administrators:x:10002:administrator
     222BUILTIN/users:x:10003:
     223...
     224}}}
     225
     226Als je zover bent maakt linux al actief gebruik van AD.
     227
     228Als de windows server nu crashed, zal het resolven van usernames en groups dus niet goed lukken.
     229
     230= Squid configuratie =
     231
     232== Windows instellingen ==
     233
     234Nu is het simpel nog een kwestie van squid configureren.
     235
     236Zorg 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.
     237
     238We zien dat Windows de proxy nu anoniem gebruikt, zoals normaal is:
     239{{{
     240[Syn-3] root@proxy.psy.datux.nl ~# tail -f /var/log/squid/access.log
     2411208791882.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
     2421208791882.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
     2431208791882.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
     244...
     245}}}
     246
     247== NTLM authenticatie instellen ==
     248
     249Zorg 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:
     250{{{
     251[Syn-3] root@proxy.psy.datux.nl /# ntlm_auth --username=edwin
     252password:
     253NT_STATUS_WRONG_PASSWORD: Wrong Password (0xc000006a)
     254[Syn-3] root@proxy.psy.datux.nl /# ntlm_auth --username=edwin
     255password:
     256NT_STATUS_OK: Success (0x0)
     257}}}
     258
     259Set daarna de permissies van de winbindd socket, zodat squid er bij kan:
     260{{{
     261[Syn-3] root@proxy.psy.datux.nl ~# chgrp nogroup /var/cache/samba/winbindd_privileged/
     262}}}
     263
     264
     265'''squid.conf hoeft niet meer aangepast te worden: tegenwoordig kan men in de SCC bij squid->Instellingen voor NTLM authenticatie kiezen. Daarna kan er via advanced filtering een group-filter regel worden gemaakt en zal alles werken.'''
     266
     267Nu is het tijd om /home/system/proxy/squid.conf te wijzigen.
     268
     269Voeg als extra authenticatie ntlm toe. Deze moet VOOR basic komen!
     270{{{
     271auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
     272auth_param ntlm children 50
     273}}}
     274Hierdoor 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.
     275
     276
     277Verander auth_basic van ldap naar ntlm_auth:
     278{{{
     279auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
     280auth_param basic children 50
     281auth_param basic realm Squid proxy-caching web server
     282auth_param basic credentialsttl 5 hour
     283}}}
     284Hierdoor kunnen niet-AD clients zich nog gewoon met de vervelende popup authentificeren.
     285
     286
     287Voeg een nieuwe acl toe aan de reeds bestaande acl lijst:
     288{{{
     289acl NTLMUsers proxy_auth REQUIRED
     290}}}
     291
     292Activeer de authenticatie daadwerkelijk door een nieuwe regel toe te voegen aan de http_access lijst:
     293{{{
     294http_access allow NTLMUsers
     295}}}
     296Deactiveren van authenticatie kan nu door hier weer een hekje voor te zetten.
     297
     298Restart squid en test of het werkt:
     299{{{
     300[Syn-3] root@proxy.psy.datux.nl /home/system/proxy/filterlists# svcstart /service/squid/
     301Starting /service/squid/ ...DONE
     302
     303[Syn-3] root@proxy.psy.datux.nl /home/system/proxy/filterlists# tail -f  /var/log/squid/access.log
     304...
     3051208804648.362      1 192.168.13.14 TCP_DENIED/407 1752 GET http://nl.msn.com/ - NONE/- text/html
     3061208804648.367      1 192.168.13.14 TCP_DENIED/407 1908 GET http://nl.msn.com/ - NONE/- text/html
     3071208804648.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
     3081208804648.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
     3091208804648.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
     3101208804648.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
     3111208804648.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
     3121208804648.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
     3131208804648.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 -
     3141208804648.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 -
     315}}}
     316
     317Score!!
     318
     319== GROUP filtering ==
     320
     321
     322Op 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.
     323
     324 * 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.
     325 * plaats het volgende '''external_acl_type wbinfo_group %LOGIN /usr/bin/wbinfo_group.pl''' in de squid config, bij de andere external_acl_type.
     326
     327U moet nu in staat zijn om met deze ACL te filteren, zie het LDAP voorbeeld in de config file voor voorbeeld.
     328
     329'''Groupen worden gecached door winbind. De  winbind cache time staat standaard op 300 seconden, dus het kan even duren voordat nieuwe groupen zichtbaar worden'''