Samba/Active-Directory

Aus Foxwiki

TMP

== Samba4-Server als Active-Directory Domain-Controller =?

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Achtung!

Die Verwendung dieses Howto geschieht wie üblich auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.

Hinweis:

Diese Howto-Anleitung wurde zuletzt von luftpumpe am 28.03.2015 unter Xubuntu 14.04 erfolgreich getestet.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Installation von Programmen
  2. ⚓︎ Starten von Programmen
  3. ⚓︎ Ein Terminal öffnen
  4. ⚓︎ Root-Rechte
  5. ⚓︎ Samba (Übersichtsartikel)
  6. ⚓︎ Samba Server
  7. ⚓︎ Archiv/Kerberos
  8. ⚓︎ Dnsmasq


Inhaltsverzeichnis# Grundlagen

  1. Voraussetzungen
    1. Daten des Testkonfiguration
  2. Administrationstools
    1. samba-tool
    2. RSAT für Windows-Client
  3. Installation des 1. DCs
    1. Feste IP-Adresse einstellen
    2. NTP-Dienst einrichten
    3. Anpassung in der fstab
    4. Samba-Version überprüfen
    5. Samba installieren
    6. DNS-Service konfigurieren
    7. Samba-Server provisionieren
    8. Kerberos installieren
  4. Funktionstests des Servers
    1. Netzwerkports überprüfen
    2. Samba-Konfiguration überprüfen
    3. Alle Shares auflisten
    4. Authentifizierung testen
    5. DNS testen
    6. Kerberos testen
  5. Installation des 2. DCs
    1. Vorarbeiten und Tests
    2. Samba-Server provisionieren
    3. Test der Samba-Konfiguration
    4. Anpassen der DNS-Einstellung
    5. DNS-Einträge überprüfen
    6. Directory Replikation überprüfen
    7. manuelle Replikationstests
    8. SYSVOL-Replikation


Grundlagen

"Samba_Server/samba-logo.png"

Ab Samba Version 4.x kann man Samba im Microsoft-kompatiblen Modus "Active-Directory Domain-Controller" (kurz AD DC) laufen lassen. Dieser Artikel beschreibt die Grundinstallation von zwei Samba-Servern als DC für eine Windows Domäne. Zwei Server, um die Ausfallsicherheit der Domäne zu verbessern, und weil die Installation des zweiten (und weiterer) DCs anders verläuft als beim ersten DC. Natürlich funktioniert der Betrieb auch nur mit einem DC.

Die Installation basiert auf einem frisch installierten Xubuntu 14.04.02 LTS, benutzt nur offizielle Pakete aus dem Ubuntu-Repo und orientiert sich weitgehend am Artikel im offiziellen Samba-Wiki. Sie berücksichtigt aber die Besonderheiten bei Ubuntu.

Offizielles Samba-HowTo - https://wiki.samba.org/index.php/Samba_AD_DC_HOWTO 🇬🇧

Sämtliche Eingaben setzen voraus, dass man derzeit im root-Modus ist. ("sudo -s")

Hinweis:

WICHTIGER HINWEIS: Dieser Artikel ist nur für den erfahrenen Ubuntu-Benutzer geeignet, der weiß was ein Domaincontroller ist.

Voraussetzungen

  • Ubuntu 14.04 LTS
  • root-Rechte
  • Dateisystem ext4
  • feste IP-Adresse für die Server
  • dnsmasq deaktivieren
  • samba Version >= V4.1.6
  • optionale zweite Maschine für die Einrichtung eines zweiten Servers


Daten des Testkonfiguration

technische Parameter auf die in dieser Beispielinstallation Bezug genommen wird:

vergrößern

Name der Domäne: test.dom NETBIOS-Name der Domäne: TEST Hostname: dc1 IP-Adresse: 192.168.1.199 Gateway: 192.168.1.1 (ist auch gleichzeitig DNS-Server fürs Internet) Name des ersten Domain-Controllers: DC1 Samba-Admin: administrator

Hostname: dc2 IP-Adresse: 192.168.1.198 Gateway: 192.168.1.1 (ist auch gleichzeitig DNS-Server fürs Internet) Name des ersten Domain-Controllers: DC2 Samba-Admin: administrator

Administrationstools

samba-tool

Endlich gibt´s ein zentrales Boardmittel auf Kommandozeile um alle Funktionen eines Samba-Servers im Active-Directory-Modus zu administrieren.

Es wird bei der Installation von Samba mit installiert.

samba-tool --help

RSAT für Windows-Client

(falls vorhanden, und wenn von dort administriert werden soll)

Installiere RSAT (Remote Server Administration Tool) auf einem Windows-Client, siehe https://wiki.samba.org/index.php/Ins_AD_Management

Für die Administration sollte der Windows-Client in die spätere Samba-Domäne als Mitglied aufgenommen werden, und auch deren DNS-Server benutzen. HINWEIS: Dieser Artikel erklärt nicht die Administration von einem Windows-Client aus.

Installation des 1. DCs

Samba kann direkt aus den Quellen installiert werden. Es müssen keine fremden Quellen angezapft werden, es muss nichts compiliert werden.

