Linux mit Active Directory Authentication Teil1

In dieser Anleitung erlären wir euch wie man den Benutzerlogin für Linux mit Active Directory Authentication einrichtet. Da jede Firma ein Active Directory besitzt bietet es sich an dieses als SSO Backend zu nutzen. Die Anleitung basiert auf Ubuntu 14.04 und Windows Server 2012.

Voraussetzungen

SSSD und realmd finden Sie in den Ubuntu-Repositories, so dass die Installation sehr einfach ist. Aber ein paar Voraussetzungen müssen vorab erfüllt werden. 1. DNS Server Der Linux Server den wir ins Active Directory integrieren wollen muss zwingen den Active Directory-DNS-Server verwenden. Dazu tragen wir die IP Addresse des Windows DNS Server in die resolv.conf Datei ein. Nehmen wir an der DNS Server hat die IP 192.168.1.1

[alex@linux-server~]$ nano /etc/resolv.conf
nameserver 192.168.1.1

2. Zeitserver Der Linux Server sollte möglichst die gleiche Zeit verwenden wie der AD Domain-Controller. Der AD Controller bietet einen eigenen Zeitdienst an um sich mit den verbundenen Maschinen zu synchronisieren. Dazu trage wir die IP Addresse in die Datei ntp.conf ein.

[alex@linux-server~]$ nano /etc/ntp.conf
driftfile /var/lib/ntp/drift
server 192.168.1.1
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1

Installation des Kerberos client, SSSD

Nun installieren wir den Kerberos-Client, das Realm-Registrierungswerkzeug, den System Security Services-Daemon, das AD-Clienttool und Samba-Tools:

apt-get install krb5-user realmd sssd sssd-tools adcli samba-common-bin

Wenn Sie dazu aufgefordert werden, geben Sie Ihren AD Kerberos-Bereich ein. Es sollte in der Regel Ihr Domain-Name in Großbuchstaben (“elastic2ls.com” wird “ELASTIC2LS.COM”). Wenn Ihr DNS ordnungsgemäß funktioniert, sollte das alles sein, das für den Kerberos-Client benötigt wird, um ordentlich zu arbeiten. Andernfalls müssen Sie Ihre Server direkt in der Datei /etc/krb5.conf hinzufügen.

Authentifizieren mit Kerberos

[alex@linux-server~]$ kinit admin|ELASTIC2SL.COM
[alex@linux-server~]$ klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin@ELASTIC2SL.COM

Valid starting     Expires            Service principal
01/05/17 16:23:22  01/06/17 02:23:22  krbtgt/ELASTIC2SL.COM@ELASTIC2SL.COM
	renew until 01/06/17 16:23:18

Wir haben jetzt ein Ticket,dass für einige Stunden gültig, was bedeutet, dass die Kerberos-Authentifizierung funktioniert. Wir können mit dem Konfigurieren des Realmd Realm-Registrierungswerkzeugs fortfahren, das uns mit der Domäne verbindet.

realmd konfigurieren

Dazu editieren wir die Datei /etc/realmd.conf

[service]
automatic-install = no

[users]
default-home = /home/%D/%U
default-shell = /bin/bash

[koo.fi]
computer-ou = OU=Linux,DC=elastic2ls,DC=com
automatic-id-mapping = yes
fully-qualified-names = no
  • Die Option automatic-install = no deaktiviert die automatische Installation der Pakete durch realmd.
  • Mit der Option default-home = /home/%D/%U werden die Home-Verzeichnisse der Benutzer in dem Schema /home/DOMAIN/USERNAME angelegt. Z.B. /home/elastic2ls.com/admin
  • default-shell gibt die Standard Shell für die Benutzer an.
  • Die Option computer-ou gibt an, wo das Computerkonto in AD hinzugefügt werden soll.
  • Mit der Option automatic-id-mapping = yes wird die automatische ID-Zuordnung von SSSD anstelle von Benutzer- und Gruppen-IDs, die in POSIX-Attributen in AD gespeichert sind, verwendet. Die automatische ID-Zuordnung von SSSD ist intelligent, da sie die gleiche UNIX-UID und GID auf verschiedenen Hosts garantieren kann, wenn alle Hosts SSSD verwenden.
  • Die Option full-qualified-names = no entfernt standardmäßig den Domänenteil aus Benutzer- und Gruppennamen. Es kann zu Namenkollisionen führen, ist aber eine Erleichterung für die Benutzer, da sie nur ihren Benutzernamen und nicht den Domain-Teil jedes Mal eingeben müssen.

Den Linux Server der Active Directory Domain hinzufügen

Sie können den Befehl “realm discover” nun verwenden, um zu sehen, ob die Active Directory-Domäne entdeckt werden kann. Es benötigt ein gültiges Kerberos-Ticket als Domänenadministrator.

[alex@linux-server~]$ realm discover elastic2ls.com
elastic2ls.com
  type: kerberos
  realm-name: ELASTIC2SL.COM
  domain-name: elastic2ls.com
  configured: no
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin

Nun fügen wir den Server der Domain hinzu.

[alex@linux-server~]$ realm join elastic2ls.com
realm list
elastic2ls.com
  type: kerberos
  realm-name: ELASTIC2SL.COM
  domain-name: elastic2ls.com
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin
  login-formats: %U
  login-policy: allow-realm-logins

Nach dem erfolgreichen Hinzufügen sollten Sie in der Lage sein, einzelne Benutzer und Gruppen mit getent zu aufzulösen:

[alex@linux-server~]$ getent passwd admin
admin:*:1035001181:1035000513:Admin Admin:/home/elastic2ls.com/admin:/bin/bash
[alex@linux-server~]$ getent group 'Domain Admins'
# domain admins:*:364000512:admin

Fehlerbehandlung

ACHTUNG!!! Wenn das nicht funktioniert und diese Meldung “Failed to join the domain” auftritt, solltet ihr es mit der zusätzlichen Angabe der Benutzers versuchen. Dieser muss in der Gruppe Domain-Administratoren sein.

[alex@linux-server~]$ realm join -v --user=admin elastic2ls.com

ACHTUNG!!! Sollte die Meldung “Necessary packages are not installed” auftreten sollte das Paket packagekit nachinstalliert werden.

[alex@linux-server~]$ apt-get install packagekit
killall aptd
killall realmd

Danach sollte es klappen.

Kontrollieren wer sich einlogen kann

An diesem Punkt sollten wir in der Lage sein, uns mit jeder AD-Benutzer-ID anzumelden. Wir können steuern, wer sich anmelden kann und wer nicht.

[alex@linux-server~]$ realm deny --all
realm permit administrator
realm permit -g 'Domain Admins'
realm list
elastic2ls.com
  type: kerberos
  realm-name: ELASTIC2SL.COM
  domain-name: elastic2ls.com
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin
  login-formats: %U
  login-policy: allow-permitted-logins
  permitted-logins: administrator
  permitted-groups: Domain Admins

Automatisiertes Erstellen der Home Verzeichnisse

Um Home-Verzeichnisse automatisiert zu erstellen, fügen Sie eine Zeile pam_mkhomedir.so in /etc/pam.d/common-session hinzu:

[alex@linux-server~]$ nano /etc/pam.d/common-session
session [default=1]   pam_permit.so
session requisite     pam_deny.so
session required      pam_permit.so
session optional      pam_umask.so
session required      pam_unix.so
session required      pam_mkhomedir.so  skel=/etc/skel umask=0022
session optional      pam_sss.so
session optional      pam_systemd.so