Unter Ubuntu-Linux einen Samba Domain Controller erstellen

Auch unter Linux ist es möglich, eine Samba Domäne zu erstellen und in dieser, Linux- wie auch Windows-Clients, zu verwalten. Wie das geht und wie man am besten vorgeht, zeige ich euch hier.

Die Befehle sind prinzipiell immer so aufgebaut, dass sie kopiert und eingefügt werden können. Wir arbeiten mit dem root User, somit brauchen wir sudo nicht, müssen jedoch sehr vorsichtig mit unseren Eingaben sein.

Grundsituation:

Zwei virtuelle Maschinen erstellen:

1) Ubuntu-Server20.04, keine GUI, Netzwerk DHCP, mit Open-SSH-Server, Servername: dc01, Domäne: ai.dom (diese erstellen wir hier neu).

2) Windows 10 Pro, Netzwerk DHCP, Hostname: win01

Wichtiger Hinweis: Damit die Domäne sauber funktioniert, ist es erforderlich, dass sowohl der Samba Domain Controller, als auch die Windows PCs eine saubere Zeit Synchronisation und eine funktionierende DNS Auflösung in beide Richtungen haben (von IP zum Hostnamen, als auch vom Hostnamen zur IP).

Konfiguration Ubuntu/Samba-DC

Bash öffnen (VM-Host/eigener Rechner, von dem gearbeitet werden soll):

Bitte hier selbstverständlich die IP und den User nutzen, die/den Ihr gewählt habt! In meinem Fall:

ssh ai@192.168.219.93 

Nachdem das geschafft ist, melden wir uns als root an:

sudo su
Ausgabe von sudo su

Zunächst müssen wir das System updaten:

apt update && apt upgrade -y && init 6

Nach dem Neustart verbinden wir uns erneut und melden uns wieder als root an:

ssh ai@192.168.219.93
sudo su

Jetzt installieren wir einige Basic-Tools:

apt install -y net-tools dnsutils 
Ausgabe von apt install -y net-tools dnsutils

Statische IP:

Die IP-Adresse sollte statisch konfiguriert sein. Bei Client und Server, jedoch vor allem bei unserem Server. Dafür müssen wir eine .yaml-Datei anpassen. Bitte die Angaben 1:1 kopieren.

Bei Fragen zur Syntax von .yaml Dateien: https://wiki.ubuntuusers.de/Netplan/

ip a s

→ Gibt uns Informationen über unser Netzwerk, welche die Angaben für unsere .yaml Datei teilweise ersetzen wird. Folgende Angaben müssen durch die eigenen Angaben ersetzt werden:

– Unser Netzwerk „ens160“ (Wird immer unterschiedlich benannt. Erste Info, linke Spalte bei ip a s)

– Unsere IP „192.168.219.93/24“ (Die IP vom Samba-DC)

– Auch das Gateway „192.168.219.1“ (Meist der Router)

– Zuletzt die DNS-Server „[192.168.219.93, 192.168.219.1, 1.1.1.1]“ (Meist der Router)

vim /etc/netplan/XXXXXX.yaml

→Einträge komplett löschen, durch die folgenden ersetzen und wie oben erklärt anpassen:

# This is the network config written by 'subiquity'
---
network:
  version: 2
  renderer: networkd
  ethernets:
    ens160:
      addresses:
        - 192.168.219.93/24
      dhcp4: "false"
      dhcp6: "false"
      gateway4: 192.168.219.1
      nameservers:
        addresses: [192.168.219.93, 192.168.219.1, 1.1.1.1]
Inhalt der Netplan-Datei

Änderungen übernehmen und überprüfen:

netplan apply
netplan --debug apply
Ausgabe von netplan --debug apply

Richtige Zeitzone setzen:

timedatectl set-timezone Europe/Berlin

timedatectl alleine zur Validierung nutzen:

Ausgabe von timedatectl

Einen spezifischen und eindeutigen Hostnamen festlegen (NICHT FQDN) :

hostnamectl set-hostname dc01

Die wichtigsten Hosts hier eintragen: (oder alternativ für eine saubere DNS Auflösung sorgen)

vim /etc/hosts

→ Obige Einträge löschen und durch eigene Angaben ersetzen, in meinem Fall:

127.0.0.1      	        localhost 
192.168.219.93 	dc01.ai.dom dc01

Neustart, um die Änderungen zu übernehmen:

reboot

Erneut verbinden:

ssh ai@192.168.219.93
sudo su

Status von Port 53(DNS) prüfen:

netstat -tlpn
Ausgabe von netstat -tlpn

Falls Port 53 von systemd-resolved belegt ist, wie folgt vorgehen:

mkdir /etc/systemd/resolved.conf.d/ 
vim /etc/systemd/resolved.conf.d/disable-stub-listener.conf

→ Hier folgendes eintragen:

[Resolve]
DNSStubListener=no

Wir entfernen die alte resolve.com und setzen den symbolischen Link erneut. Danach wird der Deamon neu gestartet:

