| 1 | = Squid en Kerberos authenticatie = |
| 2 | |
| 3 | Deze 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 | |
| 10 | De volgende url's hebben mij veel geleerd: |
| 11 | http://www.opensourcehowto.org/how-to/squid/squid-with-ntlm-authentication.html |
| 12 | |
| 13 | http://www.cyberciti.biz/faq/squid-ntlm-authentication-configuration-howto/ |
| 14 | |
| 15 | http://mkeadle.org/index.php?p=13 |
| 16 | |
| 17 | De volgende howto heb ik gevolgt: |
| 18 | http://mkeadle.org/index.php?p=13 |
| 19 | |
| 20 | = Windows config = |
| 21 | |
| 22 | == Windows 2003 server configuratie == |
| 23 | |
| 24 | Heb 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 | |
| 36 | Als je zover bent heb je dus een werkende windows Active directory met 1 aangemelde computer. W00t! |
| 37 | |
| 38 | = Syn-3 config = |
| 39 | |
| 40 | Installeer 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 | |
| 49 | Eerst 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 | |
| 61 | 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. |
| 62 | |
| 63 | Testen of het werkt doe je zo: |
| 64 | {{{ |
| 65 | [Syn-3] root@proxy.psy.datux.nl /var/log/samba# kinit administrator@PSY.DATUX.NL |
| 66 | Password for administrator@PSY.DATUX.NL: |
| 67 | |
| 68 | [Syn-3] root@proxy.psy.datux.nl /var/log/samba# klist -e |
| 69 | Ticket cache: FILE:/tmp/krb5cc_0 |
| 70 | Default principal: administrator@PSY.DATUX.NL |
| 71 | |
| 72 | Valid starting Expires Service principal |
| 73 | 04/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 | |
| 77 | Kerberos 4 ticket cache: /tmp/tkt0 |
| 78 | klist: You have no tickets cached |
| 79 | |
| 80 | }}} |
| 81 | |
| 82 | Let op de hoofdletters en zo. |
| 83 | |
| 84 | Je hebt nu een werkende kerberos omgeving die authenticeert naar de AD server. |
| 85 | |
| 86 | = Samba config = |
| 87 | |
| 88 | 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: |
| 89 | {{{ |
| 90 | [Syn-3] root@proxy.psy.datux.nl /home/system/samba# ls -la |
| 91 | total 12 |
| 92 | drwxr-xr-x 4 root root 86 Apr 21 16:03 ./ |
| 93 | drwxr-xr-x 19 root root 4096 Jul 3 2007 ../ |
| 94 | drwx------ 2 root root 40 Apr 21 16:03 private/ |
| 95 | drwxr-xr-x 2 root root 107 Apr 21 15:58 shares/ |
| 96 | lrwxrwxrwx 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 | |
| 101 | Inhoud 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 | |
| 128 | Letop dat de netbios naam overeenkomt met de Syn-3 hostnaam! |
| 129 | |
| 130 | De samba services mogen op dit moment nog down zijn. (werken toch nog niet op dit moment) |
| 131 | |
| 132 | Pas /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 |
| 135 | nameserver 192.168.13.13 |
| 136 | }}} |
| 137 | |
| 138 | Join het domein |
| 139 | |
| 140 | {{{ |
| 141 | [Syn-3] root@proxy.psy.datux.nl /home/system/samba# net ads join -U administrator |
| 142 | administrator's password: |
| 143 | Using short domain name -- PSY |
| 144 | Joined '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 |
| 152 | checking the trust secret via RPC calls succeeded |
| 153 | |
| 154 | [Syn-3] root@proxy.psy.datux.nl /home/system/samba# wbinfo -u |
| 155 | administrator |
| 156 | gast |
| 157 | support_388945a0 |
| 158 | krbtgt |
| 159 | edwin |
| 160 | |
| 161 | [Syn-3] root@proxy.psy.datux.nl /home/system/samba# wbinfo -g |
| 162 | BUILTIN/administrators |
| 163 | BUILTIN/users |
| 164 | domeincomputers |
| 165 | domeincontrollers |
| 166 | schema-administrators |
| 167 | ondernemingsadministrators |
| 168 | domeinadministrators |
| 169 | domeingebruikers |
| 170 | domeingasten |
| 171 | maker eigenaars groepsbeleid |
| 172 | dnsupdateproxy |
| 173 | }}} |
| 174 | |
| 175 | '''Als wbinfo -t niet werkt, komt waarschijnlijk de hostname/domain van de server niet overeen met de rest!''' |
| 176 | |
| 177 | Als je zover bent heb je je samba server succesvol gejoined aan de AD server. double-w00t. |
| 178 | |
| 179 | |
| 180 | = nss config = |
| 181 | |
| 182 | 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: |
| 183 | |
| 184 | Wijzig nsswitch.conf: |
| 185 | {{{ |
| 186 | [Syn-3] root@proxy.psy.datux.nl ~# cat /etc/nsswitch.conf |
| 187 | ... |
| 188 | passwd: files winbind ldap |
| 189 | group: files winbind ldap |
| 190 | ... |
| 191 | }}} |
| 192 | |
| 193 | Als alles goed gegaan is kun je nu de volgende dingen doen: |
| 194 | {{{ |
| 195 | [Syn-3] root@proxy.psy.datux.nl ~# id edwin |
| 196 | uid=10000(edwin) gid=10004(domeingebruikers) groups=10004(domeingebruikers) |
| 197 | |
| 198 | [Syn-3] root@proxy.psy.datux.nl ~# id administrator |
| 199 | uid=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 | ... |
| 203 | administrator:*:10001:10004:Administrator:/home/ADTEST/administrator:/bin/false |
| 204 | gast:*:10002:10010:Gast:/home/ADTEST/gast:/bin/false |
| 205 | support_388945a0:*:10003:10004:SUPPORT_388945a0:/home/ADTEST/support_388945a0:/bin/false |
| 206 | krbtgt:*:10004:10004:krbtgt:/home/ADTEST/krbtgt:/bin/false |
| 207 | edwin:*:10000:10004:edwin eefting:/home/ADTEST/edwin:/bin/false |
| 208 | ... |
| 209 | |
| 210 | [Syn-3] root@proxy.psy.datux.nl ~# getent group |
| 211 | ... |
| 212 | domeincomputers:x:10005: |
| 213 | domeincontrollers:x:10006: |
| 214 | schema-administrators:x:10007:administrator |
| 215 | ondernemingsadministrators:x:10008:administrator |
| 216 | domeinadministrators:x:10009:administrator |
| 217 | domeingebruikers:x:10004: |
| 218 | domeingasten:x:10010: |
| 219 | maker eigenaars groepsbeleid:x:10011:administrator |
| 220 | dnsupdateproxy:x:10012: |
| 221 | BUILTIN/administrators:x:10002:administrator |
| 222 | BUILTIN/users:x:10003: |
| 223 | ... |
| 224 | }}} |
| 225 | |
| 226 | Als je zover bent maakt linux al actief gebruik van AD. |
| 227 | |
| 228 | Als 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 | |
| 234 | Nu is het simpel nog een kwestie van squid configureren. |
| 235 | |
| 236 | 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. |
| 237 | |
| 238 | We 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 |
| 241 | 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 |
| 242 | 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 |
| 243 | 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 |
| 244 | ... |
| 245 | }}} |
| 246 | |
| 247 | == NTLM authenticatie instellen == |
| 248 | |
| 249 | 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: |
| 250 | {{{ |
| 251 | [Syn-3] root@proxy.psy.datux.nl /# ntlm_auth --username=edwin |
| 252 | password: |
| 253 | NT_STATUS_WRONG_PASSWORD: Wrong Password (0xc000006a) |
| 254 | [Syn-3] root@proxy.psy.datux.nl /# ntlm_auth --username=edwin |
| 255 | password: |
| 256 | NT_STATUS_OK: Success (0x0) |
| 257 | }}} |
| 258 | |
| 259 | Set 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 | |
| 267 | Nu is het tijd om /home/system/proxy/squid.conf te wijzigen. |
| 268 | |
| 269 | Voeg als extra authenticatie ntlm toe. Deze moet VOOR basic komen! |
| 270 | {{{ |
| 271 | auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp |
| 272 | auth_param ntlm children 50 |
| 273 | }}} |
| 274 | 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. |
| 275 | |
| 276 | |
| 277 | Verander auth_basic van ldap naar ntlm_auth: |
| 278 | {{{ |
| 279 | auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic |
| 280 | auth_param basic children 50 |
| 281 | auth_param basic realm Squid proxy-caching web server |
| 282 | auth_param basic credentialsttl 5 hour |
| 283 | }}} |
| 284 | Hierdoor kunnen niet-AD clients zich nog gewoon met de vervelende popup authentificeren. |
| 285 | |
| 286 | |
| 287 | Voeg een nieuwe acl toe aan de reeds bestaande acl lijst: |
| 288 | {{{ |
| 289 | acl NTLMUsers proxy_auth REQUIRED |
| 290 | }}} |
| 291 | |
| 292 | Activeer de authenticatie daadwerkelijk door een nieuwe regel toe te voegen aan de http_access lijst: |
| 293 | {{{ |
| 294 | http_access allow NTLMUsers |
| 295 | }}} |
| 296 | Deactiveren van authenticatie kan nu door hier weer een hekje voor te zetten. |
| 297 | |
| 298 | Restart squid en test of het werkt: |
| 299 | {{{ |
| 300 | [Syn-3] root@proxy.psy.datux.nl /home/system/proxy/filterlists# svcstart /service/squid/ |
| 301 | Starting /service/squid/ ...DONE |
| 302 | |
| 303 | [Syn-3] root@proxy.psy.datux.nl /home/system/proxy/filterlists# tail -f /var/log/squid/access.log |
| 304 | ... |
| 305 | 1208804648.362 1 192.168.13.14 TCP_DENIED/407 1752 GET http://nl.msn.com/ - NONE/- text/html |
| 306 | 1208804648.367 1 192.168.13.14 TCP_DENIED/407 1908 GET http://nl.msn.com/ - NONE/- text/html |
| 307 | 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 |
| 308 | 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 |
| 309 | 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 |
| 310 | 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 |
| 311 | 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 |
| 312 | 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 |
| 313 | 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 - |
| 314 | 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 - |
| 315 | }}} |
| 316 | |
| 317 | Score!! |
| 318 | |
| 319 | == GROUP filtering == |
| 320 | |
| 321 | |
| 322 | 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. |
| 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 | |
| 327 | U 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''' |