Installation und Konfiguration eines Samba Active Directory Domain Controllers (AD DC) unter CentOS 8 / RHEL 8

Melden

Diese Anleitung führt Sie Schritt für Schritt durch die Einrichtung eines vollwertigen Active Directory Domain Controllers (AD DC) mittels Samba unter CentOS 8 bzw. Red Hat Enterprise Linux 8 (RHEL 8).


Voraussetzungen & Beispieldaten

Für dieses Tutorial nutzen wir folgende Beispiel-Netzwerkdaten (bitte an Ihre Umgebung anpassen):

  • Hostname: dc1
  • Domain Name (FQDN): dc1.corp.beispiel.local
  • AD Realm / Domain: CORP.BEISPIEL.LOCAL
  • NetBIOS-Name: CORP
  • Statische IP-Adresse: 192.168.1.10/24
  • DNS-Server: 192.168.1.10 (zeigt auf sich selbst) und ein Gateway/Upstream-DNS (z. B. 192.168.1.1)

Schritt 1: Netzwerk und Hostname konfigurieren

Ein Domain Controller benötigt zwingend eine statische IP-Adresse sowie einen vollständig qualifizierten Domänennamen (FQDN).

  1. Hostname setzen:

    hostnamectl set-hostname dc1.corp.beispiel.local
  2. /etc/hosts-Datei bearbeiten: Öffnen Sie die Datei /etc/hosts und stellen Sie sicher, dass der FQDN und die statische IP korrekt eingetragen sind.

    127.0.0.1   localhost localhost.localdomain
    192.168.1.10 dc1.corp.beispiel.local dc1
  3. Prüfen:

    hostname -f
    # Ausgabe sollte sein: dc1.corp.beispiel.local

Schritt 2: SELinux anpassen

Für den reibungslosen Betrieb eines Samba AD DC empfiehlt es sich, SELinux auf permissive zu setzen, da Standard-Richtlinien oft Konflikte mit den AD-Diensten verursachen.

setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Schritt 3: Repositories aktivieren und Samba installieren

Red Hat / CentOS 8 benötigt Zugriff auf die Standard-Paketquellen sowie PowerTools/CRB und EPEL.

  1. EPEL und PowerTools aktivieren:

    dnf install -y epel-release
    dnf config-manager --set-enabled powertools # Bei CentOS Stream / Rocky / Alma: crb
  2. Erforderliche Samba- und Kerberos-Pakete installieren: (Hinweis: RHEL liefert Samba in der Regel ohne integriertes AD DC Feature im Basis-Paket aus. Stellen Sie sicher, dass Samba mit AD-Unterstützung bereitgestellt wird, bzw. installieren Sie die Winbind- und DC-Komponenten).

    dnf install -y samba samba-winbind samba-winbind-clients krb5-workstation bind-utils chrony
  3. Zeitsynchronisation (Chrony) starten: Active Directory ist strikt auf synchrone Uhren angewiesen (Kerberos-Toleranz max. 5 Minuten).

    systemctl enable --now chronyd

Schritt 4: Samba AD DC provisionieren

Vor der Provisionierung muss die standardmäßige Konfigurationsdatei von Samba entfernt oder umbenannt werden.

  1. Bestehende smb.conf sichern:

    mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
  2. Domain provisionieren: Nutzen Sie das Werkzeug samba-tool. Der Parameter --interactive leitet Sie durch den Prozess:

    samba-tool domain provision --use-rfc2307 --interactive

    Abgefragte Werte eingeben:

    • Realm: CORP.BEISPIEL.LOCAL (Großbuchstaben beachten)
    • Domain: CORP
    • Server Role: dc
    • DNS Backend: SAMBA_INTERNAL (einfachste Variante für kleinere Setups)
    • DNS Forwarder IP: Die IP-Adresse Ihres Internet-Routers (z. B. 192.168.1.1 oder 8.8.8.8)
    • Administrator password: Vergeben Sie ein sicheres Kennwort (Groß-/Kleinbuchstaben, Zahlen, Sonderzeichen)

Schritt 5: Kerberos konfigurieren

Samba hat während der Provisionierung eine passende krb5.conf generiert. Diese muss in das Systemverzeichnis verlinkt werden.

  1. Standard-Kerberos-Datei sichern:

    mv /etc/krb5.conf /etc/krb5.conf.bak
  2. Samba-Kerberos-Datei verlinken:

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

Schritt 6: DNS-Auflösung anpassen

Der Server muss sich selbst als primären DNS-Server nutzen, um Active-Directory-Abfragen auflösen zu können.

Bearbeiten Sie die Datei /etc/resolv.conf:

search corp.beispiel.local
nameserver 127.0.0.1

(Optional: Sperren Sie die Datei mittels chattr +i /etc/resolv.conf, damit der NetworkManager sie nicht überschreibt, oder konfigurieren Sie den DNS-Server direkt im NetworkManager).


Schritt 7: Dienste konfigurieren und starten

Ein Domain Controller nutzt nicht die Standard-Dienste smb und nmb, sondern den zentralen Prozess samba.

  1. Standard-Dienste deaktivieren und maskieren:

    systemctl stop smb nmb winbind
    systemctl disable smb nmb winbind
    systemctl mask smb nmb winbind
  2. Samba AD DC Dienst aktivieren und starten:

    systemctl unmask samba
    systemctl enable --now samba

Schritt 8: Firewall konfigurieren

Ein Active Directory Domain Controller benötigt diverse offene Ports für LDAP, Kerberos, DNS und SMB.

Führen Sie folgende Befehle aus, um die Ports in der Firewall freizuschalten:

firewall-cmd --permanent --add-service={dns,ldap,ldaps,kerberos,kpasswd,samba}
firewall-cmd --permanent --add-port={389/udp,636/tcp,3268/tcp,3269/tcp,445/tcp,139/tcp,137-138/udp,88/udp,88/tcp,464/tcp,464/udp,53/tcp,53/udp}
firewall-cmd --reload

Schritt 9: Funktionstest durchführen

  1. DNS-Einträge testen: Prüfen Sie, ob die SRV-Einträge des AD aufgelöst werden können:

    host -t SRV _ldap._tcp.corp.beispiel.local.
    host -t SRV _kerberos._udp.corp.beispiel.local.
    host -t A dc1.corp.beispiel.local.

    Ergebnis: Alle Abfragen müssen eine Antwort mit den korrekten Namen und IPs liefern.

  2. Kerberos-Authentifizierung testen: Fordern Sie ein Kerberos-Ticket für das Administrator-Konto an:

    kinit administrator@CORP.BEISPIEL.LOCAL

    (Geben Sie das bei Schritt 4 vergebene Passwort ein. Bleibt die Ausgabe leer, war der Vorgang erfolgreich).

    Ticket anzeigen:

    klist
  3. Samba-Freigaben testen:

    smbclient -L localhost -U%

    Hier sollten die Verzeichnisse netlogon und sysvol aufgelistet sein.


Fazit

Ihr Samba Active Directory Domain Controller ist nun voll einsatzfähig. Sie können nun:

  • Windows-Clients oder Linux-Maschinen der Domäne corp.beispiel.local beitreten lassen.
  • Das Active Directory über die Microsoft RSAT-Tools (Remote Server Administration Tools) von einem Windows-Client aus verwalten.
  • Benutzer und Gruppen über den Befehl samba-tool user add direkt auf der Linux-Konsole anlegen.
0