Feste IP-Adresse einstellen

Es gibt wenig Sinn einen Domain-Controller mit einer dynamischen IP-Adresse zu betreiben. Deswegen muss man der Maschine erst eine feste manuelle Netzwerkkonfiguration geben. Dies kann über die graphische Oberfläche in den Netzwerkverbindungen angepasst werden. In unserem Beispiel sind es folgende Angaben:

Methode: manuell IPV4-Adresse: 192.168.1.199 Netzmaske: 255.255.255.0 Gateway: 192.168.1.1 DNS-Server: 192.168.1.1 (ist nur temporär, wird später noch geändert) Suchdomänen: bleibt erst mal leer

NTP-Dienst einrichten

Damit eine Domäne korrekt funktioniert, speziell Kerberos, wird auf allen Servern und Clients die gleiche "Zeit" benötigt. Deswegen wird mit der Installation eines NTP-Server auf dem späteren Domaincontroller begonnen.

siehe auch ntpd - https://wiki.samba.org/index.php/Timynchronisation

Installation von ntpd:

apt-get install ntp

(er wird dann auch automatisch gestartet)

ntp-Daemon testen: (jetzt muss der UDP-Port 123 offen sein; dies kann per "netstat -tulpn" gecheckt werden. Dort müssen Zeilen mit dem Text ":123" auftauchen.)

Eingabe zum überprüfen der ntp-Funktion:

ntpdate -q 127.0.0.1

korrekte Beispiel-Ausgabe:

server 127.0.0.1, stratum 3, offset 2.154217, delay 0.03343

Falls Probleme auftauchen, dann zur ersten Analyse folgendes mit einem öffentlichen NTP-Server testen:

ntpdate -u de.pool.ntp.org ntpdate -u 0.ubuntu.pool.ntp.org

Anpassung in der fstab

Parameter für die Root-Partition in der Datei /etc/fstab anpassen damit ACLs funktionieren:

nano /etc/fstab

hier eine Beispiel für die erforderlichen Parameter, Text hinter "ext4":

UUID=951801e7-c4bc-464b-9071-6f5b6d065c92 / ext4 user_xattr,acl,errors=remount-ro,barrier=1 0 1

Samba-Version überprüfen

Falls Samba schon installiert ist, kann mit folgenden Befehlen die Version überprüft werden:

samba -V smbclient -V

Samba installieren

(falls es noch fehlt)

apt-get install samba smbclient

Hinweis: Der Samba Server wird direkt nach der Installation direkt im Standalone-Modus gestartet. Deswegen den Samba Server erst mal wieder beenden mit folgenden Befehlen:

service smbd stop service nmbd stop service samba status

Und dann die vorhandene smb.conf sichern oder löschen:

mv /etc/samba/smb.conf /etc/samba/smb.conf.vorher

HINWEIS: Wenn man das nicht macht, scheitert später die korrekte Einrichtung des Domain-Controllers.

DNS-Service konfigurieren

Überprüfen ob Port 53 (DNS) schon belegt ist, und bei frei räumen.

netstat -tlpn

Unter anderem taucht dort folgende Zeile auf:

tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1241/dnsmasq

Daran sieht man, dass TCP-Port 53 durch die Anwendung "dnsmasq" belegt ist. Dies verhindert, dass der später intallierte Samba-Server korrekt starten kann, weil er auch den Port 53 belegen will.

Lösung: Ubuntu nutzt den "network-manager" für seine Netzwerkverbindungen. Dieser nutzt wiederrum "dnsmasq" (welcher Port 53 belegt) für die DNS-Namensauflösung des Computers.

dnsmasq kann man in der Datei "/etc/NetworkManager/NetworkManager.conf" deaktivieren:

nano /etc/NetworkManager/NetworkManager.conf

deswegen in der Datei folgende Zeile auskommentieren:

# dns=dnsmasq

Und danach den network manager neu starten und den alten dnsmasq killen, oder komplettes System neu booten:

/etc/init.d/networking restart killall dnsmasq

HINWEIS: Wenn man diesen Arbeitsschritt vergisst, dann kommt beim Start von Sambe folgender Fehlertext. (gut zu sehen wenn man Samba im interaktiven Modus gestartet hat "samba -i")

Failed to bind to 0.0.0.0:53 - NT_STATUS_ADDRESS_ALREADY_ASSOCIATED

WICHTIG: Sobald man dnsmasq deaktiviert hat, kann der PC keine DNS-Namen mehr auflösen, wenn man vergessen hat in den Netzwerkeinstellungen manuell einen DNS-Server (z.b. die IP seines Routers) einzurichten.

Samba-Server provisionieren

Jetzt kann mit der sogenannten Provisionierung des Domaincontrollers begonnen werden. Dies ist die Erstellung der Active-Directory Domäne. Bei Windows-Servern bekannt als "dcpromo".

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

