Samba AD Domain Controller

Sie möchten eine Active-Directory-Domäne betreiben, um die Möglichkeit zu haben, Benutzerkonten und PC-Zugriffe zu kontrollieren, wollen aber nicht die Kosten für die Lizenzierung eines vollen Windows-Servers bezahlen? Hier kommen Linux und Samba zur Hilfe.

Durch die Verwendung von Linux und Samba können Sie einen Domänencontroller einrichten, mit dem Sie Benutzerkonten, Gruppenrichtlinien und andere Active Directory-Funktionen erstellen können.

Diese Anleitung führt Sie durch den Prozess. Diese Anleitung wurde mit Debian Linux 9 („Stretch“) erstellt. Es wird davon ausgegangen, dass Sie eine neue, frische Installation haben, die darauf wartet, konfiguriert zu werden. Fangen wir an…

Installation

Netzwerk-Details

In dieser Anleitung werden folgende Beispielwerte verwendet. Passen Sie die Befehle jeweils an Ihre Gegebenheiten an

  • AD DC Hostname: DC01
  • AD DNS Name: example.local
  • NT4 Domain Name: example
  • IP Adresse: 10.0.0.2
  • Forwarder DNS: 10.0.0.1

Netzwerk-Konfiguration

Zuerst müssen wir sicherstellen, dass Ihr Server eine fixe (statische) IP-Adresse verwendet.
Aktualisieren Sie /etc/network/interfaces entsprechend:
(statt enp0s3 verwenden Sie das bei Ihnen aktive Interface)

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet static
        address 10.0.0.2
        netmask 255.255.255.0
        gateway 10.0.0.1
        dns-nameservers 10.0.0.2 10.0.0.1
        dns-search example.local

Wir müssen auch unsere /etc/resolv.conf aktualisieren

search example.local
nameserver 10.0.0.2
nameserver 10.0.0.1

Tragen Sie in der Datei /etc/hosts den Namen des Servers ein:

10.0.0.2        dc01.example.local        dc01

Starten Sie jetzt das System neu, damit die gemachten Änderungen wirksam werden.

System-Einrichtung

Nachdem wir nun die Netzwerkeinstellungen konfiguriert haben, können wir mit der Installation einiger Pakete beginnen.
Installieren Sie die folgenden Pakete:

apt-get install acl attr build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls28-dev libreadline-dev python-dev libpam0g-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev acl ntp ntpdate winbind net-tools git bind9

Während dieser Installation werden Sie aufgefordert, einige Servereinstellungen zu spezifizieren.
Beachten Sie, dass die Angaben in GROSSBUCHSTABEN erfolgen müssen.

REALM = EXAMPLE.LOCAL
HOSTNAME = DC01.EXAMPLE.LOCAL

Geben Sie das REALM oben auf dem ersten Bildschirm ein, dann den Hostnamen auf den nächsten beiden Bildschirmen. 

Jetzt müssen wir den NTP-Server so konfigurieren, dass die Zeit zwischen den Rechnern im Netzwerk aktualisiert und synchronisiert wird:

/etc/init.d/ntp stop
ntpdate -B 0.ch.pool.ntp.org
/etc/init.d/ntp start

Ersetzen Sie 0.ch.pool.ntp.org mit dem Ihnen nächstgelegenen Zeitserver. Sie können den geeignetsten Zeitserver auf  http://www.pool.ntp.org/de/ suchen.

Jetzt richten wir den DNS-Server bind9 für die Verwendung mit samba ein:

echo 'include "/var/lib/samba/private/named.conf";' >> /etc/bind/named.conf
Hinweis: Bei Debian 10 liegt die named.conf in  /var/lib/samba/bind-dns/named.conf
Danke an Burkhard Werner

Wenn die Systemkonfiguration abgeschlossen ist, starten Sie Ihr System neu.

Installation und Konfiguration von Samba

Wir installieren zwei Samba-Pakete:

apt-get install samba smbclient

Sobald Samba installiert ist, entfernen wir die alte Datei smb.conf, da bei der Konfiguration eine neue Datei erstellt wird.

mv /etc/samba/smb.conf /etc/samba/smb.conf.orig

Konfigurieren Sie nun Samba als Domain-Controller:

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

