Samba mit Active Directory

Linux und Active Directory? Können die miteinander? Aber sicher! Dieser Blog-Artikel dokumentiert das Einbinden eines Ubuntu Server 24.04 LTS in eine bestehende Active Directory-Umgebung.

Einführung

Gehen wir einmal davon aus, dass Microsoft Active Directory (AD) das zentrale Identitäts- und Berechtigungssystem in Deinem Netzwerk bildet. Deine Benutzerkonten, Gruppen, Computerobjekte sowie Authentifizierungsmechanismen werden also dort verwaltet.

Jetzt möchtest Du einen Linux-Server (in unserem Fall einen Ubuntu-Server) in eine solche Infrastruktur einbinden. Das Ziel ist dabei, diesen Server als Domänenmitglied zu betreiben und Windows-Clients eine Dateifreigabe bereitzustellen, die über bestehende AD-Konten abgesichert ist.

Technisch erfolgt diese Integration über das Zusammenspiel mehrerer Komponenten:

  • Active Directory stellt die Identitäten und die Kerberos-basierte Authentifizierung bereit.

  • Der Ubuntu-Server nutzt Samba als Implementierung des SMB-Protokolls, um Windows-kompatible Dateifreigaben anzubieten. Damit Samba Domänenbenutzer und -gruppen aus Active Directory auflösen und Berechtigungen korrekt interpretieren kann, wird der Server als sogenannter Member Server in die Domäne aufgenommen. Winbind sorgt für die Übersetzung zwischen Windows-Sicherheitsidentitäten und Linux-Benutzer- bzw. Gruppen-IDs übernimmt.

  • Bei allem spielt DNS eine fundamentale Rolle, da Domänencontroller und Kerberos-Dienste ausschließlich über DNS-Service-Records gefunden werden.

Nach dem Domänenbeitritt existiert für Deinen Ubuntu-Server ein eigenes Computerobjekt im Active Directory.

Los geht’s

Voraussetzungen:

  • Ein lauffähiger Ubuntu Server 24.04 LTS. Der Artikel Ubuntu Server 24.04 installieren enthält alle Informationen, die dafür notwendig sind.

  • Dein Ubuntu Server sollte eine statische IP-Adresse besitzen (wird meist via Netplan konfiguriert), oder eine fixe IP-Adresse via DHCP-Reservierung zugewiesen bekommen. Eine sich ständig wechselnde IP-Adresse ist keine gute Idee. Es kann dazu führen, dass DNS-Einträge und eventuell registrierte AD-Informationen nicht mehr zur tatsächlichen Adresse des Servers passen, wodurch Clients ihn nicht zuverlässig erreichen. In einer AD-Umgebung kann das Authentifizierungsfehler, Verbindungsprobleme und inkonsistente Namensauflösung verursachen.

Legen wir los. Wir werden jetzt folgendes machen:

  • Namensauflösung des Ubuntu-Servers anpassen
  • Fully Qualified Domain Name (FQDN) des Ubuntu-Servers korrekt auflösen
  • Samba und Abhängigkeiten installieren
  • Samba konfigurieren
  • Der Domäne beitreten
  • Einen Netzwerkwerkordner erstellen und diesen in Samba registrieren
  • Den Zugriff auf diesen Netzwerkwerkordner testen

Wir verwenden dabei folgende Beispieldaten:

  • Windows-Domäne: beispiel.intranet
  • Windows-Benutzer mit Admin-Rechten: frank
  • DNS-Server: 192.0.2.1
  • Ubuntu-Server (IPv4): 192.0.2.86
  • Ubuntu-Server (FQDN): ubuntu-server.beispiel.intranet

Namensauflösung

Zunächst müssen wir die Namensauflösung unseres Ubuntu-Servers anpassen. Das ist superwichtig, da Active Directory vollständig DNS-basiert arbeitet. Kerberos, LDAP und die Ermittlung der Domain Controller erfolgen ausschließlich über DNS-Service-Records.

Öffne folgende Datei:

sudo nano /etc/resolv.conf

Ändere dort den DNS-Server (nameserver) und die Such-Domäne (search) so ab, dass beides passt.

nameserver 192.0.2.1
options edns0 trust-ad
search beispiel.intranet

FQDN

Jetzt sorgen wir dafür, dass unser Ubuntu-Server seinen eigenen Fully Qualified Domain Name (FQDN) korrekt auflöst.

Öffne folgende Datei:

sudo nano /etc/hosts

Dort ändere den oberen Teil wie folgt ab:

127.0.0.1 localhost
192.0.2.86 ubuntu-server.beispiel.intranet ubuntu-server

Ein anschließendes

hostname -f

sollte dann ubuntu-server.beispiel.intranet zurückliefern.

Samba installieren

Wir installieren jetzt Samba & Co:

sudo apt install samba winbind libnss-winbind libpam-winbind krb5-user