Hinweise:* Parameter "-use-rfc2307" für NIS-Servcie (yellowpages) inkl. Schemaerweiterung im AD. Wird nicht zwingend benötigt, aber später eventl. hilfreich für Linux-Clients. siehe auch: https://wiki.samba.org/index.php/Usitive_Directory

  • Parameter "-use-ntvfs" für Ext4-Dateisysteme angeben, weil ohne Angabe des Parameters sonst ein Fehler kommt


Folgende Parameter werden dann im interaktiven Dialog abgefragt:* REALM: Der REALM ist der vollständige Domänenname, er wird auch auch als DNS-Domainname verwendet. Wie im Internet sind die einzelen Wörter durch einen Punkt getrennt. In unserem Beispiel lautet der REALM "test.dom"

  • Domain: Ist quasi die Kurzform des Domänennamens ohne Punkte und wird für NetBIOS benötigt. Deswegen wird der Parameter auch NETBIOS-Name genannt. Dies ist sinnvollerweise der erste Teil des kompletten REALMs. In unserem Beispiel lautet der NETBIOS-Name "test"
  • Server Role: Samba kann in ganz unterschiedlichen Modi laufen. In unserem Beispiel ist "dc" anzugeben.
  • DNS backend: Wer soll die Namensauflösung für den Samba-Server machen. Samba4 beinhaltet auch einen eigenen DNS-Server. Für den bestmöglichen Betrieb der Samba-Domäne ist genau dieser zu verwenden! Somit hier "SAMBA_INTERNAL" bestätigen.
  • DNS forwarder: Im späteren Betrieb sollten alle Clients der Domäne den/die Samba Server als DNS-Server verwenden. Sollen aber auch DNS-Namen außerhalb der Domäne aufgelöst werden (z.B. Internet DNS-Namen), so muss dem DNS-Server im 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.1.1 angegeben. Er wiederum löst die DNS-Namen über den DNS-Server des Providers auf.
  • Administrator passwort: Dies ist der mächtigste Account in der Windows-Domäne. Danmit kann man später die Domäne verwalten. HINWEIS: Das Passwort muss der Passwort-Policy entsprechen, 3 aus 4 Komponenten (Kleinschrift, Großschrift, Ziffern, Sonderzeichen)


Erfolgreiche Beispiel-Ausgabe:

vergrößern

Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=test,DC=dom Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups Setting up self join Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=test,DC=dom Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /var/lib/samba/private/krb5.conf Setting up fake yp server settings Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: VM1 NetBIOS Domain: TEST DNS Domain: test.dom DOMAIN SID: S-1-5-21-4250222487-2521097371-810615148

Tipp: Wenn irgendwas schief geht, dann kann man die /etc/samba/smb.conf löschen, und neu versuchen:

rm /etc/samba/smb.conf

Samba-Server versuchen interaktiv zu starten: (kann man mit Strg-c abbrechen)

samba -i

Dies sollte mit keiner besonderen Fehlermeldung abbrechen. Wenn die Routine nicht abbricht, ist dies ein gutes Zeichen. Dann manuell abbrechen.

Kerberos installieren

dazu fehlt noch ein Instalations-Paket, nachinstallieren:

apt-get install krb5-user

Erforderliche Parameter-Eingaben:

Kerberos-Realm: TEST.DOM Kerberos-Server für Ihren Realm: localhost Administrations-Server für IhrenKerberos-Realm: localhost

HINWEIS: Jetzt ist ein guter Zeitpunkt um den Server neu zu booten!

Funktionstests des Servers

Netzwerkports überprüfen

Wenn Samba korrekt läuft, sollten etliche zusätzliche Netzwerkports belegt sein. "netstat -tlpen" sollte folgende Ausgabe bringen (im Beispiel ist IPV6 deaktiviert):

vergrößern

root@DC1:~# netstat -tlpen Aktive Internetverbindungen (Nur Server) Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name tcp 0 0 0.0.0.0:3268 0.0.0.0:* LISTEN 0 28962 5394/samba tcp 0 0 0.0.0.0:3269 0.0.0.0:* LISTEN 0 28963 5394/samba tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 0 28960 5394/samba tcp 0 0 0.0.0.0:135 0.0.0.0:* LISTEN 0 28932 5391/samba tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 0 28936 5403/samba tcp 0 0 0.0.0.0:464 0.0.0.0:* LISTEN 0 28919 5396/samba tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 0 28947 5402/samba tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 0 8369 463/cupsd tcp 0 0 0.0.0.0:88 0.0.0.0:* LISTEN 0 28917 5396/samba tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN 0 28961 5394/samba tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 0 28935 5403/samba tcp 0 0 0.0.0.0:1024 0.0.0.0:* LISTEN 0 28926 5391/samba

Aufgaben der Netzwerk-Ports, siehe auch https://wiki.samba.org/index.php/Samba_port_usage * 53 - DNS

  • 88 - Kerberos
  • 135 - End Point Mapper (DCE/RPC Locator Service)
  • 139 - NetBIOS Session
  • 389 - LDAP
  • 445 - SMB over TCP / CIFS
  • 464 - Kerberos Passwort
  • 636 - LDAPS (only if "tls enabled = yes")
  • 1024-5000 dynamische RPC-Ports
  • 3268 - globaler Katalog
  • 3269 - globaler Katalog SSL


