Samba 4 als Speicher im Netz

Jens Stolt, 123RF

Brückenbau

Seit die finale Version von Samba 4 erschienen ist, gewinnt sie in der Praxis mehr und mehr an Bedeutung und hat mittlerweile Einzug in Jessie, dem nächsten Debian-Release, gehalten. Wir werfen einen Blick auf die neuen Funktionen.
Das Titelthema im ADMIN 04/14 "Vernetzt speichern" sind Netzwerkdateisysteme, etwa Samba 4, verteilter Storage mit Ceph & GlusterFS und der Unix-Klassiker ... (mehr)

Als Samba 3 im Jahr 2003 veröffentlicht wurde, bestand es aus drei Diensten: Dem Fileserver »smbd« , dem Nameserver »nmbd« und dem Authentifizierungsserver »winbind« . Diese drei Dienste haben in ihrem Zusammenspiel mit dem restlichen System einen Dateidienst und/oder NT4-Domain-Controller bereitgestellt.

Bei der Entwicklung von Samba 4 wurde diese Struktur komplett überarbeitet. Dies rührt daher, dass eine Active-Directory-Domäne sehr viel mehr Dienste bereitstellen muss als nur die obigen drei: Die klassische NETBIOS-Namensauflösung wurde abgelöst durch DNS, Authentifizierung wurde zentralisiert mittels Kerberos und zentrale Datenhaltung wird über LDAP realisiert – einzig der Dateiserver ist beim Alten geblieben, wurde allerdings auf die neue Struktur angepasst.

Erstmalig ist es mit Samba 4 möglich, eine komplette Windows-Domänenstruktur auf Linux abzubilden. Die Debian-Pakete bieten diese Möglichkeit selbstverständlich an und fragen bei der Installation nach, welche Rolle das System im Netz spielen soll. Wir haben im Test vier Systeme provisioniert: eine virtuelle Maschine als Domänen-Controller (Debian Jessie), ein openATTIC-System als Domänenmitglied (Debian Jessie) und zwei Windows-Clients als Domänenmitglieder (Windows 7/8).

Das Netzwerkdateisystem ist nun mehr denn je in das Domänenkonzept integriert – es nutzen zu wollen, ohne die Benutzer und Berechtungen in der Domain zu verwalten, ist nur mäßig sinnvoll. Das hier beschriebene Setup ist also die Grundvoraussetzung, um Samba als gemeinsames Dateisystem im Unternehmen einsetzen zu können.

Der Domain Controller

Das neue Samba ist so modular aufgebaut (siehe Listing 1), dass es auch möglich ist, die einzelnen Dienste auszulagern und beispielsweise DNS durch »bind9« oder den Verzeichnisdienst durch OpenLDAP zu ersetzen. Das Rundum-Sorglos-Paket ist allerdings für eine einfache Installation mehr als ausreichend.

Listing 1

Prozesse von Samba 4

01 root@dev-mz-s4dc:~# netstat -tupl | grep samba
02 tcp      0     0 *:kpasswd            *:*  LISTEN     4908/samba
03 tcp      0     0 *:domain             *:*  LISTEN     4914/samba
04 tcp      0     0 *:kerberos           *:*  LISTEN     4908/samba
05 tcp      0     0 *:ldaps              *:*  LISTEN     4906/samba
06 tcp      0     0 *:1024               *:*  LISTEN     4902/samba
07 tcp      0     0 *:3268               *:*  LISTEN     4906/samba
08 tcp      0     0 *:3269               *:*  LISTEN     4906/samba
09 tcp      0     0 *:ldap               *:*  LISTEN     4906/samba
10 tcp      0     0 *:loc-srv            *:*  LISTEN     4902/samba
11 udp      0     0 *:kpasswd            *:*             4908/samba
12 udp      0     0 *:domain             *:*             4914/samba
13 udp      0     0 *:kerberos           *:*             4908/samba
14 udp      0     0 *:netbios-ns         *:*             4904/samba
15 udp      0     0 *:netbios-dgm        *:*             4904/samba
16 udp      0     0 *:ldap               *:*             4907/samba

Ein zentraler Dienst, den der DC bereitstellt, ist jedoch leicht zu übersehen: Eine Windows-Domäne erledigt ihre komplette Authentifizierung über Kerberos. Dieses Protokoll funktioniert nur dann, wenn bei allen Systemen die Uhrzeit um nicht mehr als fünf Minuten voneinander abweicht. Es gilt also unbedingt, einen NTP-Server zu konfigurieren, um Probleme in dieser Richtung auszuschließen.

