Es macht in einem Unternehmen teilweise Sinn, einen Linux-Server an das Active-Directory zu binden. Möchte man z.B. die Rechte und Benutzer im Unternehmen nur an einer Stelle pflegen, so gibts es fast keine andere Wahl. Die vorangehensweise in dieser Anleitung ist auf andere Distributionen portierbar, eventuell müssen ein paar Pfade bzw. Packete angepasst werden.
Zu beginn müssen folgende Packete installiert werden
apt-get install krb5-config krb5-user krb5-doc winbind samba ntpdate
Anschließend, sollte überprüft werden, ob der Servername in /etc/hosts den Domänen-Suffix enthält:
10.0.0.20 server.domaene.local server
Nun geht es daran, die Config-Files anzupassen. Als erstes nehmen wir die /etc/krb5.conf
[logging] default = FILE:/var/log/krb5.log kdc = FILE:/var/log/lrb5kdc.log admin_server = FILE:/var/log/kadmin.log [libdefaults] default_realm = domaene.local forwardable = true dns_lookup_realm = false dns_lookup_kdc = false clock_skew = 300 ticket_lifetime = 24h [realms] GDV.INTRA = { kdc = dc.domaene.local admin_server = dc.domaene.local default_domain = domaene.local } [domain_realm] .domaene = domaene.local domaene = domaene.local
kdc = dc.domaene.local ist hierbei der Domänen-Controller.
/etc/samba/sm.conf
[global] workgroup = domaene realm = domaene.local load printers = no preferred master = no local master = no server string = fileserver password server = 10.0.0.1 encrypt passwords = yes security = ads netbios name = server client signing = Yes dns proxy = No wins server = 10.0.0.1 idmap uid = 10000-20000 idmap gid = 10000-20000 winbind separator = / winbind enum users = Yes winbind enum groups = Yes winbind use default domain = Yes template shell = /bin/bash template homedir = /home/%D/%U
Unter „wins server“ und „password server“ ist die IP des Domänen-Controllers einzutragen. Nun ist es noch wichtig den Samba-Dienst neuzustarten.
root@server:~# /etc/init.d/samba restart
Im nächsten Schritt versuchen wir uns als Administrator der Domäne anzumelden. Hier zu wird folgendes eingegeben:
kinit Administrator@domaene.local
Hierbei ist Groß- und Kleinschreibung sehr wichtig. Ein Fehler wie:
kinit: Cannot find KDC for requested realm while getting initial credentials
deutet darauf hin, dass in der Schreibweise etwas falsch ist. Wenn nach der Passwort eingabe keine Ausgabe erfolgt, war die Anmeldung erfolgreich. Mit dem Befehl klist kann man sich nun das Kerberos-Ticket anschauen, und wann es verfällt.
root@server:/opt# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: Administrator@domaene.local Valid starting Expires Service principal 08/25/11 18:45:01 08/26/11 06:45:03 krbtgt/domaene.local@domaene.local renew until 08/26/11 18:45:01
Wenn dies erfolgreich war können wir mit dem Server der Domäne beitreten:
root@server:~# net ads join -U administrator
Sollte der folgende Fehler auftreten:
kinit(v5): Clock skew too great while getting initial > credentials
Ist dies ein Hinweis darauf, dass die Zeit des Linux-Servers stark abweicht von der des Domänen-Controllers. Hier sollte mittels ntpdate die Zeitgestellt werden.
Wenn bisher alles ohne Probleme vonstatten gegangen ist, sollte der folgende Befehle eine Liste der User zurück geben, die im Active-Directory geführt werden:
root@server:~# wbinfo -u
Mittels
root@server:~# wbinfo -g
kann man sich eine Liste der Gruppen zurück geben lassen.
Abschließend muss man die /etc/nsswitch.conf anpassen und folgende Einträge ergänzen:
passwd: compat winbind shadow: compat winbind group: compat winbind
Sollte es gewünscht sein, dass sich auch User mit den AD-Daten per SSH anmelden können muss zusätzlich noch PAM angepasst werden.
PAM liefert ein Shell-Skript mit, mit dem man die Anmelde-Rouine anpassen kann. Dies lautet pam-auth-update.
root@server:~# pam-auth-update
Es folgt ein ähnlicher Bildschirm wie dieser hier:
┌──────────────────────────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────────────────────────┐ │ Pluggable Authentication Modules (PAM) bestimmen, wie Authentifizierung, Berechtigung und Passwort-Änderung auf dem System gehandhabt werden. Ebenso │ │ erlauben sie die Konfiguration zusätzlicher Maßnahmen, die beim Start von Benutzersitzungen vorgenommen werden. │ │ │ │ Einige Pakete mit PAM-Modulen stellen Profile bereit, die das Verhalten aller Anwendungen, die PAM verwenden, automatisch anpassen können. Bitte │ │ geben Sie an, welche dieser Verhaltensweisen Sie aktivieren möchten. │ │ │ │ Zu aktivierende PAM-Profile: │ │ │ │ [*] Kerberos authentication │ │ [*] Unix authentication │ │ [*] Winbind NT/Active Directory authentication │ │ │ │ │ │ <Ok> <Abbrechen> │ │ │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Nachdem die Config-Files angepasst wurde muss in der Datei /etc/pam.d/common-session eine Zeile ergänzt werden. Diese erzeugt die Verzeichnisse, wenn ein User sich anmeldet.
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
Diese Zeile einfach unter
session optional pam_winbind.so
einfügen und schon sind wir damit fertig.
Zum Schluss muss nur noch der SSH-Dienst angepasst werden, damit ein Login erlaubt wird. Dafür wird in der Datei /etc/ssh/sshd_config folgendes geändert:
KerberosAuthentication yes #KerberosGetAFSToken no KerberosOrLocalPasswd yes KerberosTicketCleanup yes # GSSAPI options GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM yes AllowGroups domaenen-gruppe "linux-Gruppe"
Nachdem dies geändert wurde muss der Dienst nur noch neugestartet werden und schon kann man sich via SSH mit den Domänen-Usern, die in der Gruppe „domaenen-gruppe“ sind anmelden.
root@server:~# /etc/init.d/ssh restart