Active Directory Member Server mit SAMBA4 und PAM-Winbind

Szenario

Ich habe mit Windows Server 2012R2 und SAMBA4 eine Active-Directory-Domäne MYDOM.LOCAL aufgebaut.

Ich möchte mit SAMBA4 einen Dateiserver mit dem Namen LINFS als „Member Server“ zu dieser Domäne hinzufügen. Das Betriebssystem ist Debian GNU/Linux „jessie/sid“; die verwendete Version von SAMBA4 ist 4.1.12.

AD-Domänenbenutzer sollen sich auch per SSH auf LINFS.MYDOM.LOCAL anmelden können, um dort Dateien direkt zu bearbeiten.

Ziel dieses Tutorials soll es sein, einen funktionstüchtigen Server mit SAMBA4 in einer AD-Domäne zu implementieren, auf dem sich AD-Benutzer auch anmelden können, um Dateien direkt zu bearbeiten oder Linux-Anwendungen zu benutzen.

Damit sind die Grundlagen geschaffen, um eine Serverlandschaft für AD-Domänen mit SAMBA4 zu verwirklichen. Spezialprobleme wie Druckerfreigaben, Terminal-Dienste, Netlogon-Skripten, einheitliche Home-Verzeichnisse usw. können danach auf dieser Grundlage behandelt werden.

UNIX-Attribute in Active Directory pflegen

In AD kann durch Bearbeiten der „UNIX-Attribute“ eines Benutzers eine Login-Shell, ein Homeverzeichnis und eine UNIX-User-ID für Domänenbenutzer festgelegt werden. Auf einem 2012R2 DC kann dafür das Feature „NIS Service“ hinzugefügt werden. Das geht in einer Eingabeaufforderung als Administrator mit folgendem Kommando:

C:\Windows\system32> Dism.exe /online /enable-feature /featurename:adminui /featurename:nis /all

Dies fügt dem Eigenschafts-Dialog von AD-Gruppen und -Benutzern den Reiter „UNIX-Attribute“ hinzu:

Reiter UNIX-Attribute in ADUC auf Windows Server 2012

Reiter „UNIX-Attribute“ in ADUC auf Windows Server 2012

SAMBA4 auf LINFS installieren

Ich installiere SAMBA4 Version 4.1.12 durch Kompilieren aus dem Quellcode:

 samba# ./configure --sysconfdir=/etc/samba --with-shared-modules=idmap_ad
 samba# make
 samba# make install

Hinweis: Wie in meinem vorangegangenen Beispielen möchte ich nur die Konfigurationsdatei smb.conf im offiziellen Debian-Verzeichnis /etc/samba pflegen, die Installation der anderen Dateien soll in das Standard-Verzeichnis /usr/local/samba erfolgen, um nicht von Installationen von Debian-Paketen überschrieben zu werden.

Hinweis: Das Modul idmap_ad für Winbind-ID-Mapping muss beim Aufruf von configure ausdrücklich angefordert werden.

SAMBA4 auf LINFS konfigurieren

Die Datei /etc/samba/smb.conf enthält folgende Einstellungen mitsamt der Definition einer Test-Freigabe test1:

[global]
netbios name = LINFS
workgroup = MYDOM
security = ADS
realm = MYDOM.LOCAL
encrypt passwords = yes

idmap config *:backend = tdb
idmap config *:range = 70001-80000
idmap config MYDOM:backend = ad
idmap config MYDOM:schema_mode = rfc2307
idmap config MYDOM:range = 500-40000

winbind nss info = rfc2307
winbind trusted domains only = no
winbind use default domain = yes
winbind enum users  = yes
winbind enum groups = yes

server signing = auto
client signing = auto

[test1]
path = /srv/shares/test1
read only = no

Winbind als NSS-Bibliothek verfügbar machen

 ~# ln -s \
    /usr/local/samba/lib/libnss_winbind.so \
    /lib/x86_64-linux-gnu/
 ~# ln -s \
    /lib/x86_64-linux-gnu/libnss_winbind.so \
    /lib/x86_64-linux-gnu/libnss_winbind.so.2
 ~# ldconfig

Winbind für NSS verwenden

In der Datei /etc/nsswitch.conf ändere ich die Einträge für passwd und group wie folgt:

passwd: compat winbind
group: compat winbind

LINFS als „Member Server“ der Domäne MYDOM.LOCAL hinzufügen

Nun führe ich den ADS-Join in die Domäne MYDOM.LOCAL durch:

/usr/local/samba/bin/net ads join \
    osName=DebianLinux osVer=7.6.0 \
    -U administrator

Wenn ich im AD eine Organisationseinheit SiteNetwork/Servers erstellt habe, kann ich LINFS auch gleich dort hineinversetzen:

/usr/local/samba/bin/net ads join \
    createcomputer=SiteNetwork/Servers \
    osName=DebianLinux osVer=7.6.0 \
    -U administrator

SAMBA4-Dienste auf LINFS starten

 ~# /usr/local/samba/sbin/nmbd
 ~# /usr/local/samba/sbin/smbd
 ~# /usr/local/samba/sbin/winbindd

PAM-Winbind aktivieren

Um die Anmeldung für Domänenbenutzer zu erlauben, muss das von SAMBA4 mitgelieferte PAM-Modul für Winbind verfügbar gemacht werden:

 ~# ln -si /usr/local/samba/lib/security/pam_winbind.so /lib/x86_64-linux-gnu/security

Zur Datei /etc/pam.d/common-account muss folgende Zeile vor allen anderen Zeilen eingefügt werden:

account sufficient pam_winbind.so

Zur Datei /etc/pam.d/common-auth muss folgende Zeile vor allen anderen Zeilen eingefügt werden:

auth sufficient pam_winbind.so

Optional: Home-Verzeichnis automatisch erstellen

In /etc/pam.d/common-account kann folgende Zeile nach allen anderen Zeilen hinzugefügt werden (das wird ein fehlendes Homeverzeichnis für Domänenbenutzer bei deren erster Anmeldung automatisch erzeugen):

session required pam_mkhomedir.so skel=/etc/skel/ umask=0022

Hinweis: Wenn in AD ein neuer Benutzer erstellt wurde, kann es wegen Replikation mehrere Minuten dauern, bis dieser für den Member-Server sichtbar wird.