Die Software-Installation des Domain Controllers (DC) ist mittels »apt-get install samba« sehr einfach zu erledigen. Debconf stellt während der Installation ein paar Fragen zur Rolle des Servers sowie zu den Eckdaten der Domäne und erledigt auch automatisch die Provisionierung, sodass man sich hier im Idealfall um nichts mehr selbst kümmern braucht. Falls dabei etwas schief geht – der häufigste Grund dafür dürfte sein, dass das Administratorkennwort an der Kennwortrichtlinie der Domäne scheitert – so ist eine erneute Provisionierung mittels »samba-tool domain provision« schnell erledigt. Die Pakete sorgen dann auch dafür, dass »samba-tool« die richtigen Vorgabewerte übernimmt.

Der Provisionierungsvorgang erzeugt unter anderem die Dateien »/etc/krb5.conf« und »/etc/samba/smb.conf« , die am Ende so aussieht wie in Listing 2. Diese Konfiguration deckt alles ab, was man zum Start benötigt.

Listing 2

/etc/samba/smb.conf

01 # Global parameters
02 [global]
03         workgroup = SAMBA
04         realm = SAMBA.LAN
05         netbios name = DEV-MZ-S4DC
06         server role = active directory domain controller
07         dns forwarder = 172.16.101.23
08
09 [netlogon]
10         path = /var/lib/samba/sysvol/samba.lan/scripts
11         read only = No
12
13 [sysvol]
14         path = /var/lib/samba/sysvol
15         read only = No

Installation des Domänenmitglieds

Für den Betrieb eines Samba-4-Servers als Domänenmitglied gilt es eine Einschränkung zu beachten: Das Programm »samba« unterstützt den Betrieb als Mitglied nicht. Diese Konfiguration wird daher mittels der bekannten Programme »smbd« , »nmbd« und »winbind« realisiert. Auch an dieser Stelle noch einmal der Hinweis auf den NTP-Client, der zuvor unbedingt konfiguriert werden sollte: Stimmt die Zeitsynchronisierung nicht, ist kaum mit einer funktionierenden Samba-Installation zu rechnen. Weiterhin muss geprüft werden, ob »hostname --fqdn« den korrekten, vollqualifizierten Namen des Rechners zurückgibt:

$ hostname --fqdn
benrime.samba.lan

Zum Test sollte ein openATTIC-Storage-Server als Domänenmitglied auftreten. Dazu wurde auf dem Rechner erst Debian Wheezy installiert, openATTIC darauf konfiguriert und das System danach auf Debian Jessie aktualisiert. Anschließend wird das System – wie im openATTIC-Standard vorgesehen  – durch den Befehl »oaconfig domainjoin« in die Domäne aufgenommen. Dieses Skript führt eine Reihe von Befehlen aus, die im Folgenden näher beschrieben werden und so auf jedem beliebigen Linux-System funktionieren.

openATTIC erzeugt zunächst die Datei »krb5.conf« (diese kann auch einfach vom DC kopiert werden) sowie die Samba-Konfiguration »/etc/samba/smb.conf« (Listing 3).

Listing 3

/etc/samba/smb.conf von openATTIC

01 [global]
02    workgroup    = SAMBA
03    realm        = SAMBA.LAN
04    netbios name = BENRIME
05    security     = ADS
06
07    encrypt passwords = true
08    vfs objects = acl_xattr
09
10    kerberos method = dedicated keytab
11    dedicated keytab file = /etc/krb5.keytab
12
13    idmap config *:backend = tdb
14    idmap config *:range   = 1000000-1999999
15
16    idmap config SAMBA:backend = rid
17    idmap config SAMBA:range   = 10000-999999
18
19    winbind nss info = rfc2307
20    winbind trusted domains only = no
21    winbind use default domain = yes
22    winbind enum users  = no
23    winbind enum groups = no
24    template shell = /bin/bash
25
26    sync always = yes

Als nächstes testet openATTIC, ob Kerberos funktioniert, indem es sich als Administrator authentifiziert (Listing 4).

Listing 4

Kerberos-Authentifizierung

01 root@benrime:~$ kinit Administrator
02 Password for Administrator@SAMBA.LAN:
03 root@benrime:~$ klist
04 Ticket cache: FILE:/tmp/krb5cc_0
05 Default principal: Administrator@SAMBA.LAN
06
07 Valid starting       Expires              Service principal
08 06.02.2014 11:58:27  06.02.2014 21:58:27  krbtgt/SAMBA.LAN@SAMBA.LAN
09         renew until 07.02.2014 11:58:24

Ist dieser Schritt erfolgreich, so kann man mittels »net ads join -U Administrator« der Domäne beitreten. Die Samba-Konfiguration von openATTIC verwendet eine externe Keytab, um Kerberos-Authentifikation für andere Dienste außer Samba zu ermöglichen. Daher muss nun die Keytab erzeugt und validiert werden (Listing 5).

