wiki:howto/SquidKerberosAuthentication

Version 22 (modified by Edwin Eefting, 14 years ago) (diff)

--

Squid en Kerberos authenticatie

Deze howto zorgt ervoor dat Windows XP, Windows 7 en hoger , die zijn aangemeld op een Windows Active directory server, zich ook transparant autenticeren bij uw SYN-3 squid server.

Er zijn geen registry aanpassingen/hacks nodig in de Windows omgeving.

Bron howtos:

in progress

Algemeen

  • Zorg dat alle servers op tijd lopen, het liefst via ntp.

Windows config

Windows 2003/2008 server configuratie

Volg de AD wizard. 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 7 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.

DNS

  • Het essentieel dat DNS goed geconfigureerd is, anders werkt kerberos niet.
  • Maak een A record en Reverse record in de Windows server, voor uw proxy server. In ons geval: proxy.adtest.psy.datux.nl <-> 192.168.13.150
  • Zorg dat alle machines de Windows server als DNS gebruiken
  • Controleer met het dig commando of alle forward en reverse looksups goed gaan.

Syn-3 config

  • Zorg dat u minimaal SYN-3 versie 4.4.2 heeft.
  • Zorg dat de hostname goed is ingesteld. In ons geval: proxy.adtest.psy.datux.nl

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.adtest.psy.datux.nl ~# cat /etc/krb5.conf
[libdefaults]
      default_realm =  ADTEST.PSY.DATUX.NL
      dns_lookup_kdc = no
      dns_lookup_realm = no
      default_keytab_name = /etc/krb5.keytab

; for 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

; for Windows 2008 with AES
;      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
;
; for MIT/Heimdal kdc no need to restrict encryption type

[realms]
       ADTEST.PSY.DATUX.NL = {
              kdc = w2k3-edwin.adtest.psy.datux.nl 
              admin_server = w2k3-edwin.adtest.psy.datux.nl 
      }

[domain_realm]
      .adtest.psy.datux.nl =  ADTEST.PSY.DATUX.NL
      adtest.psy.datux.nl =  ADTEST.PSY.DATUX.NL

[logging]
  kdc = FILE:/var/log/kdc.log
  admin_server = FILE:/var/log/kadmin.log
  default = FILE:/var/log/krb5lib.log

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.adtest.psy.datux.nl ~# kinit administrator
Password for administrator@ADTEST.PSY.DATUX.NL: 
[Syn-3] root@proxy.adtest.psy.datux.nl ~# klist -e
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@ADTEST.PSY.DATUX.NL

Valid starting     Expires            Service principal
12/22/10 20:16:44  12/23/10 06:16:12  krbtgt/ADTEST.PSY.DATUX.NL@ADTEST.PSY.DATUX.NL
        renew until 12/23/10 20:16:44, Etype (skey, tkt): ArcFour with HMAC/md5, ArcFour with HMAC/md5 

Let op de hoofdletters en zo.

Je hebt nu een werkende kerberos omgeving die authenticeert naar de Kerberos server.

Active directory kopelling maken

Dit doe je met de msktutil:

[Syn-3] root@proxy.adtest.psy.datux.nl /etc#  msktutil -c -b "CN=COMPUTERS" -s HTTP/$HOSTNAME -h $HOSTNAME -k /etc/krb5.keytab --computer-name syn3proxy --upn HTTP/$HOSTNAME --server w2k3-edwin.adtest.psy.datux.nl  
No computer account for syn3proxy found, creating a new one.
dn: cn=syn3proxy,CN=COMPUTERS,dc=ADTEST,dc=PSY,dc=DATUX,dc=NL

Voor een Windows 2008 server voegt u --enctypes 28 toe aan het commando.

Squid instellen

ldap gegevens bepalen

Om basic authentication te ondersteunen moet u de DN's uitzoeken op uw windows server. Deze kunt u gokken, of u gebruikt de ldp.exe tool. Deze vind u in het 'Windows Support Tools' pakket van Microsoft. (http://www.microsoft.com/downloads/en/details.aspx?FamilyID=96a35011-fd83-419d-939b-9a772ea2df90&DisplayLang=en)

In ons geval:

  • Base DN: CN=Users,DC=adtest,DC=psy,DC=datux,DC=nl
  • Administrator DN: CN=Administrator,CN=Users,DC=adtest,DC=psy,DC=datux,DC=nl

Keytab

Squid moet bij de keytab file kunnen:

[Syn-3] root@proxy.adtest.psy.datux.nl ~# 
chown nobody /etc/krb5.keytab               

auth_param =

Alle auth_param instellingen in /home/system/proxy/squid.conf vervangen:

# Kerberos authentication settings
auth_param negotiate program /usr/bin/squid_kerb_auth -d 
auth_param negotiate children 10
auth_param negotiate keep_alive on

# LDAP/AD settings, for clients that only support basic authentication:
auth_param basic program /usr/bin/squid_ldap_auth -b "CN=Users,DC=adtest,DC=psy,DC=datux,DC=nl" -s sub -D "CN=Administrator,CN=Users,DC=adtest,DC=psy,DC=datux,DC=nl" -w as -f "(&(objectClass
=person)(sAMAccountName=%s))" -u sAMAccountName -P -v 3 -h w2k3-edwin.adtest.psy.datux.nl
auth_param basic children 10
auth_param basic realm Proxy Authentication
auth_param basic credentialsttl 2 hours

acl en http_access

Om tot slotte authenticatie in te schakellen en verplicht te stellen: Toevoegen op de juiste plekken in /home/system/proxy/squid.conf:

acl auth proxy_auth REQUIRED

http_access allow auth

Debugging

Werkt het niet, zet dan cache logging aan en voeg de -d optie toe aan squid_kerb_auth.

Windows clients instellen.

  • Zorg in Internet Explorer dat u de SYN-3 server opgeeft als proxy.
  • Gebruik de volledige HOSTNAME en niet het IP. Dus in dit geval: proxy.adtest.psy.datux.nl