Samba-Konfiguration überprüfen

Ausgabe dieses Befehls überprüfen (ersetzt das klassische "testparm", bitte dieses nicht mehr benutzen)

samba-tool testparm

Beispielausgabe:

vergrößern

Press enter to see a dump of your service definitions (Return drücken)

# Global parameters [global]

       workgroup = TEST
       realm = TEST.DOM
       netbios name = DC1
       server role = active directory domain controller
       dns forwarder = 192.168.1.1
       server services = rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, dns, smb
       dcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc, spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver, winreg, srvsvc
       idmap_ldb:use rfc2307 = yes

[netlogon]

       path = /var/lib/samba/sysvol/test.dom/scripts
       read only = No

[sysvol]

       path = /var/lib/samba/sysvol
       read only = No

WICHTIG: Die Zeile "dns forwarder" muss vorhanden sein, sonst scheitert die Namensauflösung für Internet-Domains, und man kann keine Pakete mehr installieren!

Alle Shares auflisten

smbclient -L localhost -U%

Jetzt sollten die drei Shares netlogon, sysvol und IPC$ angezeigt werden.

Authentifizierung testen

smbclient //localhost/netlogon -UAdministrator -c 'ls'

Hier muss man das Passwort des Domänen-Administrators eingeben. Die Ausgabe sollte keine Fehlermeldung enthalten.

DNS testen

Dazu muss man jetzt zuvor die DNS-Einstellung des Network-Managers in der graphischen Oberfläche des Rechners geändert werden. Passende Netzwerkschnittstelle auswählen. Dort IPv4-Einstellungen, Feld DNS-Server, und folgendes eintragen:

nameserver 127.0.0.1

Wenn der DNS-Server richtig eingestellt ist, muss ein Ping auf den REALM funktionieren:

ping test.dom

Eingabe:

host -t SRV _ldap._tcp.test.dom

Ausgabe:

_ldap._tcp.test.dom has SRV record 0 100 389 dc1.test.dom.

Eingabe:

host -t SRV _kerberos._udp.test.dom

Ausgabe:

_kerberos._udp.test.dom has SRV record 0 100 88 dc1.test.dom.

Eingabe:

host -t A test.dom

Ausgabe:

test.dom has address 192.168.1.199

Eingabe:

host -t A dc1.test.dom

Ausgabe:

dc1.test.dom has address 192.168.1.199

Falls hier Fehler kommen, dann bitte das systemlog überprüfen.

Kerberos testen

Eingabe:

kinit administrator

erfolgreiche Ausgabe:

Password for administrator@TEST.DOM: Warning: Your password will expire in 41 days on Fr 24 Apr 2015 20:31:30 CEST

Eingabe um eigene Kerberos-Tickets zu überprüfen:

klist

erfolgreiche Ausgabe:

Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@TEST.DOM

Valid starting Expires Service principal 14.03.2015 09:23:12 14.03.2015 19:23:12 krbtgt/TEST.DOM@TEST.DOM

       renew until 15.03.2015 09:23:08

Wenn all diese Tests erfolgreich ausgegangen sind, dann läuft der erste Domaincontroller korrekt.

Installation des 2. DCs

Die Installation des zweiten DCs geht genauso wie beim ersten DC. Bis zum Punkt der Provisionierung des Samba-Servers - ab da wird anders, dies beschreibt dieser Abschnitt.

Vorarbeiten und Tests

WICHTIG: Für diesen Schritt muss der erste Domaincontroller laufen und netzwerktechnisch erreichbar sein.

DNS-Server anpassen:

Der zweite DC muss die Domäne namenstechnisch auflösen können. Deswegen muss zuerst der DNS-Server über die graphische Oberfläche via Network-Manager angepasst werden. Passende Netzwerkschnittstelle auswählen. Dort IPv4-Einstellungen, Feld DNS-Server, und folgendes eintragen: Man muss im Feld DNS-Server die DNS-IP-Adresse des ersten Samba-Servers eintragen. In unserem Beispiel:

192.168.1.199

DNS-Auflösung testen:

Die folgenden zwei Befehle dürfen keine Fehler ausgeben:

ping test.dom ping dc1.test.dom nslookup test.dom <ipadresse des ersten servers>

Samba-Server provisionieren

siehe auch https://wiki.samba.org/index.php/Samdomain_as_a_DC

samba-tool domain join test.dom DC --username=administrator --use-ntvfs

Beispiel-Ausgabe:

vergrößern