Listing 5

Kerberos-Keytab

01 root@benrime:~$ net ads join -U Administrator
02 Password:
03 root@benrime:~$ net ads keytab create   # Keytab erzeugen
04 root@benrime:~$ net ads keytab add HTTP # Prinzipal für HTTP erzeugen
05 root@benrime:~$ kdestroy                # Administrator ausloggen
06 root@benrime:~$ klist -k                # Erzeugte Keytab anzeigen
07
08 Keytab name: FILE:/etc/krb5.keytab
09 KVNO Principal
10 ---- --------------------------------------------------------
11    2 host/benrime.samba.lan@SAMBA.LAN
12    2 host/benrime.samba.lan@SAMBA.LAN
13    2 host/benrime.samba.lan@SAMBA.LAN
14    2 host/benrime@SAMBA.LAN
15    2 host/benrime@SAMBA.LAN
16    2 host/benrime@SAMBA.LAN
17    2 BENRIME$@SAMBA.LAN
18    2 BENRIME$@SAMBA.LAN
19    2 BENRIME$@SAMBA.LAN
20    2 HTTP/benrime.samba.lan@SAMBA.LAN
21    2 HTTP/benrime.samba.lan@SAMBA.LAN
22    2 HTTP/benrime.samba.lan@SAMBA.LAN
23    2 HTTP/benrime@SAMBA.LAN
24    2 HTTP/benrime@SAMBA.LAN
25    2 HTTP/benrime@SAMBA.LAN
26
27 root@benrime:~$ # Login mittels Keytab + Maschinenaccount:
28 root@benrime:~$ kinit -k BENRIME$
29 root@benrime:~$ # Keytab-Auth -> keine Passwort-Abfrage!
30 root@benrime:~$ klist
31 Ticket cache: FILE:/tmp/krb5cc_0
32 Default principal: BENRIME$@SAMBA.LAN
33
34 Valid starting       Expires              Service principal
35 06.02.2014 10:05:26  06.02.2014 20:05:26  krbtgt/SAMBA.LAN@SAMBA.LAN
36         renew until 07.02.2014 10:05:26

Wenn das alles funktioniert hat, war der Domänenbeitritt erfolgreich. Nun bleibt noch »winbind« zu konfigurieren, indem man die Datei »/etc/nsswitch.conf« folgendermaßen anpasst:

passwd:   compat winbind
group:    compat winbind

Nach einem anschließenden Neustart des Winbind-Servers (»service winbind restart« ) kann das neue Domänenmitglied auf die Domäne zugreifen und Benutzer und Gruppen abrufen:

root@benrime:~$ getent passwd Administratoradministrator:*:10500:10513:Administrator:/home/SAMBA/administrator:/bin/bash
root@benrime:~$ getent group "Domain Admins"
domain admins:x:10512:test,administrator

Damit ist der Domänenbeitritt abgeschlossen.

Windows-Systeme können einer Samba-4-Domäne genauso beitreten wie einem klassischen Windows-Active-Directory (Abbildung 1). Man navigiert also in die Systemeinstellungen unter »Erweiterte Systemeinstellungen« , »Computername« , »Ändern« , trägt dort die Domäne ein, beantwortet die Frage nach dem Administrator-Kennwort, und nach ein paar Sekunden des Wartens und einem Neustart ist der Domänenbeitritt erledigt. Auch die Konfiguration des NTP-Clients erledigt Windows beim Beitritt automatisch.

Abbildung 1: Mit der richtigen Konfiguration treten Windows-Clients einer Samba-4-Domain bei.
comments powered by Disqus

Artikel der Woche

Support-Ende von SMBv1

Mit dem aktuellen Update für Windows 10 und Windows Server 2016 steht eine Änderung ins Haus, die gerade für Benutzer älterer Linux-Distributionen große Auswirkungen hat. Nachdem Microsoft es über viele Jahre schon angekündigt hat, entfernt der Konzern mit dem aktuellen Update-Release den Support für das SMB-Protokoll 1. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Linux-Backup

Welche Backup-Lösung setzen Sie für Linux im professionellen Umfeld ein?

  • keine
  • eigene Scripts
  • rsnapshot
  • rdiff-backup
  • Bacula
  • Bareos
  • Borg
  • Duplicity
  • Amanda
  • Burp
  • Clonezilla
  • Acronis
  • Arkeia
  • SEP sesam
  • Veeam
  • Redo Backup
  • Relax-and-Recover
  • andere kommerzielle Software
  • andere Open-Source-Software

Google+

Ausgabe /2018

Microsite