rm /etc/resolv.conf 
ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl daemon-reload
systemctl restart systemd-resolved

Erneut mit netstat -tlpn überprüfen:

netstat -tlpn
Ausgabe netstat -tlpn im Vergleich zur vorherigen Ausgabe

Neustart, um die Änderungen zu übernehmen:

reboot

Erneut verbinden:

ssh ai@192.168.219.93
sudo su

Jetzt installieren wir Samba und Kerberos. Hier müssen wir einige Angaben für Kerberos machen:

apt -y install samba krb5-config winbind smbclient 

Hier konfigurieren wir den Domain Namen: AI.DOM

Kerberos Konfiguration Schritt 1

Der Kerberos Server ist der Domain Controller: dc01.ai.dom

Kerberos Konfiguration Schritt 2

Hier setzen wir für den Kerberos Server den Domain Controller ein: dc01.ai.dom

Kerberos Konfiguration Schritt 3

Nun erstellen wir ein Backup der Samba-Hauptkonfigurationsdatei:

mv /etc/samba/smb.conf /etc/samba/smb.conf.backup 

Die Provisionierung des Samba Active Directories:

Folgende Parameter werden in dem Dialog abgefragt:

  • REALM: Der REALM ist der vollständige Domänenname. Er wird auch als DNS-Domainname verwendet. In unserem Beispiel „AI.DOM“.
  • Domain: Ist der erste Teil des kompletten REALMs. In unserem Beispiel „AI“.
  • Server Role: Samba kann in ganz unterschiedlichen Modi laufen. In unserem Beispiel ist „dc“ anzugeben.
  • DNS backend: Samba4 beinhaltet einen eigenen DNS-Server. Es ist jedoch auch möglich Bind als DNS-Server zu verwenden. Im vorliegenden Fall wählt man „SAMBA_INTERNAL“.
  • DNS forwarder: Im späteren Betrieb wird der Samba Server als DNS-Server verwendet. Möchte man aber auch DNS-Namen außerhalb der Domäne auflösen, (wie z.B. www.google.de), so muss dem Samba Server gesagt werden, welchen anderen DNS-Server er verwenden soll, um diese Namen aufzulösen. Das ist der DNS-Forwarder. In unserem Beispiel wird der heimische Router = 192.168.219.1 angegeben.
  • Administrator Passwort: Mit diesem Passwort kann man später die Domäne verwalten. Das Passwort sollte sich aus Sicherheitsgründen von dem Passwort des Admin-Kontos des Ubuntu-Servers unterscheiden.
samba-tool domain provision 
Provision für die Samba-Domain

Hier erstellen wir die Domäne und vergeben das Domänen Admin Kennwort für den Benutzer Administrator.

Anschließend kopieren wir die Kerberos Konfigurationsdatei in das entsprechende Verzeichnis:

cp /var/lib/samba/private/krb5.conf /etc/ 

Jetzt wird der Samba-DC in Betrieb genommen und andere DNS-Dienste deaktiviert:

systemctl disable --now smbd nmbd winbind systemd-resolved
systemctl unmask samba-ad-dc
systemctl enable --now samba-ad-dc
Aktivierung des Samba-DC´s

Domain-Umgebung testen:

Nun testen wir einige Gegebenheiten der Umgebung, die zwangsläufig funktionieren sollten, um die Funktionalität zu gewährleisten:

samba-tool domain level show
Domain-Level Übersicht
netstat -tlpn
Ausgabe netstat -tlpn nach Domain aktivierung
hostname && hostname -f && hostname -d
Überprüfung des Hostnamens, des FQDN und der Domain

Nach erfolgreicher Erprobung legen wir einen Test-User in der Domain an:

samba-tool user create test
Erstellung eines Test-User´s für die Domain

Konfiguration des Windows-Hosts

win01 (Anmeldung mit Install-User):

Hostname ändern (falls noch nicht geschehen) auf win01, danach Neustart des Systems.

Änderung des Hostnamens

Host win01 in Domäne aufnehmen:

Domain-Join unter Windows

Hier wählen wir das Konto Administrator aus und das bei Punkt „samba-tool domain provision“ vergebene Admin Kennwort.

Wenn es hier zu Problemen kommt, sollte hier die DNS Auflösung und die Uhrzeit der beiden Systeme kontrolliert werden ( Windows Client als auch auf dem Samba Domain Controller ).

Anschließend nehmen wir den Rechner in die Domäne ai.dom auf:

Aufnehmen des PCs in die Domäne, Erfolgsmeldung

Nach der Meldung „Willkommen in der Domäne“ starten wir den PC nochmals neu.

Abschließend melden wir uns mit dem Test-User in der Domäne an:

Anmeldebildschirm

Wenn wir auch Sie beim Aufbau eines eigenen Domain Controllers oder dem Managed Hosting eines Domain Controllers unterstützen können, dann nehmen Sie gerne Kontakt auf.