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,idoderwbinfoabgefragt 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