Samba/Active-Directory: Unterschied zwischen den Versionen
K Textersetzung - „Kategorie:Entwurf“ durch „“ |
K Dirkwagner verschob die Seite Samba:Active-Directory nach Samba/Active-Directory, ohne dabei eine Weiterleitung anzulegen: Textersetzung - „:“ durch „/“ |
(kein Unterschied)
|
Version vom 29. März 2023, 13:07 Uhr
topic kurze Beschreibung
Beschreibung
Installation
Anwendung
Syntax
Optionen
Parameter
Umgebungsvariablen
Exit-Status
Konfiguration
Dateien
Sicherheit
Dokumentation
RFC
Man-Pages
Info-Pages
Siehe auch
Links
Projekt-Homepage
Weblinks
Einzelnachweise
Testfragen
Testfrage 1
Testfrage 2
Testfrage 3
Testfrage 4
Testfrage 5
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:
- ⚓︎ Installation von Programmen
- ⚓︎ Starten von Programmen
- ⚓︎ Ein Terminal öffnen
- ⚓︎ Root-Rechte
- ⚓︎ Samba (Übersichtsartikel)
- ⚓︎ Samba Server
- ⚓︎ Archiv/Kerberos
- ⚓︎ Dnsmasq
Inhaltsverzeichnis# Grundlagen
- Voraussetzungen
- Administrationstools
- Installation des 1. DCs
- Funktionstests des Servers
- Installation des 2. DCs
Grundlagen
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!
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/