Changes between Initial Version and Version 1 of howto/SquidNtlmAuthentication


Ignore:
Timestamp:
06/29/09 11:47:56 (15 years ago)
Author:
Edwin Eefting
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • howto/SquidNtlmAuthentication

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