Nein, ich heirate nicht. Aber ich habe Squid 3 erfolgreich mit einem Active Directory verkuppelt.
Vorbereitungen
Unter Windows muss folgendes erledigt sein:
- Proxy Server muss im Microsoft DNS Dienst bekannt sein
- Proxy Server muss als “Trusted Host” im AD angelegt sein
Der Proxy Server sollte entweder eine “richtige” statische IP, oder auch eine Reservierung via DHCP haben. Auch muss die Uhrzeit mit NTP Synchron gehalten werden, den Kerberos ist sehr pingelig was das angeht!
Auf der Linux Seite benötigt man natürlich den root-Account, oder ähnliche Rechte (sudo usw…). Alle nachfolgenden Befehl müssen als root eingegeben werden!
Proxy Server
Auf dem Proxy Server selbst braucht man folgende Pakete:
krb5-user
squid3
winbind
Kerberos Setup
Die Kerberos Konfigurationsdatei (/etc/krb5.conf
) sollte so aussehen:
[libdefaults]
default_realm = DOMAIN
[realms]
DOMAIN = {
kdc = 192.168.1.1
admin_server = 192.168.1.1
}
[domain_realm]
.domain = DOMAIN
[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 1
}
In meinem Fall war DOMAIN
der Domänenname und 192.168.1.1
dessen IP-Adresse. Es ist natürlich wichtig das man
dafür eine Funktionierende Namensauflösung hat, Optimal ist es wenn man dafür den DNS Server vom AD nimmt. Da sollte ja
ohnehin alles drin sein was man braucht.
Natürlich ist für das Kerberos Setup ein Test nicht schlecht:
kinit user@DOMAIN
Man wird nun nach dem Passwort für den AD-User user
gefragt. Wenn alles geklappt hat bekommt man von klist
folgende Ausgabe:
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: user@DOMAIN
Valid starting Expires Service principal
11/26/08 20:57:19 11/27/08 06:57:20 krbtgt/DOMAIN@DOMAIN
renew until 11/27/08 20:57:19
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached
So sieht man das man erfolgreich ein TGT (eine Art “Chef-Ticket”) bekommen hat, mit diesem könnte man dann Ticket für einzelne Dienste anfordern, was uns aber jetzt nicht weiter interessiert.
Samba / Winbindd Setup
Nachdem jetzt Kerberos läuft, können wir an den nächsten Schritt gehen: Samba (genauer Winbind) will jetzt
Domänenmitglied werden, und das geht mit so einer /etc/samba/smb.conf
:
[global]
workgroup = DOMAIN
realm = DOMAIN
password server = HOSTNAME.DOMAIN
security = ADS
winbind refresh tickets = yes
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind cache time = 10
winbind use default domain = yes
password server
muss der DNS Name vom AD Server sein. Der Rest dürfte selbsterklärend sein. Nun kann man der Domäne
beitreten:
net ads join -U user@DOMAIN
Dannach kann man den winbindd
starten, was wie gewohnt über
/etc/init.d/winbbind start
geht. Ob dies funktioniert hat kann man mit wbinfo -t
prüfen:
checking the trust secret via RPC calls succeeded
Dann kann man auch noch die Gruppen im AD anzeigen lassen, dies geht mit wbinfo -g
:
gruppe1
gruppe2
gruppe3
usw...
Damit Squid (genauer ntlm_auth
) auch was mit Winbind Anfangen kann muss das Verzeichnis
/var/run/samba/winbindd_privileged
der Gruppe windbind_priv
gehören, und von dieser Lesbar sein.
Squid Setup
Jetzt kommt der letzte Schritt, und zwar die Anpassung der /etc/squid3/squid.conf
, hier gehört folgendes noch mit
rein:
auth_param ntlm program /usr/bin/ntlm_auth --require-membership-of=DOMAIN\\GRUPPE --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 10
auth_param basic program /usr/bin/ntlm_auth --require-membership-of=DOMAIN\\GRUPPE --helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Domain Proxy Server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
authenticate_cache_garbage_interval 10 seconds
authenticate_ttl 0 seconds
acl AuthorizedUsers proxy_auth REQUIRED
http_access allow all AuthorizedUsers
Von dem Parameter cache_effective_user
bzw. cache_effective_group
sollte man die Finger lassen (die Zeile
sollte also ein Kommentarzeichen am Anfang haben), da sonst ntlm_auth
nicht mit den nötigen Rechten läuft.
Es ist wichtig das der User proxy
auch in der Gruppe winbindd_priv
ist:
sudo adduser proxy winbindd_priv
Mit diesen Einträgen erreicht man das SSO bevorzugt wird, jedoch auch noch der alte Benutzername/Passwort Dialog
möglich ist. Dies ist vor allem dann sinnvoll wenn man nicht nur NTLM fähige Clients hat. Ich habe bei der
Gelegenheit auch gleich eingestellt das nur Mitglieder der AD Gruppe GRUPPE
das Recht haben ins Internet zu gehen,
was gerade in großen Firmen gewünscht wird.
Jetzt kann man mit /etc/init.d/squid3 start
den Squid Proxy starten, und kann einen Test unter Windows machen (z.b.
mit dem Internet Explorer). Das der Proxy Server auch schön auf den Clients eingetragen wird, davon gehe ich jetzt
einfach mal aus.