Samba und AD-Domäne einrichten

Damit Samba als Active Directory-Domain Controller arbeiten kann, müssen wir diese Domäne jetzt erstellen und einrichten („provisionieren“).

samba-tool domain provision

Wir verwenden dazu für diese Anleitung folgende Daten:

Beispiel
Domänenname („Realm“)
ad.example.com
Windows-Domäne
AD
Serverrolle („Server Role“)
dc
DNS-Backend
BIND9_DLZ
Administrator-Paßwort
(Mindestens acht Zeichen, sowohl Groß- und Kleinbuchstaben als auch Zahlen)

Nach diesen Eingaben wird die Domäne provisioniert, alle Datenbanken und Netzfreigaben erzeugt und die DNS-Einträge aktualisiert. Das dauert einen kleinen Moment und sieht im Erfolgsfall etwa so aus:

Rot markiert sind hier noch die Hinweise auf zwei nötige, gleich folgende Konfigurationsanpassungen.

Kerberos-Konfiguration übernehmen

Falls schon eine eigene Kerberos-Konfiguration existiert, muß der Inhalt der von Samba erzeugten Konfigurationsdatei /usr/local/samba/private/krb5.conf bestehende /etc/krb5.conf integriert werden. Ansonsten kann die aktuellen Konfiguration gesichert und danach einfach ersetzt werden:

mv /etc/krb5.conf /usr/local/samba/private/krb5.conf.original
cp /usr/local/samba/private/krb5.conf /etc

Domäne in Bind integrieren und DNS-Dienst übernehmen

Zunächst muß in der Datei /usr/local/samba/private/named.conf die für unsere Bind-Version
9.9 zutreffende Konfiguration aktiviert und die andere auskommentiert werden:

  1. dlz "AD DNS Zone" {
  2.     # For BIND 9.8.0
  3.     # database "dlopen /usr/local/samba/lib/bind9/dlz_bind9.so";
  4.  
  5.     # For BIND 9.9.0
  6.     database "dlopen /usr/local/samba/lib/bind9/dlz_bind9_9.so";
  7. };

Anschließend wird diese Samba-Konfiguration in der Datei /usr/local/bind9/etc/named.conf eingebunden. Im folgenden Beispiel ist das die letzte Zeile:

  1. include "/etc/bind/named.conf.options";
  2. include "/etc/bind/named.conf.local";
  3. include "/etc/bind/named.conf.default-zones";
  4. include "/usr/local/samba/private/named.conf";

Warnung

Bind-Konfigurationsdateien sind sehr empfindlich, was falsche Schreibweisen angeht!

Optional: DNS-Weiterleitung

Um den Pi zu entlasten, können wir ihm einen Forwarder zur Verfügung stellen. Dazu kann ein öffentlicher DNS, der lokale Internetrouter und weitere Server in /usr/local/bind9/etc/named.conf.options ergänzt werden:

  1. options {
  2.  
  3.         // ... andere Optionen ...
  4.  
  5.         forward first;
  6.         forwarders {
  7.                 192.168.1.1; // Lokaler Router
  8.                 8.8.8.8; // Google oder ein beliebiger anderer
  9.                 // Beliebige weitere externe DNS-Server.
  10.                 // Jede Adresse muß mit einem Semikolon enden.
  11.         };
  12.         notify no;
  13. };

Wer statt Bind den eingebauten Samba-DNS nutzen will, kann bzw. muß stattdessen einen(!) Forwarder in der /usr/local/samba/etc/smb.conf eintragen:

  1. [global]
  2.     ; ...
  3.     ; andere Optionen
  4.     ; ...
  5.     dns forwarder = 192.168.1.1
  6.     allow dns updates = nonsecure and secure

x64-Support vorbereiten

Um später Druckertreiber auch für x64-Systeme hochladen zu können, müssen wir aufgrund von Windows-Konventionen einen x64-Server betreiben. Das ist der Pi zwar nicht, aber mit der folgenden Anpassung der /usr/local/samba/etc/smb.conf können wir ihn gegenüber Windows-Clients so tun lassen, als ob:

  1. [global]
  2.     ; ...
  3.     ; andere Optionen
  4.     ; ...
  5.     spoolss: architecture = Windows x64

Konfiguration prüfen

Nach einem Neustart beider Dienste ist es Zeit für ein paar Testkommandos:

service bind9custom restart
service samba4 start
host -t SRV _ldap._tcp.ad.example.com. localhost; host -t SRV _kerberos._udp.ad.example.com. localhost

Dabei sollte eine Antwort wie

Name: localhost
Address: 127.0.0.1#53
Aliases:

_ldap._tcp.ad.example.com has SRV record 0 100 389 raspberrypi.ad.example.com.
Name: localhost
Address: 127.0.0.1#53
Aliases:

_kerberos._udp.ad.example.com has SRV record 0 100 88 raspberrypi.ad.example.com.

herauskommen. Wenn das der Fall ist, kann unser Domain Controller die Rolle des lokalen Nameservers übernehmen.

DNS-Einstellungen/DHCP-Server umstellen

Sofern der Pi nicht bereits im lokalen Netz als Primärer DNS bekannt ist, wird das jetzt nachgeholt. Am einfachsten ist das mit DHCP, wo wir nur den DNS-Eintrag am DHCP-Server (bzw. in den DHCP-Optionen des Routers) anzupassen brauchen.

Wer kein DHCP nutzt, muß nun als DNS-Server-Adresse für jeden Computer im LAN die IP des Pi eintragen.

Als Suchdomäne (je nach System manchmal auch nur Domain o.ä.) wird, entweder am DHCP-Server oder an jedem Client einzeln, der Name unserer Domäne (hier: ad.example.com) eingetragen.

In beiden Fällen ist noch einmal ein Neustart fällig.

NTP testen

Spätestens jetzt sollte der NTP-Client, den wir zuvor bereits installiert haben, richtig funktionieren. Das läßt sich relativ einfach überprüfen:

ntpq -p

sollte etwas ähnliches wie dies ausgeben:

(Eine Liste mit verschiedenen Zeitservern, deren lokaler Zeit und weiteren Informationen.)

Kerberos testen

Zuletzt testen wir noch, ob Kerberos wie gewünscht funktioniert, denn ohne diesen Dienst würde der gesamte Controller niemals richtig arbeiten:

kinit administrator

Nach Eingabe des beim Provisionieren vergebenen Paßworts wird nun ein „Berechtigungsausweis“ („Ticket“) erstellt. Ob das funktioniert, überprüfen wir mit:

klist

Das Ergebnis sollte in etwa so aussehen:

Bei Erfolg wird eine Übersicht ausgegeben, in der mindestens das gerade durch kinit erzeugte Testticket zu sehen ist.

Admin-Privilegien vergeben

Zwei wichtige Rechte müssen jetzt noch an die Gruppe „Domain Admins“ vergeben werden. Der Namenspräfix AD wird dabei ggf. durch den tatsächlichen (Kurz-)Namen der Domäne ersetzt. Anschließend wird das Ergebnis kontrolliert:

net rpc rights grant 'AD\Domain Admins'\
  SePrintOperatorPrivilege SeDiskOperatorPrivilege\
  -Uadministrator
net rpc rights list accounts -Uadministrator

Als Paßwort dient wiederum das bei der Provisionierung erstellte. Bei Erfolg sieht das Ergebnis ungefähr so aus:

Bei Erfolg werden die neu erstellten Privilegien mit aufgelistet.