Folgende Pakete werden mit diesem Befehl installiert:

  • samba: Stellt den SMB/CIFS-Server bereit, über den Windows-Clients auf Freigaben des Ubuntu-Servers zugreifen können. Samba implementiert das Windows-Dateifreigabeprotokoll und ermöglicht den Betrieb als Domänenmitglied.

  • winbind: Sorgt für die Anbindung an Active Directory und ermöglicht die Auflösung von AD-Benutzern und -Gruppen auf dem Linux-System. Es übersetzt Windows-Sicherheitskennungen (SIDs) in Unix-UIDs und -GIDs.

  • libnss-winbind: Erweitert das Name Service Switch (NSS) von Linux, sodass Domänenbenutzer und -gruppen wie lokale Benutzer über Befehle wie getent, id oder wbinfo abgefragt werden können.

  • libpam-winbind: Bindet Active Directory in das PAM-Authentifizierungssystem ein, sodass sich AD-Benutzer direkt am Linux-System anmelden können (z. B. per SSH).

  • krb5-user: Stellt die Kerberos-Clientbibliotheken bereit, die für die sichere Authentifizierung gegen das Active Directory benötigt werden, und konfiguriert den Kerberos-Realm.

Während der Installation wirst Du nach Deiner Windows-Domäne (Kerberos Realm) gefragt. Tippe in GROSSBUCHSTABEN ein:

BEISPIEL.INTRANET

Nach erfolgreicher Installation konfigurieren wir den Samba-Dienst:

sudo nano /etc/samba/smb.conf

Trage dort folgende Infos ein (Du kannst die Sektion [global] komplett ersetzen):

[global]
   workgroup = BEISPIEL
   realm = BEISPIEL.INTRANET
   security = ADS
   server role = member server

   idmap config * : backend = tdb
   idmap config * : range = 3000-7999

   idmap config BEISPIEL : backend = rid
   idmap config BEISPIEL : range = 100000-999999

   winbind use default domain = yes
   winbind enum users = yes
   winbind enum groups = yes

   template shell = /bin/bash

   log file = /var/log/samba/log.%m
   max log size = 1000

Danach Samba starten:

sudo systemctl enable smbd nmbd winbind
sudo systemctl start smbd nmbd winbind

Domäne beitreten

Unser Ubuntu-Server hat sich hübsch gemacht, wir können jetzt der Windows-Domäne beitreten.

sudo net ads join -U Frank

Du wirst nach Deinem AD-Kennwort gefragt:

Password for [BEISPIEL\Frank]:

Das Ergebnis sollte dann im besten Fall wie folgt aussehen:

Using short domain name -- BEISPIEL
Joined 'UBUNTU-SERVER' to dns domain 'beispiel.intranet'

Ein paar anschließende Tests:

  • Der folgende Befehl zeigt alle Benutzerkonten aus der angebundenen Domäne an:

    wbinfo -u
    
  • Der folgende Befehl zeigt alle Domänengruppen:

    wbinfo -g
    

Wenn beide Befehle funktionieren, ist die Active Directory-Integration erfolgreich abgeschlossen.

Ordner freigeben

Wir wollen jetzt einen Ordner /srv/test auf unserem Ubuntu-Server erstellen und für alle Domänenbenutzer im Netzwerk freigeben.

Tippe dazu nacheinander folgende Befehle ein:

sudo mkdir -p /srv/test
sudo chown root:"domänen-benutzer" /srv/test
sudo chmod 2770 /srv/test

Anschließend registrieren wir diesen Ordner in Samba:

sudo nano /etc/samba/smb.conf

Füge dort folgenden Abschnitt ein:

[test-ordner]
   path = /srv/test
   browseable = yes
   read only = no
   valid users = @"domänen-benutzer"
   create mask = 0660
   directory mask = 2770

Danach den Samba-Dienst wieder neu starten:

sudo systemctl restart smbd

Auf Ordner zugreifen

Jetzt kommt der große Moment: Wir wechseln auf unseren Windows-Rechner und versuchen den Ordner

\\test-server\test-ordner

im Windows-Explorer zu öffnen.

Im besten Fall erscheint er ohne zu meckern, und wir können dort Dateien reinkopieren, löschen und bearbeiten 😊

Troubleshooting

Mehrere Domänencontroller

In einem Windows-Netzwerk ist es nicht ungewöhnlich, mehr als einen Domänencontroller aus Gründen der Ausfallsicherheit laufen zu haben.

In diesem Fall macht es Sinn, auch die zusätzlichen DNS-Server in die /etc/resolv.conf einzutragen. Beispiel:

nameserver 192.0.2.1
nameserver 192.0.2.2
options edns0 trust-ad
search beispiel.intranet

Domänencontroller synchronisieren sich untereinander automatisch. Achte also darauf, dass nach Beitritt zur Windows-Domäne, Dein Ubuntu-Server als DNS-Eintrag in allen Domänencontrollern sichtbar ist.

Domäne wieder verlassen

Möchtest Du, dass Dein Ubuntu-Server die Windows-Domäne wieder verlassen soll, dann tippe folgendes ein:

 sudo net ads leave -U Frank
Das könnte dich auch interessieren:
  1. Firebird 4 unter Ubuntu-Server
  2. TLS unter Nginx absichern
  3. Standardbefehle unter Ubuntu-Server
  4. PostgreSQL 18 unter Ubuntu-Server
  5. OpenSSH absichern
Teile diesen Artikel