Finding a writeable DC for domain 'test.dom' Found DC dc1.test.dom Password for [TEST\administrator]: (Bemerkung: hier muss Passwort vom ersten DC eingetragen werden) workgroup is TEST realm is test.dom checking sAMAccountName Adding CN=DC2,OU=Domain Controllers,DC=test,DC=dom Adding CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=dom Adding CN=NTDS Settings,CN=DC2,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=test,DC=dom Adding SPNs to CN=DC2,OU=Domain Controllers,DC=test,DC=dom Setting account password for DC2$ Enabling account Calling bare provision No IPv6 address will be assigned Provision OK for domain DN DC=test,DC=dom Starting replication Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[402/1550] linked_values[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[804/1550] linked_values[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[1206/1550] linked_values[0/0] Schema-DN[CN=Schema,CN=Configuration,DC=test,DC=dom] objects[1550/1550] linked_values[0/0] Analyze and apply schema objects Partition[CN=Configuration,DC=test,DC=dom] objects[402/1620] linked_values[0/0] Partition[CN=Configuration,DC=test,DC=dom] objects[804/1620] linked_values[0/0] Partition[CN=Configuration,DC=test,DC=dom] objects[1206/1620] linked_values[0/0] Partition[CN=Configuration,DC=test,DC=dom] objects[1608/1620] linked_values[0/0] Partition[CN=Configuration,DC=test,DC=dom] objects[1620/1620] linked_values[28/0] Replicating critical objects from the base DN of the domain Partition[DC=test,DC=dom] objects[97/97] linked_values[23/0] Partition[DC=test,DC=dom] objects[365/268] linked_values[23/0] Done with always replicated NC (base, config, schema) Replicating DC=DomainDnsZones,DC=test,DC=dom Partition[DC=DomainDnsZones,DC=test,DC=dom] objects[41/41] linked_values[0/0] Replicating DC=ForestDnsZones,DC=test,DC=dom Partition[DC=ForestDnsZones,DC=test,DC=dom] objects[18/18] linked_values[0/0] Partition[DC=ForestDnsZones,DC=test,DC=dom] objects[36/18] linked_values[0/0] Committing SAM database Sending DsReplicateUpdateRefs for all the replicated partitions Setting isSynchronized and dsServiceName Setting up secrets database Joined domain TEST (SID S-1-5-21-2617678509-903244012-2886946009) as a DC

Damit ist dann der zweite DC grundsätzlich der Domäne beigetreten.

Test der Samba-Konfiguration

Wenn die Provisionierung korrekt verlaufen ist, sollte man die Konfig testen. Im Prinzip stehen in der "/etc/samba/smb.conf" die gleichen Inhalte wie im ersten DC drin, bis auf die Zeile "netbios name" des Servers.

Eingabe zum überprüfen:

samba-tool testparm

WICHTIG: Vergleiche die Ausgabe beider DCs, oder vergleiche die Inhalte der jeweiligen "/etc/samba/smb.conf". Wenn hier was fehlt, dann läuft der zweite DC nicht korrekt!!!

Anpassen der DNS-Einstellung

Die beiden Domaincontroller sollten sich gegenseitig als primären DNS-Server eingetragen haben, und als sekundären Server sich selbst. Dazu muss man jetzt die DNS-Einstellung des Network-Managers in der graphischen Oberfläche beider Server ändern. Passende Netzwerkschnittstelle auswählen. Dort IPv4-Einstellungen, Feld DNS-Server, und folgendes eintragen:

Desweiteren gibt es Sinn die Suchdomäne auf "test.dom" anzupassen. Denn damit muss man dann zur Erreichbarkeit anderer Maschinen in der Domäne nicht immer den vollqualifizierten Namen (Beispiel: client23.test.dom) angeben, sondern es langt der Hostname (Beispiel: client23) zur Namensauflösung. Dies sollte über die graphische Oberfläche beider DCs angepasst werden. Nach Reboot beider Server sollten in der "resolv.conf" folgende Inhalte drin stehen:

passende Einstellung für DC2:

nameserver 192.168.1.199 # Bemerkung: IP des ersten DCs nameserver 127.0.0.1 search test.dom

passende Einstellung für DC1:


nameserver 192.168.1.198 # Bemerkung: IP des zweiten DCs nameserver 127.0.0.1 search test.dom

DNS-Einträge überprüfen

Die IP und DNS-Konfiguration jedes DNS-Severs ist mit folgendem Befehl anzeigbar:

nm-tool

Beispielausgabe:

vergrößern

NetworkManager Tool

State: connected (global)

- Device: eth0 [Kabelnetzwerkverbindung 1] ------------------------------------

 Type:              Wired
 Driver:            r8169
 State:             connected
 Default:           yes
 HW Address:        70:81:AC:AD:53:00
 Capabilities:
   Carrier Detect:  yes
   Speed:           1000 Mb/s
 Wired Properties
   Carrier:         on
 IPv4 Settings:
   Address:         192.168.1.199
   Prefix:          24 (255.255.255.0)
   Gateway:         192.168.1.1
   DNS:             192.168.1.198, 127.0.0.1

Die einzelnen DC-Einträge kann man für die DNS-Server getrennt so überprüfen:

dig dc1 @192.168.1.199 dig dc1 @192.168.1.198 dig dc1.test.dom @192.168.1.199 dig dc1.test.dom @192.168.1.198

In der Beispielausgabe müssen unter anderem folgende Zeilen erscheinen, und auf jeden Fall hinter dem "A" die richtige IP-Adresse stehen:

;; ANSWER SECTION: dc1. 9 IN A 192.168.1.199 oder dc1.test.dom 900 IN A 192.168.1.199

Das gleiche muss man auch für den "DC2"-Eintrag testen:

dig dc2 @192.168.1.199 dig dc2 @192.168.1.198 dig dc2.test.dom @192.168.1.199 dig dc2.test.dom @192.168.1.198

Auch dort sollten in den Ausgaben alle 4 Tests folgende Zeilen beinhalten, auf jeden Fall muss hinter dem "A" die richtige IP-Adresse stehen:

;; ANSWER SECTION: dc2. 9 IN A 192.168.1.198 oder dc2.test.dom 900 IN A 192.168.1.198

Wenn die Namen nicht korrekt aufgelöst werden, kann es ein Fehler in der DNS-Config sein, oder es kann dieser Bug hier sein:

https://wiki.samba.org/index.php/Chees_on_DC_joins 🇬🇧

Dann müssen die DNS-Einträge manuell im DNS angelegt werden.

Directory Replikation überprüfen

Die Directory-Replikation synchronisiert ständig alle Inhalte des Active Directory (User, Gruppen, Computerobjekte, sowie Passwortänderungen) zwischen den Domain-Controllern. Siehe auch https://wiki.samba.org/index.php/Samry_replication

Wenige Minuten nach Start des zweiten DCs beginnt die Directory Replikation automatisch. Geduldig sein!

Befehl zum Überrüfen der Replikation:

samba-tool drs showrepl

Hinweis zur Warnung: "Warning: No NC replicated for Connection!“ in der letzten Zeile. Diese Meldung kann ignoriert werden.

Ansonsten sollte kein Fehler ersichtlich sein.

Falls die Replikation auch nach Minuten noch nicht beginnt, so kann man sie auch manuell anwerfen:

samba-tool drs replicate DC1 DC2 dc=test,dc=dom

Ausgabe:

Replicate from DC2 to DC1 was successful.

Bemerkung:

Wenn die Replikation nicht klappt, ist es sehr wahrscheinlich ein DNS-Problem.

Dann kommt vermutlich dieser Fehler: "DsReplicaSync failed" (8440, 'WERR_DS_DRA_BAD_NC')

manuelle Replikationstests

Einfach ein User-Objekt auf dem einen DC anlegen, und danach schauen, ob es weniges Sekunden später auf dem anderen DC angekommen ist. Entweder mit dem samba-tool, oder mit der Windows Active-Directory User & Gruppen-Verwaltung (RSAT)

Beispieleingabe am ersten DC: (Passwort für User muss 3 aus 4 Komponenten enthalten)

samba-tool user add testuser555

Ausgabe:

User 'testuser555' created successfully

Überprüfen nach wenigen Sekunden am zweiten DC:

samba-tool user list

In der Ausgabe muss dann unter anderem der neue Useraccount angezeigt werden.

SYSVOL-Replikation

Dies geschieht derzeit noch nicht automatisch!

Wenn man eine Änderung in den Logonscripten oder den GPOs vorgenommen hat, so muss man SYSVOL manuell synchronisieren. Oder man muss sich eine rsync-Routine bauen, welche die Replikation ab nimmt.

Details hier: https://wiki.samba.org/index.php/Sysol_Replication 🇬🇧

https://wiki.ubuntuusers.de/Archiv/Howto/Samba4-Server_als_Active-Directory_Domain-Controller/

Tipps

Hinweis:

Dieses Howto wurde von Bournless erstellt. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich gegebenenfalls zusätzlich an den/die Verfasser des Howtos.

Ziel

Dieses Howto beschreibt einige zusätzliche Hinweise, Ergänzungen und Tipps, wenn man zuvor einen Domaincontroller (DC), gemäß dem Howto Samba-AD-Server_unter_Ubuntu_20.04_installieren erfolgreich installiert hat und wendet sich primär an weniger erfahrene, aber dennoch interessierte User, die auch stationäre Ubuntu PCs (ab der Desktop-Version 20.04) in die Domäne aufnehmen möchten.

Die Ubuntu-Serverversionen werden in diesem Howto nicht berücksichtigt, da sie auf unterschiedliche Vorgehensweisen an die Domäne gebunden werden können!

Hinweis:

Zum leichteren Verständins werden alle Vorgaben (Bezeichnungen, Realm und IP-Adressen) aus dem oben genannten Howto benutzt.

AD-Benutzerkonten (Samba-Tool)

Nach Abschluss der Installation des neuen Domaincontrollers (adc01) existiert im Active Directory nur ein aktiviertes Benutzerkonto - das Konto vom Administrator. Um nun Standard-Benutzerkonten im AD anzulegen, benutzt man in der Regel die Remoteserver-Verwaltungstools (RSAT), die aber einen Windows PC in der Domäne voraussetzen. Wer diesen aber nicht bereitstellen kann oder möchte, kann als Alternative die samba-tools nutzen, die bereits auf dem Domaincontroller vorhanden sind.

Eine ausführliche Beschreibung findet man in der entsprechenden Manpage:

sudo samba-tool -h

AD-Benutzerkonto erstellen

sudo samba-tool user create peterp Hugo#0815 --given-name=Peter --surname=Pan

erstellt ein AD-Benutzerkonto für Peter Pan mit dem Benutzeranmeldename (loginname) peterp und dem Passwort Hugo#0815 in der OU Users.

AD-Benutzerkonten anzeigen

sudo samba-tool user list

zeigt eine kurze Übersicht aller AD-Benutzerkonten an.

AD-Benutzerkonten-Details

sudo samba-tool user show peterp

zeigt alle Details zum AD-Benutzerkonto von Peter Pan an.

Gateway und DNS

Die diesbezüglichen notwendigen Einstellungen auf den Clients werden in diesem Howto manuell erfolgen, da* auf dem DC (adc01) gewollt kein DHCP-Server installiert wurde.

  • die meisten DHCP-Server auf den s.g. SOHO-Routern (z.B. Fritz!Box) nur eine IP-Adresse für lokale DNS-Server vergeben können.


Ubuntu (neuer PC)

Ein neu zu installierender stationärer kabelgebundener PC (Ubuntu-Desktop ab der Version 20.04.4) wird zunächst per "Ubuntu ausprobieren" gestartet, um im NetworkManager im TAB IPv4 manuell eine gewünschte IP (10.10.20.x), die Subnetzmaske (24) und die IP des Gateways (10.10.20.1) eintragen zu können. Um den DC (adc01) als primären lokalen DNS-Server einzutragen wird im Abschnitt DNS der Schalter "Automatisch" auf deaktiviert gestellt und im darunter liegenden Feld die IP des DCs (10.10.20.220) zuerst genannt. Damit der Client auch bei einem Ausfall oder Nichterreichbarkeit des DCs weiterhin mit dem Internet kommunizieren kann, kann hier zusätzlich die IP des Gateway (10.10.20.1) eingetragen werden, da er über eine DNS-Forwarder-Adresse (einen öffentlichen DNS-Server) verfügt.

Beispiel:

10.10.20.220,10.10.20.1

Jetzt ist sichergestellt, dass der neue Client-PC den DNS-Server des AD-DC zuerst benutzt und gleichzeitig über eine funktionsfähige Internetverbindung verfügt.

Ubuntu (vorhandener PC)

Zuerst muss dafür gesorgt werden, dass auf dem vorhandenen stationären PC die bereits schon installierte Ubuntu-Desktop Version 20.04.x der Version 20.04.4 entspricht. Dazu wird der Befehl

sudo apt update && sudo apt upgrade

ausgeführt.

Nun wird die IP des Client-PC im NetworkManager im TAB IPv4 (10.10.20.x) manuell vergeben, die Subnetzmaske (24) und die IP des Gatways (10.10.20.1) eingetragen. Um den DC (adc01) als primären lokalen DNS-Server einzutragen wird im Abschnitt DNS der Schalter "Automatisch" auf deaktiviert gestellt und im darunter liegenden Feld die IP des DCs (10.10.20.220) zuerst genannt. Damit der Client auch bei einem Ausfall oder Nichterreichbarkeit des DCs weiterhin mit dem Internet kommunizieren kann, kann hier zusätzlich die IP des Gateway (10.10.20.1) eingetragen werden, da er über eine DNS-Forwarder-Adresse (einen öffentlichen DNS-Server) verfügt.

Beispiel:

10.10.20.220,10.10.20.1

Mobile Geräte

Hinweis:

Eine Konfiguration für mobile Geräte (z.B. Notebooks oder Subnetbooks), die auch mal das heimiche LAN verlassen ist zwar möglich, sprengen aber den Umfang dieses Howtos.

Zeitserver

Eine gesonderte Konfiguration ist auf den stationären Ubuntu-Desktop Clients nicht zwingend notwendig, da diese nun stets einen öffentlichen Zeitserver erreichen können. Allerdings ist es auch möglich, den Zeitserver des lokalen Domaincontrollers als primären Zeitserver zu hinterlegen, was unkomliziert per per timesyncd möglich ist.

GptTmpl.inf

Ohne die bisher fehlende Datei GptTmpl.inf kann ein neu zu installierender Ubuntu-Desktop PC ab der Version 20.04.x zwar schon während des Installationsvorgangs der Domäne beitreten, jedoch wird jeglicher Versuch, sich anschließend mit einem AD-Benutzerkonto anzumelden, nach Eingabe des (korrekten) Passwortes mit einer Fehlermeldung abgelehnt. Grund: Die bisherigen Versionen von SSSD (bis zur Version 2.7+) erwarten u.A. die Existenz der Datei GptTmpl.inf

GptTmpl.inf erstellen

Zur Erstellung der fehlenden .inf Datei meldet man sich auf dem DC (adc01) als Systemverwalter an, um anschließend folgende Befehle auszuführen:

sudo -i cd /var/lib/samba/sysvol/*/Policies/{31*/MACHINE mkdir -p Microsoft/"Windows NT"/SecEdit cd Microsoft/Windows\ NT/SecEdit nano GptTmpl.inf

Die nun neu erstellte Datei bekommt folgenden Inhalt:

[Unicode] Unicode=yes [Version] signature="$CHICAGO$" Revision=1

Diese Datei abschließend speichern und schließen.

Mit dem Befehl

exit

sollte der "Superuser-Modus" nun wieder verlassen werden.

AD-Join (neuer PC)

Nachdem die Datei GptTmpl.if erfolgreich erstellt wurde, kann ein neu zu installierender Ubuntu-Desktop PC (ab der Version 20.04.4) schon während des Installationsvorgangs im AD registriert werden, um nach dem Abschluss der Installation sofort die bereits vorhandenen AD-Benutzerkonten zur Anmeldung nutzen zu können. Dazu aktiviert man während des Installationsvorgang den Punkt "Use Active Directory" und trägt bei "Domain" den Namen der Domäne (heim.lan), bei "Domain Administrator" Administrator und bei "Kennwort" das im Howto bereits vergebene Password ein. (ACHTUNG: Hier ist nicht das Passwort vom Systemverwalter gemeint!)

AD-Join (vorhandener PC)

Um Vergleichbares auf einem bereits vorhandenen PC (Ubuntu-Desktop ab Version 20.04.4) zu erreichen, sind folgende Befehle notwendig:

sudo apt update && sudo apt upgrade sudo apt install sssd-ad sssd-tools realmd adcli sudo pam-auth-update --enable mkhomedir sudo realm join heim.lan

Damit ist der PC der Domäne (heim.lan) beigetreten und man kann sich mit den vorhandenen AD-Benutzerkonten an der Domäne anmelden.

Ausnahme

Bei Ubuntu-Desktop Versionen, welche nicht von Beginn an nicht mindestens eine Version 20.04.4 waren, bedarf es leider etwas Nacharbeit an der Datei sssd.conf, da sonst die Anmeldung von AD-Benutzerkonten nicht ordnungsgemäß funktioniert - weder im Terminal noch im Anmeldebildschirm.

Hinweis:

Eine bereits vorkonfigurierte Datei sssd.conf wird erst erzeugt, wenn der Join-Befehl erfolgreich ausgeführt wurde.

sudoedit /etc/sssd/sssd.conf

Im Abschnitt [domain/heim.lan] als letzte Zeile den Eintrag

ad_gpo_access_control = permissive

hinzufügen. Diese Datei abschließend speichern und schließen.

Nun werden noch noch die Befehle

sudo sss_cache -UG sudo systemctl restart sssd

ausgeführt und der bisherige Benutzer (Systemverwalter) ausgeloggt. Alternativ kann man den PC auch einfach rebooten lassen.

AD-Login

Login im Terminal

Hinweis:

Im Gegensatz zum Anmelden im Anmeldebilschirm (Login Screen) ist das Anmelden mit einem AD-Benutzerkonto in einem Terminal nur möglich, wenn der aktuell am System angemeldete Benutzer Befehle mit root-Rechten ausführen kann und wird danach nicht im Anmeldebildschirm gelistet!

Im folgenden Beispiel ist der Benutzer ich ein Systemveralter auf u2004-13

ich@u2004-13:~/Schreibtisch$ sudo login [sudo] Passwort für ich:

Zunächst wird wie gewohnt das Passwort des Systemverwalters abgefragt. Nach der erfolgreichen Anmeldung einscheint nun ein neuer Login-Prompt.

u2004-13 Login: peterp@heim.lan Passwort:

Erst hier wird das AD-Benutzerkonto in UPN-Schreibweise und dessen Passwort eingegeben.

Login im Anmeldebildschirm

Im Anmeldebildschirm (Login Screen) auf "Nicht aufgeführt?" klicken und mit einem AD-Konto in UPN-Schreibweise anmelden.

Beispiel:

Benutzer: peterp@heim.lan Passwort: Hugo#0815

Info: Weitere, bereits vorhandene AD-Benutzerkonten können alternativ auch in der GUI unter Einstellungen->Benutzerkonto mit dem Button Anmeldung in Unternehmensumgebung eingerichtet werden, die anschließend im Login Screen gelistet werden. Allerdings werden deren Homezeichnisse erst bei der ersten erfolgreichen Anmeldung im AD erstellt.

Tipp Anmeldebildschirm

Der Anmeldebildschirm zeigt standardmäßig alle vorhandenen lokalen Benutzer an. Dazu gehören auch alle auf dem System eingerichten AD-Benutzerkonten , was sehr schnell unübersichtlich werden kann.

Dieses Verhalten kann wie folgt geändert werden:

sudoedit /etc/gdm3/greeter.dconf-defaults

Nun entfernt man das Hash-Zeichen (#) bei den folgenden Zeilen:

# [org.gnome/login-screen] # disable-user-list=true

Die Datei speichern und schließen.

Ab jetzt werden im Anmeldebildschirm keine Benutzerkonten mehr angezeigt.

Hinweis (PowerShell AD Module)

Als gute und kostenfreie Möglichkeit ein Active Directory unter Ubuntu zu administrieren bietet sich das Snap-Paket PowerShell an.

Links


https://wiki.ubuntuusers.de/Howto/Samba-AD-Server_unter_Ubuntu_20.04/Tipps/