Linux: Active Directory Integration, SSH

0

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

 Links:

Teilen.

Über den Autor

Seit der Ausbildung zum Fachinformatiker Systemintegration (2002-2005) bei der DaimlerChrysler AG, beruflich im Bereich der E-Mail Kommunikation (Exchange, Linux) sowie des ActiveDirectory, mit entsprechenden Zertifizierungen (MCSE 2003, MCITP Ent.-Admin 2008, MCSE 2012, LPIC 1-3) tätig. Abgeschlossenes Studium zum Master of Science der IT-Management an der FOM sowie zertifizierter Datenschutzbeauftragter. Aktuell im Projektmanagement tätig.

Antworten