Inhalt
Installation
Um Linux in eine ActiveDirectory Umgebung müssen zu erst die notwendigen Pakete installiert werden
apt-get install libkrb53 krb5-config krb5-user samba winbind ntpdate
Nun müssen die Dienste noch gestoppt werden
/etc/init.d/samba stop /etc/init.d/winbind stop
Kerberos
Nun muss als erstes Kerberos konfiguriert werden, dazu muss in der Datei /etc/krb5.conf ein Abschnitt für die Domain hinzugefügt werden. In den folgenden Bespielen steht
REALMNAME für den gesamten Domain Namen, also zum Beispiel test.domain.local.
REALMNAME { kdc = dc_ip_adresse }
Nun muss noch im Abschnitt libdefaults die Domain als Standard Domain eingetragen werden.
[libdefaults] default_realm = REALMNAME
Da bei einer Kerberos Authentifizierung die Uhrzeit zwischen dem Client und Server sich nicht um mehr als 5 Minunten unterscheiden darf sollten sie einen cronjob für die Zeitsynchronisierung mit einem DC einrichten
#min hour day month dow user command */60 * * * * * /usr/sbin/ntpdate dc01.test.domain.local
Winbind
Nun muss Winbind noch eingerichtet werden, dazu müssen in der Datei /etc/samba/smb.conf folgende Zeilen ergänzt oder geändert werden. REALMNAME ist wieder der gesamte Domainname test.domain.local. DOMAINNAME ist Kurzversion, in dem Fall test
realm = REALMNAME workgroup = DOMAINNAME security = ads idmap uid = 10000-20000 idmap gid = 10000-20000 template shell = /bin/bash template homedir = /home/%D/%U winbind use default domain = yes
Nsswitch
Über die Datei /etc/nsswitch.conf wird festgelegt, in welcher Reihenfolge das System nach Usern und Gruppen suchen soll.
passwd: files winbind group: files winbind
Dieser Änderung können sie durch das neu einlesen der Konfig Datei aktivieren
ldconfig
Domain Beitritt
Nun noch kurz die Dienste neu starten
/etc/init.d/winbind restart /etc/init.d/samba restart
Anschließend kann der Computer der Domain beitreten
net ads join -U Administrator
Um das Computerkonto direkt innerhalb einer OU zu erstellen, sieht der Befehl wiefolgt aus
net ads join createcomputer='domain/Computer/Desktop' -U Administrator
PAM Authentifizierung
Damit andere Applicationen die AD Authentifizierung nutzen können, muss PAM (Pluggable Authentication Module) für die Authentifizierung konfiguriert werden, dazu sin folgende Änderungen notwendig.
# /etc/pam.d/common-account account sufficient pam_winbind.so account required pam_unix.so
# /etc/pam.d/common-auth auth sufficient pam_winbind.so auth required pam_unix.so use_first_pass
# /etc/pam.d/common-session session sufficient pam_winbind.so session required pam_unix.so
# /etc/pam.d/common-session session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 session sufficient pam_winbind.so session required pam_unix.so
Der Unterscheid zwischen required und sufficient ist, dass dass bei sufficient eine erfolgreiche Anmeldung über das angegebene Modul das Ende zu bearbeitenden Module bedeutet, während bei required die Authentifizierung noch alle nachfolgenden Module erfolgreich durchlaufen muss.
use_first_pass bewirkt, dass das angegebene Kennwort bei einer fehlgeschlagenen Authentifizierung erneut für das angegebene Modul verwendet wird. Normalerweise bedeutet eine fehlgeschlagene Authentifizierung das für das nächste Modul erneut nach einem Kennwort gefragt wird.
pam_mkhomedir.so erzeugt bei der erfolgreichen Anmeldung auf dem Linux System ein Homeverzeichniss für den Benutzer aus der Vorlage /etc/skel.
SSH
Nachdem die AD Integration erfolgreich verlaufen ist, kann nun auch bei einer SSH Anmeldung eine Authentifizierung gegen das AD erfolgen. Dazu muss in der Datei /etc/ssh/sshd_config der Parameter UsePAM auf yes stehen.
Um nun die Anzahl der User einzuschränken die sich an dem Linux System anmelden können einzuschränken bieten sich die Parameter AllowUsersund AllowGroups, DenyUsers und DenyGroupsan. Um lediglich Domain Administratoren den Zugriff zu gewähren würde AllowGroups verwendet werden:
AllowGroups root "domain admins"
Achten Sie auf die Groß- und Kleinschreibung. Diese ist anders als im AD angezeigt. Prüfen sich Sie sicherheitshalber den Gruppennamen mit wbinfo -g nach. Sie sollten die Gruppe root immer mit unter AllowGroups aufführen, damit die Authentifizierung mit dem lokalen user root nicht ausgeschlossen wird.
Troubleshooting
Ports
Für die Verbindung zur Domain muss sichergestellt sein, dass folgende Ports genutzt werdn können und nicht durch eine Firewall blockiert werden
- 88/TCP
- 88/UDP
- 389/TCP
- 464/UDP
DNS Auflösung
Am Client muss die DNS Auflösung des Domain Controllers möglich sein.
host <ip domain controller>
sollte den Namen des Domain Controllers liefern.
Samba Konfiguration prüfen
testparm
AD Verbindung prüfen
net ads info
Test join
net ads testjoin
User gegenüber der Domain authentifizieren
kinit <username>
Kerberos Ticket anzeigen
kinit
Kerberos Ticket löschen
kdestroy
Verfügbarkeit der Domains anzeigen
wbinfo --sequence
User auflisten
wbinfo -u
Gruppen auflisten
wbinfo -g
RPC trust prüfen
wbinfo -t
Winbind Authorisierung prüfen
winbind -a username%password