Übernehmen Sie jeweils die Default-Werte, ausser bei der Auswahl des DNS Backends – geben Sie dort  BIND9_DLZ  ein.
Setzen Sie ein sicheres Administrator-Passwort.

Jetzt konfigurieren wir Samba für die Verwendung des Kerberos-Authentifizierungsdiensts:

mv /etc/krb5.conf /etc/krb5.conf.orig
ln -sf /var/lib/samba/private/krb5.conf /etc/krb5.conf

Ergänzen Sie die Datei /etc/krb5.conf mit den folgenden Angaben:

[libdefaults]
    default = EXAMPLE.LOCAL
    dns_lookup_realm = false
    dns_lookup_kdc = true

[realms]
    EXAMPLE.LOCAL = {
        kdc = dc01.example.local:88
        default_domain = example.local
    }

[domain_realm]
    .example.local = EXAMPLE.LOCAL
    example.local = EXAMPLE.LOCAL

Bearbeiten Sie  /etc/samba/smb.conf

[global]
    ...
    ...
    # Fügen Sie unter [global] ein
    # Die IP-Adresse ist diejenige des Domain-Controllers
    dns forwarder = 10.0.0.2
    ...
    ...

Bearbeiten Sie /etc/network/interfaces und /etc/resolv.conf und ändern oder entfernen Sie DNS-bezogene Zeilen, welche auf Ihren Router oder externe DNS-Server zeigen. Es sollte nur auf die IP-Adresse Ihres Servers verwiesen werden.
Entfernen Sie jedoch nicht den gateway-Eintrag in /etc/network/interfaces welcher offensichtlich auf die IP-Adresse Ihres Routers zeigen sollte.

Konfigurieren Sie nun die zu startenden Samba-Dienste:

systemctl disable nmbd
systemctl disable smbd
systemctl stop nmbd
systemctl stop smbd
systemctl unmask samba-ad-dc
systemctl enable samba-ad-dc
systemctl start samba-ad-dc
systemctl restart bind9

Anschliessend starten Sie Ihren Server nochmals neu.

Testen des Samba Domain-Controllers

Sicherstellen, dass DNS aktualisiert ist:

samba_dnsupdate --verbose

Testen der DNS-Namensauflösung:

root@dc01:~# host -t A dc01.example.local
dc01.example.local has address 10.0.0.2
root@dc01:~# host -t SRV _ldap._tcp.example.local
_ldap._tcp.example.local has SRV record 0 100 389 dc01.example.local.

Der DNS kann Namen auflösen, also testen wir nun die Samba- und Kerberos-Logins.
Schreiben Sie den Domänen-Teil beim kinit-Befehl GROSS:

root@dc01:~# kinit administrator@EXAMPLE.LOCAL
Password for administrator@EXAMPLE.LOCAL:
Warning: Your password will expire in 41 days on Fri Jun 1 21:12:06 2018
root@dc01:~#

Samba und Kerberos erlauben Logins und antworten. Aber wie Sie sehen können, läuft das Passwort in 41 Tagen ab.
Dies wird zu Problemen mit Samba führen, so dass wir das Passwort Expire deaktivieren müssen – und während wir Änderungen vornehmen, werden wir auch gleich die Passwortkomplexität für neue Konten deaktivieren.

samba-tool domain passwordsettings set --complexity=off
samba-tool domain passwordsettings set --history-length=0
samba-tool domain passwordsettings set --min-pwd-age=0
samba-tool domain passwordsettings set --max-pwd-age=0
samba-tool user setexpiry Administrator --noexpiry

Samba wurde nun als Domain Controller installiert und Sie können jetzt Windows-Clients zu Ihrem Netzwerk hinzufügen.
Nachdem Sie Ihre Windows-Clients hinzugefügt haben, installieren Sie die Remote Server Administration Tools für Windows. Damit können Sie Ihre Domäne verwalten, um beispielsweise Benutzer hinzuzufügen oder Gruppenrichtlinien zu konfigurieren.

Weiterführende Informationen zur Linux-seitigen Verwaltung der Domäne mittels samba-tool finden Sie z.B. bei tecmint.com

 

 ➡  Thanks to Reddit User mckinnon81 for the original english guide