{{{#!vorlage Warnung '''Der Verfasser macht ausdrücklich darauf aufmerksam, dass der Betrieb eines Active Directory Domain Controllers einzig und alleine in der Verantwortung des Betreibers liegt!''' Da ein Active Directory Server aufgrund einer Mehrzahl der verwendeten Dienste ein recht komplexer Server ist, '''richtet sich dieses HowTo ausdrücklich an fortgeschrittene Anwender'''. In jedem Fall sollte ein Active Directory Server zunächst immer erst in einer Testumgebung ausführlich getestet werden, bevor er mit produktiven und realen Benutzerdaten bestückt wird! Zur Sicherheit eines Active Directory Server sei insbesondere auch auf das [https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Kompendium_Einzel_PDFs_2021/06_APP_Anwendungen/APP_2_2_Active_Directory_Edition_2021.pdf?__blob=publicationFile&v=2 Grundschutz-Kompendium des BSI zum Active Directory (Stand: 2021)] {de} verwiesen. }}} [[Vorlage(Fortgeschritten)]] [[Vorlage(Howto, Newubunti)]] [[Vorlage(getestet, focal, jammy)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:mit Root-Rechten arbeiten:] [:GRUB_2/Konfiguration:] [:Netplan:] [:systemd/systemd-resolved:] [:systemd:] [:Pakete installieren: Installation von Programmen] [:chrony:] [:Systemzeit:] }}} [[Inhaltsverzeichnis(2)]] Ab [:Samba:] Version 4.x kann man Samba in der Rolle eines Microsoft-kompatiblen "Active-Directory Domain-Controller" (kurz AD DC) laufen lassen. Dieses HowTo beschreibt die Grundinstallation von einem Samba-Server als DC für eine Windows Domäne unter Ubuntu 20.04 LTS Server. {{{#!vorlage Hinweis Dieses HowTo wurde letztmalig im Dezember 2023 erfolgreich mit Ubuntu Server 20.04.6 und Ubuntu Server 22.04.3 erfolgreich getestet. Während in früheren Point-Releases von Ubunt 20.04 Samba in der Version 4.13.X zum Einsatz kam, verwendet Ubuntu 20.04 inzwischen ebenso wie Ubuntu 22.04 die Samba-Version 4.15.X. Die Rückmeldungen im HowTo wurden entsprechend angepasst. }}} =Was ist ein Active Directory Domain Controller?= Mit dem Active Directory hat Microsoft eine Verwaltungsstruktur geschaffen, mit deren Hilfe eine tatsächliche Unternehmens- oder Organisationsstruktur in digitaler Form nachgebildet und administriert werden kann. Der Active Directory Domain Controller bildet das Herzstück dieser Struktur, indem er dazu ein Verzeichnis führt, in dem alle relevanten Elemente wie Standorte, Server, Client-Rechner, Benutzer und Gruppen etc. zentral angelegt und verwaltet werden können. Siehe für weiterführende Informationen z.B.: * [https://www.dr-datenschutz.de/active-directory-und-domaene-einfach-erklaert/ Active Directory und Domäne einfach erklärt - auf dr-datenschutz.de] {de} * [https://www.heise.de/tipps-tricks/Was-ist-ein-Domaenencontroller-im-Active-Directory-4639761.html Was ist ein Domänencontroller im Active Directory? - auf heise.de] {de} * MS Technet Serie: ''"Active Directory Concepts"'' {en} * [https://social.technet.microsoft.com/wiki/contents/articles/16968.active-directory-concepts-part-1.aspx Active Directory: Concepts Part 1] * [https://social.technet.microsoft.com/wiki/contents/articles/16969.active-directory-concepts-part-2.aspx Active Directory: Concepts Part 2] * [https://social.technet.microsoft.com/wiki/contents/articles/16970.active-directory-concepts-part-3.aspx Active Directory: Concepts Part 3] Samba versucht mit der eigenen Implementierung des Active Directory Domain Controllers, das Microsoft-Original so gut wie möglich nachzubilden, entspricht aber nicht zu 100% einem vollwertigen Micorsoft-Active-Directory-Server. =Vorbereitungen= Im folgenden wird eine Samba Active Directory Domain Controller auf Grundlage der folgenden exemplarischen Parameter installiert. Diese Parameter sind gegebenenfalls an das eigene System anzupassen: * Netzwerverbindung: enp1s0 * Name der Domäne (Realm): heim.lan * NETBIOS-Name der Domäne (Domain): HEIM * Name des Servers (Hostname): adc01 * Netzwerk: 10.10.20.0/24 * IP-Adresse: 10.10.20.220 * DNS-BACKEND: SAMBA_INTERNAL * Gateway (DNS forwarder IP address): 10.10.20.1 (ist auch gleichzeitig DNS-Server fürs Internet) * Samba-Domänen-Administrator: administrator Weiter wird davon ausgegangen, dass der Active Directory Server unter Verwendung von Ubuntu Server realisiert wird. ==IPv6 in Grub deaktivieren== Da dieses HowTo den AD DC ausschließlich mit IPv4 einrichten wird und zudem davon ausgegangen wird, dass der AD-Server ausschließlich im LAN genutzt werden soll, deaktviert man noch IPv6. Dieser Schritt ist nicht zwingend notwendig, aber für diesen Fall zweckmäßig. IPv6 kann man mittels [:GRUB_2/Konfiguration/#Variable-fuer-Kernelzeilen: GRUB-Kernel-Option] oder unter der Verwendung von [https://manpages.ubuntu.com/manpages/focal/man8/sysctl.8.html sysctl] {en} dauerhaft deaktivieren. Die Methoden sind in ihrer Wirkung nicht exakt identisch. Genaures erfährt man diesbezüglich unter [https://www.golinuxcloud.com/linux-disable-ipv6/ Linux disable IPv6 properly] {en}. Im vorliegenden Fall wird Grub zur Deaktivierung verwendet, was dazu führt, dass das IPv6-Modul erst gar nicht geladen wird[1][2][3]: {{{#!vorlage Befehl sudoedit /etc/default/grub.d/disable-ipv6.cfg }}} {{{ GRUB_CMDLINE_LINUX_DEFAULT="${GRUB_CMDLINE_LINUX_DEFAULT} ipv6.disable=1" }}} Möchte man außerdem den Splash-Screen deaktivieren und beim Booten des Servers alle Systemmeldungen anzeigen lassen, so kann man `${GRUB_CMDLINE_LINUX_DEFAULT}` auch weglassen und den Eintrag dann einfach so anlegen: {{{ GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1" }}} Damit die Änderungen bei einem Neustart auch wirksam werden, führt man noch {{{#!vorlage Befehl sudo update-grub }}} aus. {{{#!vorlage Hinweis Wenn man IPv6 deaktiviert, dann sollte man konsequenter Weise bei allen Diensten, die sich an Netzwerk-Verbindungen binden darauf achten, dass dies nur für IPv4 geschieht. Andernfalls kann es beim Start der entsprechenden Dienste zu Fehlermeldungen kommen. }}} ==Vergabe einer statischen IP-Adresse== Bei einem Server ist die feste statische Vergabe einer IP-Adresse stets empfehlenswert. Bei einem Samba-AD-Server gilt dies noch mehr, weil hier eine nachträgliche Änderung der IP-Adresse nicht so einfach und zudem risikoreich ist. Unter Ubuntu 20.04 Server erfolgt die Konfiguration einer statische IP-Adresse standardmäßig mittels [:Netplan:]. Dazu wird eine neue '''.yaml''' Datei mit dem folgenden Inhalt erstellt, die dann die auf dem Ubuntu Server schon original vorhandene '''.yaml''' überschreibt.[4] Auf diese Weise kann man bei Bedarf jederzeit wieder zu der original Konfiguration zurückkehren: {{{#!vorlage Befehl sudoedit /etc/netplan/99-enp1s0-static-10.10.20.220.yaml }}} {{{ network: version: 2 renderer: networkd ethernets: enp1s0: addresses: - 10.10.20.220/24 dhcp4: no routes: - to: default via: 10.10.20.1 nameservers: search: [heim.lan] addresses: [10.10.20.1] }}} ==Stub Listener von systemd-resolved deaktivieren== Da der Samba-AD-Server einen eigenen DNS-Server einrichten wird, muss der dazu notwendige Netzwerk-Port `53` zunächst frei gemacht werden, weil dieser unter Ubuntu standardmäßig von [:systemd/systemd-resolved:systemd-resolved] bzw. dessen sog. [https://manpages.debian.org/buster/systemd/systemd-resolved.8.en.html#DESCRIPTION Stub Listener] {en} belegt wird[5]: Zunächst legt man ein Verzeichnis für die Konfigurationsänderung an: {{{#!vorlage Befehl sudo mkdir /etc/systemd/resolved.conf.d/ }}} Anschließend erstellt man eine neue Konfigurationsdatei, deren Name beliebig sein darf, aber mit der Erweiterung '''.conf''' enden muss: {{{#!vorlage Befehl sudoedit /etc/systemd/resolved.conf.d/disable-stub-listener.conf }}} Der Stub Listener wird mit folgendem Eintrag deaktiviert: {{{ [Resolve] DNSStubListener=no }}} Nun muss noch der symbolische Link auf den Stub Listener entfernt {{{#!vorlage Befehl sudo rm /etc/resolv.conf }}} und dafür ein neuer auf '''/run/systemd/resolve/resolv.conf''' gesetzt werden: {{{#!vorlage Befehl sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf }}} Nun teilt man die Konfigurationsänderung systemd[6] mit: {{{#!vorlage Befehl sudo systemctl daemon-reload }}} Abschließend kann man systemd-resolved neu starten: {{{#!vorlage Befehl sudo systemctl restart systemd-resolved }}} ==Hostnamen festlegen== Sofern noch nicht geschehen legt man den Hostnamen '''adc01''' fest: {{{#!vorlage Befehl sudo cp /etc/hostname{,.bu.orig} sudo hostnamectl set-hostname adc01 }}} Schließlich legt man in der Datei '''/etc/hosts''' noch fest, dass der [wikipedia:Fully-Qualified_Host_Name:FQDN] '''adc01.heim.lan''' und der Alias '''adc01''' zur IP-Adresse des Samba-AD-Servers `10.10.20.220` auflösen. Zuvor legt man wieder eine Sicherung der Originaldatei an: {{{#!vorlage Befehl sudo mv /etc/hosts{,.bu.orig} sudoedit /etc/hosts }}} Die neue, leere Datei wird nun mit folgenden Einstellungen beschrieben: {{{ 127.0.0.1 localhost 10.10.20.220 adc01.heim.lan adc01 }}} {{{#!vorlage Hinweis Weder der Hostname noch der FQDN dürfen nach 127.0.0.1 oder zu sonst einer anderen IP-Adresse auflösen, als zu der IP-Adresse der LAN-Netzwerkschnittstelle des AD DC! }}} ==System neu starten== Damit sind die Vorbereitungengen soweit abgeschlossen. Damit alle Änderungen übernommen werden startet man den Rechner noch neu: {{{#!vorlage Befehl sudo reboot }}} ==Hostnamen, IP und belegte Ports überprüfen== {{{#!vorlage Befehl hostname && hostname -f && hostname -d }}} Korrekte Rückmeldung: {{{ adc01 adc01.heim.lan heim.lan }}} Prüfen der IP-Adresse: {{{#!vorlage Befehl ip a }}} Die Rückmeldung sollte der folgenden sehr ähnlich sein. Auf jeden Fall müssen die IP- und die Broadcast-Adresse so aussehen, wie hier angegeben. Außerdem dürfen keine `inet6` Zeilen aufgelistet sein: {{{ 1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: enp1s0: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 12:34:56:78:ab:cd brd ff:ff:ff:ff:ff:ff inet 10.10.20.220/24 brd 10.10.20.255 scope global dynamic enp1s0 valid_lft 2610sec preferred_lft 2610sec }}} Dann vergewissert man sich noch, dass die DNS-Server-Angaben aus der Netplan-Konfiguration auch in der '''/etc/resolv.conf''' ankommen: {{{#!vorlage Befehl cat /etc/resolv.conf }}} Korrekte Rückmeldung: {{{ # This file is managed by man:systemd-resolved(8). Do not edit. # # This is a dynamic resolv.conf file for connecting local clients directly to # all known uplink DNS servers. This file lists all configured search domains. # # Third party programs must not access this file directly, but only through the # symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way, # replace this symlink by a static file or a different symlink. # # See man:systemd-resolved.service(8) for details about the supported modes of # operation for /etc/resolv.conf. nameserver 10.10.20.1 search heim.lan }}} Schließlich überprüft man noch, dass der Port 53 nun nicht mehr belegt ist: {{{#!vorlage Befehl sudo ss -tulpen '( dport = :53 or sport = :53 )' }}} Es sollte nun kein auf Port 53 lauschender Dienst mehr zurückgegeben werden: {{{ Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process }}} =Installation der benötigten Pakete= Samba benötigt unter Ubuntu 20.04 die Pakete '''acl, attr, samba, samba-dsdb-modules, samba-vfs-modules, winbind, krb5-config''' und '''krb5-user''' bzw. alternativ dazu '''heimdal-clients''' sowie '''python3-setproctitle'''. Außerdem installiert man noch den Zeitserver '''chrony''', da die genaue Systemzeit für die Kerberos-Authentifierung essentiell ist. Insgesamt sind somit die folgendne Pakete mittels der Paketverwaltung zu installieren[7]: {{{#!vorlage Paketinstallation samba heimdal-clients smbclient winbind chrony ldb-tools python3-setproctitle }}} Während der Installation wird man bezüglich der Kerberos-Authentisierung gefragt. Dort kann man alle etwaigen Fragen einfach mit der Taste [[Vorlage(Tasten enter)]] bestätigen. Diese Kerberos-Konfiguration wird im späteren Verlauf durch die Kerberos-Konfiguration, die während der Porvisionierung des Samba-AD-Servers erstellt wird, ersetzt werden. =Original Konfigurations-Dateien sichern= Es ist zwar nicht zwingend notwendig aber es empfiehlt sich die original bei der Installation abgelegten Konfigurationsdateien zu sichern. Zum einen enthalten diese oft hilfreiche Kommentierungen und zum andern lässt sich so auch stets nachvollziehen, welche Konfigurationsdateien man bearbeitet hat: {{{#!vorlage Befehl sudo mv /etc/samba/smb.conf{,.bu.orig} sudo mv /etc/krb5.conf{,.bu.orig} sudo mv /etc/default/chrony{,.bu.orig} sudo mv /etc/chrony/chrony.conf{,.bu.orig} }}} =Samba-Installation bereinigen= Während der Installation der Samba-Pakete wird der Server als "Standalone Server" eingerichtet und dann auch gestartet. Da der Server aber letztlich die Rolle eines Active Directory Servers einnehmen wird, muss die Standardkonfiguration erst noch bereinigt werden. ==Samba-Datei-Server-Dienste deaktivieren== Mit den folgenden drei Befehlszeilen werden die bei der Installation gestarteten Samba-Dienste gestoppt, deren automatischer Start bei einem Neustart des Servers wird deaktiviert und die entsprechenden Dienste werden auch noch maskiert, so dass sie nicht versehentlich einfach gestartet werden können: {{{#!vorlage Befehl sudo systemctl stop smbd nmbd winbind sudo systemctl disable smbd nmbd winbind sudo systemctl mask smbd nmbd winbind }}} ==Etwaige Datenbank-Dateien entfernen== Anschließend löscht man alle Samba-Datenbank-Dateien, um etwaige Konflikte beim Provisionieren des Samba Active Directory Servers erst gar nicht aufkommen zu lassen: {{{#!vorlage Befehl sudo rm -f /run/samba/*.tdb sudo rm -f /var/lib/samba/*.tdb sudo rm -f /var/cache/samba/*.tdb sudo rm -f /var/lib/samba/private/*.tdb }}} =Provisionierung des Samba Active Directories= {{{#!vorlage Befehl sudo samba-tool domain provision --use-rfc2307 --interactive --option="interfaces=127.0.0.1 10.10.20.220" --option="bind interfaces only=yes" }}} * 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/Using_RFC2307_on_a_Samba_DC#Administer_Unix_Attributes_in_Active_Directory * `option="interfaces=127.0.0.1 10.10.20.220" --option="bind interfaces only=yes"` sorgt dafür, dass der Samba-AD-Server entgegen dem Standard ausschließlich an explizit unter `interfaces=` genannten Netzwerkschnittstellen und damit auf den IPv4-Adressen `127.0.0.1` für die Loopbackschnittstelle und `10.10.20.220` für die LAN-Schnittstelle lauscht. Folgende Parameter werden dann im interaktiven Dialog abgefragt. Solche Parameter die dabei in `[]` stehen werden standardmäßig verwendet, wenn man nichts anderes angibt und können einfach mit [[Vorlage(Tasten enter)]] bestätigt werden: * 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 "heim.lan". Der Realm gibt zudem die Kerberos-Domäne an über die dann der [https://docs.microsoft.com/de-de/windows-server/security/kerberos/kerberos-authentication-overview Key Distribution Center] erreicht werden kann. Zur Namensgebung siehe auch [https://wiki.samba.org/index.php/Active_Directory_Naming_FAQ Active Directory Naming FAQ] {en} * 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 "heim". * Server Role: Samba kann in ganz unterschiedlichen Modi laufen. In unserem Beispiel ist "dc" anzugeben. * DNS backend: Samba4 beinhaltet einen eigenen DNS-Server. Als weiterer unterstützter DNS-Backend-Server kann außerdem auch [:DNS-Server_Bind: Bind] dienen. Im vorliegenden Fall wählt man "SAMBA_INTERNAL". * 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 = 10.10.20.1 angegeben. * Administrator passwort: Dies ist der mächtigste Account in der Windows-Domäne. Damit 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) Siehe: [https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc786468(v=ws.10)?redirectedfrom=MSDN Passwords must meet complexity requirements] {en}. Das Passwort sollte aus Sicherheitsgründen außerdem von dem Verwalter-Konto des Ubuntu-Servers abweichen. Der Provisionierungsverlauf sollte sich dann wiefolgt darstellen: {{{ Realm [HEIM.LAN]: Domain [HEIM]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [10.10.20.1]: Administrator password: Retype password: INFO 2023-12-09 12:15:00,833 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2108: Looking up IPv4 addresses INFO 2023-12-09 12:15:00,833 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2125: Looking up IPv6 addresses WARNING 2023-12-09 12:15:00,833 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2132: No IPv6 address will be assigned INFO 2023-12-09 12:15:01,107 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2274: Setting up share.ldb INFO 2023-12-09 12:15:01,140 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2278: Setting up secrets.ldb INFO 2023-12-09 12:15:01,160 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2283: Setting up the registry INFO 2023-12-09 12:15:01,251 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2286: Setting up the privileges database INFO 2023-12-09 12:15:01,298 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2289: Setting up idmap db INFO 2023-12-09 12:15:01,326 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2296: Setting up SAM db INFO 2023-12-09 12:15:01,333 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #880: Setting up sam.ldb partitions and settings INFO 2023-12-09 12:15:01,333 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #892: Setting up sam.ldb rootDSE INFO 2023-12-09 12:15:01,340 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1305: Pre-loading the Samba 4 and AD schema Unable to determine the DomainSID, can not enforce uniqueness constraint on local domainSIDs INFO 2023-12-09 12:15:01,380 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1383: Adding DomainDN: DC=heim,DC=lan INFO 2023-12-09 12:15:01,393 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1415: Adding configuration container INFO 2023-12-09 12:15:01,409 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1430: Setting up sam.ldb schema INFO 2023-12-09 12:15:03,606 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1448: Setting up sam.ldb configuration data INFO 2023-12-09 12:15:03,729 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1489: Setting up display specifiers INFO 2023-12-09 12:15:05,265 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1497: Modifying display specifiers and extended rights INFO 2023-12-09 12:15:05,301 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1504: Adding users container INFO 2023-12-09 12:15:05,302 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1510: Modifying users container INFO 2023-12-09 12:15:05,303 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1513: Adding computers container INFO 2023-12-09 12:15:05,305 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1519: Modifying computers container INFO 2023-12-09 12:15:05,305 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1523: Setting up sam.ldb data INFO 2023-12-09 12:15:05,410 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1553: Setting up well known security principals INFO 2023-12-09 12:15:05,448 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1567: Setting up sam.ldb users and groups INFO 2023-12-09 12:15:05,558 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #1575: Setting up self join Repacking database from v1 to v2 format (first record CN=ms-Authz-Member-Rules-In-Central-Access-Policy-BL,CN=Schema,CN=Configuration,DC=heim,DC=lan) Repack: re-packed 10000 records so far Repacking database from v1 to v2 format (first record CN=mSMQSiteLink-Display,CN=404,CN=DisplaySpecifiers,CN=Configuration,DC=heim,DC=lan) Repacking database from v1 to v2 format (first record CN=dda1d01d-4bd7-4c49-a184-46f9241b560e,CN=Operations,CN=DomainUpdates,CN=System,DC=heim,DC=lan) INFO 2023-12-09 12:15:06,586 pid:4084 /usr/lib/python3/dist-packages/samba/provision/sambadns.py #1200: Adding DNS accounts INFO 2023-12-09 12:15:06,618 pid:4084 /usr/lib/python3/dist-packages/samba/provision/sambadns.py #1234: Creating CN=MicrosoftDNS,CN=System,DC=heim,DC=lan INFO 2023-12-09 12:15:06,633 pid:4084 /usr/lib/python3/dist-packages/samba/provision/sambadns.py #1247: Creating DomainDnsZones and ForestDnsZones partitions INFO 2023-12-09 12:15:06,681 pid:4084 /usr/lib/python3/dist-packages/samba/provision/sambadns.py #1252: Populating DomainDnsZones and ForestDnsZones partitions Repacking database from v1 to v2 format (first record DC=l.root-servers.net,DC=RootDNSServers,CN=MicrosoftDNS,DC=DomainDnsZones,DC=heim,DC=lan) Repacking database from v1 to v2 format (first record CN=MicrosoftDNS,DC=ForestDnsZones,DC=heim,DC=lan) INFO 2023-12-09 12:15:06,884 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2012: Setting up sam.ldb rootDSE marking as synchronized INFO 2023-12-09 12:15:06,889 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2017: Fixing provision GUIDs INFO 2023-12-09 12:15:07,917 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2348: A Kerberos configuration suitable for Samba AD has been generated at /var/lib/samba/private/krb5.conf INFO 2023-12-09 12:15:07,917 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2350: Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink! INFO 2023-12-09 12:15:07,973 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #2082: Setting up fake yp server settings INFO 2023-12-09 12:15:08,037 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #487: Once the above files are installed, your Samba AD server will be ready to use INFO 2023-12-09 12:15:08,038 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #492: Server Role: active directory domain controller INFO 2023-12-09 12:15:08,038 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #493: Hostname: adc01 INFO 2023-12-09 12:15:08,038 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #494: NetBIOS Domain: HEIM INFO 2023-12-09 12:15:08,038 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #495: DNS Domain: heim.lan INFO 2023-12-09 12:15:08,038 pid:4084 /usr/lib/python3/dist-packages/samba/provision/__init__.py #496: DOMAIN SID: S-1-5-21-766129308-1721284768-3325348796 }}} {{{#!vorlage Hinweis Die Provisionierung eines Domain Controllers darf immer nur ein mal pro Domäne erfolgen. Möchte man zwecks Sicherung der Verfügbarkeit weitere Domain Controller einrichten, so sind diese der bestehende Domäne hinzuzufügen aber nicht selbst zu provisionieren! Siehe dazu: [https://wiki.samba.org/index.php/Joining_a_Samba_DC_to_an_Existing_Active_Directory Joining a Samba DC to an Existing Active Directory] {en} im Samba-Wiki }}} Während der Provisionierung wird die Datei '''/etc/samba/smb.conf''' generiert. Deren Inhalt lässt man sich am besten mit dem folgenden Kommando anzeigen, da dieses auch immer gleich die syntaktische Korrektheit überprüft: {{{#!vorlage Befehl samba-tool testparm }}} Das Kommando sollte zu folgender Rückmeldung führen: {{{ INFO 2023-12-09 12:15:24,116 pid:4089 /usr/lib/python3/dist-packages/samba/netcmd/testparm.py #96: Loaded smb config files from /etc/samba/smb.conf INFO 2023-12-09 12:15:24,117 pid:4089 /usr/lib/python3/dist-packages/samba/netcmd/testparm.py #97: Loaded services file OK. Press enter to see a dump of your service definitions # Global parameters [global] bind interfaces only = Yes dns forwarder = 10.10.20.1 interfaces = 127.0.0.1 10.10.20.220 netbios name = ADC01 realm = HEIM.LAN server role = active directory domain controller workgroup = HEIM idmap_ldb:use rfc2307 = yes [sysvol] path = /var/lib/samba/sysvol read only = No [netlogon] path = /var/lib/samba/sysvol/heim.lan/scripts read only = No }}} =Kopieren der bei der Provisionierung erzeugten Kerberos-Konfiguration= Während der Provisionierung erzeugt Samba außerdem eine valide Kerberos-Konfiguration innerhalb von '''/var/lib/samba/private/''': {{{#!vorlage Befehl cat /var/lib/samba/private/krb5.conf }}} Ausgabe: {{{ [libdefaults] default_realm = HEIM.LAN dns_lookup_realm = false dns_lookup_kdc = true [realms] HEIM.LAN = { default_domain = heim.lan } [domain_realm] adc01 = HEIM.LAN }}} Die Datei muss nun noch nach '''/etc/''' kopiert werden: {{{#!vorlage Befehl sudo cp /var/lib/samba/private/krb5.conf /etc/ }}} {{{#!vorlage Hinweis Die '''/etc/krb5.conf''' sollte auf allen Rechnern und Servern der Domäne den gleichen Inhalt haben! }}} =Samba-AD-Server als DNS-Server festlegen= Außerdem legt man nun wiederum mittels Netplan den Samba-Server als DNS-Server fest: {{{#!vorlage Befehl sudoedit /etc/netplan/99-enp1s0-static-10.10.20.220.yaml }}} {{{ network: version: 2 renderer: networkd ethernets: enp1s0: addresses: - 10.10.20.220/24 dhcp4: no routes: - to: default via: 10.10.20.1 nameservers: search: [heim.lan] [mark]addresses: [10.10.20.220][/mark] }}} Anschließend kann man die Konfiguration unmittelbar anwenden, {{{#!vorlage Befehl sudo netplan apply }}} und solgleich überprüfen: {{{#!vorlage Befehl cat /etc/resolv.conf }}} Korrekte Rückmeldung: {{{ # This file is managed by man:systemd-resolved(8). Do not edit. # # This is a dynamic resolv.conf file for connecting local clients directly to # all known uplink DNS servers. This file lists all configured search domains. # # Third party programs must not access this file directly, but only through the # symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way, # replace this symlink by a static file or a different symlink. # # See man:systemd-resolved.service(8) for details about the supported modes of # operation for /etc/resolv.conf. nameserver 10.10.20.220 search heim.lan }}} =Starten und Aktivieren des Samba-AD-Servers= Nun muss schließlich noch die samba-ad-dc.service-Einheit demaskiert und für den automatischen Start beim Systemstart aktiviert werden: {{{#!vorlage Befehl sudo systemctl unmask samba-ad-dc sudo systemctl enable samba-ad-dc }}} Anschließend lässt sich der Samba-AD-Server dann erstmalig starten: {{{#!vorlage Befehl sudo systemctl start samba-ad-dc.service }}} Nun fragt man den Status des Samba AD DC ab: {{{#!vorlage Befehl sudo systemctl status samba-ad-dc.service }}} Korrekte Rückmeldung: {{{ ● samba-ad-dc.service - Samba AD Daemon Loaded: loaded (/lib/systemd/system/samba-ad-dc.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2023-12-09 12:18:59 UTC; 8s ago Docs: man:samba(8) man:samba(7) man:smb.conf(5) Main PID: 4323 (samba) Status: "samba: ready to serve connections..." Tasks: 59 (limit: 4595) Memory: 201.2M CGroup: /system.slice/samba-ad-dc.service ├─4323 samba: root process ├─4336 samba: tfork waiter process(4337) ├─4337 samba: task[s3fs] pre-fork master ├─4338 samba: tfork waiter process(4340) ├─4339 samba: tfork waiter process(4342) ├─4340 samba: task[rpc] pre-fork master ├─4341 samba: tfork waiter process(4343) ├─4342 /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground ├─4343 samba: task[nbt] pre-fork master ├─4344 samba: tfork waiter process(4345) ├─4345 samba: task[wrepl] pre-fork master ├─4346 samba: tfork waiter process(4348) ├─4347 samba: tfork waiter process(4350) ├─4348 samba: task[rpc] pre-forked worker(0) ├─4349 samba: tfork waiter process(4352) ├─4350 samba: task[ldap] pre-fork master ├─4351 samba: tfork waiter process(4353) ├─4352 samba: task[rpc] pre-forked worker(1) ├─4353 samba: task[cldap] pre-fork master ├─4354 samba: tfork waiter process(4358) ├─4355 samba: tfork waiter process(4356) ├─4356 samba: task[kdc] pre-fork master ├─4357 samba: tfork waiter process(4359) ├─4358 samba: task[rpc] pre-forked worker(2) ├─4359 samba: task[drepl] pre-fork master ├─4360 samba: tfork waiter process(4365) ├─4361 samba: tfork waiter process(4362) ├─4362 samba: task[winbindd] pre-fork master ├─4363 samba: tfork waiter process(4366) ├─4364 samba: tfork waiter process(4369) ├─4365 samba: task[rpc] pre-forked worker(3) ├─4366 samba: task[ntp_signd] pre-fork master ├─4367 samba: tfork waiter process(4371) ├─4368 samba: tfork waiter process(4373) ├─4369 samba: task[kdc] pre-forked worker(0) ├─4370 samba: tfork waiter process(4374) ├─4371 samba: task[kcc] pre-fork master ├─4372 samba: tfork waiter process(4375) ├─4373 /usr/sbin/winbindd -D --option=server role check:inhibit=yes --foreground ├─4374 samba: task[kdc] pre-forked worker(1) ├─4375 samba: task[dnsupdate] pre-fork master ├─4376 samba: tfork waiter process(4378) ├─4377 samba: tfork waiter process(4379) ├─4378 samba: task[dns] pre-fork master ├─4379 samba: task[kdc] pre-forked worker(2) ├─4380 samba: tfork waiter process(4381) ├─4381 samba: task[kdc] pre-forked worker(3) ├─4389 /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground ├─4390 /usr/sbin/smbd -D --option=server role check:inhibit=yes --foreground ├─4391 /usr/lib/x86_64-linux-gnu/samba/samba-bgqd --ready-signal-fd=46 --parent-watch-fd=13 --debuglevel=0 -F ├─4392 winbindd: domain child [HEIM] ├─4394 samba: tfork waiter process(4395) ├─4395 samba: task[ldap] pre-forked worker(0) ├─4396 samba: tfork waiter process(4397) ├─4397 samba: task[ldap] pre-forked worker(1) ├─4398 samba: tfork waiter process(4399) ├─4399 samba: task[ldap] pre-forked worker(2) ├─4400 samba: tfork waiter process(4401) └─4401 samba: task[ldap] pre-forked worker(3) Dez 09 12:18:59 adc01.heim.lan smbd[4342]: [2023/12/09 12:18:59.622137, 0] ../../source3/smbd/server.c:1734(main) Dez 09 12:18:59 adc01.heim.lan smbd[4342]: smbd version 4.15.13-Ubuntu started. Dez 09 12:18:59 adc01.heim.lan smbd[4342]: Copyright Andrew Tridgell and the Samba Team 1992-2021 Dez 09 12:18:59 adc01.heim.lan winbindd[4373]: [2023/12/09 12:18:59.673254, 0] ../../source3/winbindd/winbindd.c:1722(main) Dez 09 12:18:59 adc01.heim.lan winbindd[4373]: winbindd version 4.15.13-Ubuntu started. Dez 09 12:18:59 adc01.heim.lan winbindd[4373]: Copyright Andrew Tridgell and the Samba Team 1992-2021 Dez 09 12:19:00 adc01.heim.lan winbindd[4373]: [2023/12/09 12:19:00.032849, 0] ../../source3/winbindd/winbindd_cache.c:3085(initialize_winbindd_cache) Dez 09 12:19:00 adc01.heim.lan winbindd[4373]: initialize_winbindd_cache: clearing cache and re-creating with version number 2 Dez 09 12:19:02 adc01.heim.lan samba[4350]: [2023/12/09 12:19:02.965736, 0] ../../source4/lib/tls/tlscert.c:154(tls_cert_generate) Dez 09 12:19:02 adc01.heim.lan samba[4350]: TLS self-signed keys generated OK }}} =Test der Betriebsbereitschaft= Bevor man damit beginnt, den AD-Server weiter zu konfigurieren und Rechner der Domäne hinzuzufügen, sollte man unbedingt die korrekte Funktion aller Dienste des AD-Servers sicherstellen. ==Prozesse auflisten== {{{#!vorlage Befehl ps ax | grep samba }}} Korrekte Rückmeldung: {{{ 4323 ? Ss 0:00 samba: root process 4336 ? S 0:00 samba: tfork waiter process(4337) 4337 ? S 0:00 samba: task[s3fs] pre-fork master 4338 ? S 0:00 samba: tfork waiter process(4340) 4339 ? S 0:00 samba: tfork waiter process(4342) 4340 ? S 0:00 samba: task[rpc] pre-fork master 4341 ? S 0:00 samba: tfork waiter process(4343) 4343 ? S 0:00 samba: task[nbt] pre-fork master 4344 ? S 0:00 samba: tfork waiter process(4345) 4345 ? S 0:00 samba: task[wrepl] pre-fork master 4346 ? S 0:00 samba: tfork waiter process(4348) 4347 ? S 0:00 samba: tfork waiter process(4350) 4348 ? S 0:00 samba: task[rpc] pre-forked worker(0) 4349 ? S 0:00 samba: tfork waiter process(4352) 4350 ? S 0:04 samba: task[ldap] pre-fork master 4351 ? S 0:00 samba: tfork waiter process(4353) 4352 ? S 0:00 samba: task[rpc] pre-forked worker(1) 4353 ? S 0:00 samba: task[cldap] pre-fork master 4354 ? S 0:00 samba: tfork waiter process(4358) 4355 ? S 0:00 samba: tfork waiter process(4356) 4356 ? S 0:00 samba: task[kdc] pre-fork master 4357 ? S 0:00 samba: tfork waiter process(4359) 4358 ? S 0:00 samba: task[rpc] pre-forked worker(2) 4359 ? S 0:00 samba: task[drepl] pre-fork master 4360 ? S 0:00 samba: tfork waiter process(4365) 4361 ? S 0:00 samba: tfork waiter process(4362) 4362 ? S 0:00 samba: task[winbindd] pre-fork master 4363 ? S 0:00 samba: tfork waiter process(4366) 4364 ? S 0:00 samba: tfork waiter process(4369) 4365 ? S 0:00 samba: task[rpc] pre-forked worker(3) 4366 ? S 0:00 samba: task[ntp_signd] pre-fork master 4367 ? S 0:00 samba: tfork waiter process(4371) 4368 ? S 0:00 samba: tfork waiter process(4373) 4369 ? S 0:00 samba: task[kdc] pre-forked worker(0) 4370 ? S 0:00 samba: tfork waiter process(4374) 4371 ? S 0:00 samba: task[kcc] pre-fork master 4372 ? S 0:00 samba: tfork waiter process(4375) 4374 ? S 0:00 samba: task[kdc] pre-forked worker(1) 4375 ? S 0:00 samba: task[dnsupdate] pre-fork master 4376 ? S 0:00 samba: tfork waiter process(4378) 4377 ? S 0:00 samba: tfork waiter process(4379) 4378 ? S 0:00 samba: task[dns] pre-fork master 4379 ? S 0:00 samba: task[kdc] pre-forked worker(2) 4380 ? S 0:00 samba: tfork waiter process(4381) 4381 ? S 0:00 samba: task[kdc] pre-forked worker(3) 4391 ? S 0:00 /usr/lib/x86_64-linux-gnu/samba/samba-bgqd --ready-signal-fd=46 --parent-watch-fd=13 --debuglevel=0 -F 4394 ? S 0:00 samba: tfork waiter process(4395) 4395 ? S 0:00 samba: task[ldap] pre-forked worker(0) 4396 ? S 0:00 samba: tfork waiter process(4397) 4397 ? S 0:00 samba: task[ldap] pre-forked worker(1) 4398 ? S 0:00 samba: tfork waiter process(4399) 4399 ? S 0:00 samba: task[ldap] pre-forked worker(2) 4400 ? S 0:00 samba: tfork waiter process(4401) 4401 ? S 0:00 samba: task[ldap] pre-forked worker(3) 4413 pts/0 S+ 0:00 grep --color=auto samba }}} ==AD-Server-Ports== {{{#!vorlage Befehl sudo ss -tulpen }}} Korrekte Rückmeldung: {{{ Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process udp UNCONN 0 0 10.10.20.220:53 0.0.0.0:* users:(("dns[master]",pid=4378,fd=50)) ino:61898 sk:1 <-> udp UNCONN 0 0 127.0.0.1:53 0.0.0.0:* users:(("dns[master]",pid=4378,fd=48)) ino:61896 sk:2 <-> udp UNCONN 0 0 10.10.20.220:88 0.0.0.0:* users:(("kdc(3",pid=4381,fd=40),("kdc(2",pid=4379,fd=40),("kdc(1",pid=4374,fd=40),("kdc(0",pid=4369,fd=40),("kdc[master]",pid=4356,fd=40)) ino:60368 sk:3 <-> udp UNCONN 0 0 127.0.0.1:88 0.0.0.0:* users:(("kdc(3",pid=4381,fd=36),("kdc(2",pid=4379,fd=36),("kdc(1",pid=4374,fd=36),("kdc(0",pid=4369,fd=36),("kdc[master]",pid=4356,fd=36)) ino:60364 sk:4 <-> udp UNCONN 0 0 10.10.20.220:123 0.0.0.0:* users:(("ntpd",pid=2251,fd=18)) ino:48792 sk:5 <-> udp UNCONN 0 0 127.0.0.1:123 0.0.0.0:* users:(("ntpd",pid=2251,fd=17)) ino:48790 sk:6 <-> udp UNCONN 0 0 0.0.0.0:123 0.0.0.0:* users:(("ntpd",pid=2251,fd=16)) ino:48786 sk:7 <-> udp UNCONN 0 0 10.10.20.220:137 0.0.0.0:* users:(("nbt[master]",pid=4343,fd=31)) ino:60125 sk:8 <-> udp UNCONN 0 0 10.10.20.255:137 0.0.0.0:* users:(("nbt[master]",pid=4343,fd=30)) ino:60124 sk:9 <-> udp UNCONN 0 0 127.0.0.1:137 0.0.0.0:* users:(("nbt[master]",pid=4343,fd=26)) ino:60121 sk:a <-> udp UNCONN 0 0 127.255.255.255:137 0.0.0.0:* users:(("nbt[master]",pid=4343,fd=22)) ino:60120 sk:b <-> udp UNCONN 0 0 10.10.20.220:138 0.0.0.0:* users:(("nbt[master]",pid=4343,fd=33)) ino:60127 sk:c <-> udp UNCONN 0 0 10.10.20.255:138 0.0.0.0:* users:(("nbt[master]",pid=4343,fd=32)) ino:60126 sk:d <-> udp UNCONN 0 0 127.0.0.1:138 0.0.0.0:* users:(("nbt[master]",pid=4343,fd=29)) ino:60123 sk:e <-> udp UNCONN 0 0 127.255.255.255:138 0.0.0.0:* users:(("nbt[master]",pid=4343,fd=28)) ino:60122 sk:f <-> udp UNCONN 0 0 10.10.20.220:389 0.0.0.0:* users:(("cldap[master]",pid=4353,fd=32)) ino:60267 sk:10 <-> udp UNCONN 0 0 127.0.0.1:389 0.0.0.0:* users:(("cldap[master]",pid=4353,fd=22)) ino:60266 sk:11 <-> udp UNCONN 0 0 10.10.20.220:464 0.0.0.0:* users:(("kdc(3",pid=4381,fd=42),("kdc(2",pid=4379,fd=42),("kdc(1",pid=4374,fd=42),("kdc(0",pid=4369,fd=42),("kdc[master]",pid=4356,fd=42)) ino:60370 sk:12 <-> udp UNCONN 0 0 127.0.0.1:464 0.0.0.0:* users:(("kdc(3",pid=4381,fd=38),("kdc(2",pid=4379,fd=38),("kdc(1",pid=4374,fd=38),("kdc(0",pid=4369,fd=38),("kdc[master]",pid=4356,fd=38)) ino:60366 sk:13 <-> tcp LISTEN 0 50 127.0.0.1:445 0.0.0.0:* users:(("smbd",pid=4342,fd=47)) ino:62988 sk:14 <-> tcp LISTEN 0 50 10.10.20.220:445 0.0.0.0:* users:(("smbd",pid=4342,fd=45)) ino:62986 sk:15 <-> tcp LISTEN 0 10 10.10.20.220:49152 0.0.0.0:* users:(("rpc(3",pid=4365,fd=26),("rpc(2",pid=4358,fd=26),("rpc(1",pid=4352,fd=26),("rpc(0",pid=4348,fd=26),("rpc[master]",pid=4340,fd=26)) ino:61624 sk:16 <-> tcp LISTEN 0 10 127.0.0.1:49152 0.0.0.0:* users:(("rpc(3",pid=4365,fd=24),("rpc(2",pid=4358,fd=24),("rpc(1",pid=4352,fd=24),("rpc(0",pid=4348,fd=24),("rpc[master]",pid=4340,fd=24)) ino:61623 sk:17 <-> tcp LISTEN 0 10 10.10.20.220:49153 0.0.0.0:* users:(("rpc(0",pid=4348,fd=15)) ino:61727 sk:18 <-> tcp LISTEN 0 10 127.0.0.1:49153 0.0.0.0:* users:(("rpc(0",pid=4348,fd=14)) ino:61726 sk:19 <-> tcp LISTEN 0 10 10.10.20.220:49154 0.0.0.0:* users:(("rpc(0",pid=4348,fd=30)) ino:61740 sk:1a <-> tcp LISTEN 0 10 127.0.0.1:49154 0.0.0.0:* users:(("rpc(0",pid=4348,fd=25)) ino:61739 sk:1b <-> tcp LISTEN 0 10 10.10.20.220:3268 0.0.0.0:* users:(("ldap(3",pid=4401,fd=37),("ldap(2",pid=4399,fd=37),("ldap(1",pid=4397,fd=37),("ldap(0",pid=4395,fd=37),("ldap[master]",pid=4350,fd=37)) ino:63063 sk:1c <-> tcp LISTEN 0 10 127.0.0.1:3268 0.0.0.0:* users:(("ldap(3",pid=4401,fd=33),("ldap(2",pid=4399,fd=33),("ldap(1",pid=4397,fd=33),("ldap(0",pid=4395,fd=33),("ldap[master]",pid=4350,fd=33)) ino:63059 sk:1d <-> tcp LISTEN 0 10 10.10.20.220:3269 0.0.0.0:* users:(("ldap(3",pid=4401,fd=38),("ldap(2",pid=4399,fd=38),("ldap(1",pid=4397,fd=38),("ldap(0",pid=4395,fd=38),("ldap[master]",pid=4350,fd=38)) ino:63064 sk:1e <-> tcp LISTEN 0 10 10.10.20.220:389 0.0.0.0:* users:(("ldap(3",pid=4401,fd=35),("ldap(2",pid=4399,fd=35),("ldap(1",pid=4397,fd=35),("ldap(0",pid=4395,fd=35),("ldap[master]",pid=4350,fd=35)) ino:63061 sk:1f <-> tcp LISTEN 0 10 127.0.0.1:3269 0.0.0.0:* users:(("ldap(3",pid=4401,fd=34),("ldap(2",pid=4399,fd=34),("ldap(1",pid=4397,fd=34),("ldap(0",pid=4395,fd=34),("ldap[master]",pid=4350,fd=34)) ino:63060 sk:20 <-> tcp LISTEN 0 10 127.0.0.1:389 0.0.0.0:* users:(("ldap(3",pid=4401,fd=30),("ldap(2",pid=4399,fd=30),("ldap(1",pid=4397,fd=30),("ldap(0",pid=4395,fd=30),("ldap[master]",pid=4350,fd=30)) ino:63057 sk:21 <-> tcp LISTEN 0 10 10.10.20.220:135 0.0.0.0:* users:(("rpc(0",pid=4348,fd=34)) ino:61751 sk:22 <-> tcp LISTEN 0 10 127.0.0.1:135 0.0.0.0:* users:(("rpc(0",pid=4348,fd=33)) ino:61750 sk:23 <-> tcp LISTEN 0 50 127.0.0.1:139 0.0.0.0:* users:(("smbd",pid=4342,fd=48)) ino:62989 sk:24 <-> tcp LISTEN 0 50 10.10.20.220:139 0.0.0.0:* users:(("smbd",pid=4342,fd=46)) ino:62987 sk:25 <-> tcp LISTEN 0 10 10.10.20.220:464 0.0.0.0:* users:(("kdc(3",pid=4381,fd=41),("kdc(2",pid=4379,fd=41),("kdc(1",pid=4374,fd=41),("kdc(0",pid=4369,fd=41),("kdc[master]",pid=4356,fd=41)) ino:60369 sk:26 <-> tcp LISTEN 0 10 127.0.0.1:464 0.0.0.0:* users:(("kdc(3",pid=4381,fd=37),("kdc(2",pid=4379,fd=37),("kdc(1",pid=4374,fd=37),("kdc(0",pid=4369,fd=37),("kdc[master]",pid=4356,fd=37)) ino:60365 sk:27 <-> tcp LISTEN 0 10 10.10.20.220:53 0.0.0.0:* users:(("dns[master]",pid=4378,fd=49)) ino:61897 sk:28 <-> tcp LISTEN 0 10 127.0.0.1:53 0.0.0.0:* users:(("dns[master]",pid=4378,fd=46)) ino:61895 sk:29 <-> tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=695,fd=3)) ino:34301 sk:2a <-> tcp LISTEN 0 10 10.10.20.220:88 0.0.0.0:* users:(("kdc(3",pid=4381,fd=39),("kdc(2",pid=4379,fd=39),("kdc(1",pid=4374,fd=39),("kdc(0",pid=4369,fd=39),("kdc[master]",pid=4356,fd=39)) ino:60367 sk:2b <-> tcp LISTEN 0 10 127.0.0.1:88 0.0.0.0:* users:(("kdc(3",pid=4381,fd=34),("kdc(2",pid=4379,fd=34),("kdc(1",pid=4374,fd=34),("kdc(0",pid=4369,fd=34),("kdc[master]",pid=4356,fd=34)) ino:60363 sk:2c <-> tcp LISTEN 0 10 10.10.20.220:636 0.0.0.0:* users:(("ldap(3",pid=4401,fd=36),("ldap(2",pid=4399,fd=36),("ldap(1",pid=4397,fd=36),("ldap(0",pid=4395,fd=36),("ldap[master]",pid=4350,fd=36)) ino:63062 sk:2d <-> tcp LISTEN 0 10 127.0.0.1:636 0.0.0.0:* users:(("ldap(3",pid=4401,fd=32),("ldap(2",pid=4399,fd=32),("ldap(1",pid=4397,fd=32),("ldap(0",pid=4395,fd=32),("ldap[master]",pid=4350,fd=32)) ino:63058 sk:2e <-> }}} ==DNS-Tests== Das Funktionieren der Namens-Auflösung innerhalb einer Active Directory Domäne ist für deren Betrieb essentiell. Rechner, die der Domäne beitreten wollen oder die bereits Mitglied der Domäne sind kommunizieren mit den einzelnen Diensten des Active-Directory-Servers ausschließlich über den DNS-Namen der jeweiligen Dienste. Daher ist es zweckmäßig, die korrekte Namens-Auflösung der Acitve-Directory-Dienste vorab zu überprüfen: Namensauflösung des Active-Directory-Servers: {{{#!vorlage Befehl host adc01 }}} Korrekte Rückmeldung: {{{ adc01.heim.lan has address 10.10.20.220 }}} Namensauflösung des FQDN des Active-Directory-Servers: {{{#!vorlage Befehl host -t A adc01.heim.lan }}} Korrekte Rückmeldung: {{{ adc01.heim.lan has address 10.10.20.220 }}} Namensauflösung des LDAP-Dienstes: {{{#!vorlage Befehl host -t SRV _ldap._tcp.heim.lan }}} Korrekte Rückmeldung: {{{ _ldap._tcp.heim.lan has SRV record 0 100 389 adc01.heim.lan. }}} Namensauflösung des Kerberos-Dienstes über UDP: {{{#!vorlage Befehl host -t SRV _kerberos._udp.heim.lan }}} Korrekte Rückmeldung: {{{ _kerberos._udp.heim.lan has SRV record 0 100 88 adc01.heim.lan. }}} Namensauflösung des Kerberos-Dienstes über TCP: {{{#!vorlage Befehl host -t SRV _kerberos._tcp.heim.lan }}} Korrekte Rückmeldung: {{{ _kerberos._tcp.heim.lan has SRV record 0 100 88 adc01.heim.lan. }}} Namensauflösung des Global-Catalog-Dienstes {{{#!vorlage Befehl host -t SRV _gc._tcp.heim.lan }}} Korrekte Rückmeldung: {{{ _gc._tcp.heim.lan has SRV record 0 100 3268 adc01.heim.lan. }}} ==Verfügbarkeit der Samba-AD-Server Standardfreigaben== {{{#!vorlage Befehl smbclient -L adc01 -Uadministrator }}} Korrekte Rückmeldung: {{{ Password for [HEIM\administrator]: Sharename Type Comment --------- ---- ------- sysvol Disk netlogon Disk IPC$ IPC IPC Service (Samba 4.15.13-Ubuntu) SMB1 disabled -- no workgroup available }}} Die beiden Freigaben '''sysvol''' und '''netlogon''' sind die zwei wesentlichen Standardfreigaben auf einem Active Directory Server, denen wesentliche Verwaltungsfunktion zukommt. Sie sollten auf gar keinen Fall als normale Daten-Dateifreigaben genutzt werden! Siehe zu '''sysvol''' und '''netlogon''' auch: [https://social.technet.microsoft.com/wiki/contents/articles/8548.active-directory-sysvol-and-netlogon.aspx?Sort=MostUseful&PageIndex=1 Active Directory: SYSVOL and NETLOGON] {en} {{{#!vorlage Hinweis Auf einem Active Directory Server sollten keine Daten-Freigaben eingerichtet werden. Es sollte statt dessen ein weiterer dezidierter Daten-Freigabe-Server (File-Server) eingerichtet und der Active Directory Domäne hinzugefügt werden. Siehe auch: [https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller#Using_the_Domain_Controller_as_a_File_Server Using the Domain Controller as a File Server] }}} ==Kerberos testen== Kerberos-Ticket für das Domänen-Administrator-Konto anfordern: {{{#!vorlage Befehl kinit administrator }}} {{{ administrator@HEIM.LAN's Password: }}} Informationen zum angeforderten Ticket anzeigen: {{{#!vorlage Befehl klist }}} {{{ Credentials cache: FILE:/tmp/krb5cc_1000 Principal: administrator@HEIM.LAN Issued Expires Principal Dec 9 12:22:43 2023 Dec 9 22:22:43 2023 krbtgt/HEIM.LAN@HEIM.LAN }}} Das Ticket für die Authentifizierung zur Nutzung des Befehls `smbclient` nutzen: {{{#!vorlage Befehl smbclient -L adc01 -k }}} {{{ WARNING: The option -k|--kerberos is deprecated! Sharename Type Comment --------- ---- ------- sysvol Disk netlogon Disk IPC$ IPC IPC Service (Samba 4.15.13-Ubuntu) SMB1 disabled -- no workgroup available }}} ==Test des LDAP-Servers== Schließlich testest man noch die Erreichbarkeit des LDAP-Servers: {{{#!vorlage Befehl ldbsearch -H ldap://adc01 "cn=administrator" -Uadministrator }}} Korrekte Rückmeldung: {{{ Password for [HEIM\administrator]: # record 1 dn: CN=Administrator,CN=Users,DC=heim,DC=lan objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: Administrator description: Built-in account for administering the computer/domain instanceType: 4 whenCreated: 20231209121505.0Z uSNCreated: 3853 name: Administrator objectGUID: 2b4f9da3-2e15-442d-bafe-d8306ee9500c userAccountControl: 512 badPwdCount: 0 codePage: 0 countryCode: 0 badPasswordTime: 0 lastLogoff: 0 pwdLastSet: 133465977054558340 primaryGroupID: 513 objectSid: S-1-5-21-766129308-1721284768-3325348796-500 adminCount: 1 accountExpires: 9223372036854775807 sAMAccountName: Administrator sAMAccountType: 805306368 objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=heim,DC=lan isCriticalSystemObject: TRUE memberOf: CN=Domain Admins,CN=Users,DC=heim,DC=lan memberOf: CN=Schema Admins,CN=Users,DC=heim,DC=lan memberOf: CN=Enterprise Admins,CN=Users,DC=heim,DC=lan memberOf: CN=Group Policy Creator Owners,CN=Users,DC=heim,DC=lan memberOf: CN=Administrators,CN=Builtin,DC=heim,DC=lan lastLogonTimestamp: 133465980982602110 whenChanged: 20231209122138.0Z uSNChanged: 4073 lastLogon: 133465982055266620 logonCount: 6 distinguishedName: CN=Administrator,CN=Users,DC=heim,DC=lan # Referral ref: ldap://heim.lan/CN=Configuration,DC=heim,DC=lan # Referral ref: ldap://heim.lan/DC=DomainDnsZones,DC=heim,DC=lan # Referral ref: ldap://heim.lan/DC=ForestDnsZones,DC=heim,DC=lan # returned 4 records # 1 entries # 3 referrals }}} =Einrichtung einer DNS-Reverse-Lookup-Zone= DNS ist in erster Linie dazu da, um leicht merkbare Namen in weniger leicht merkbare IP-Adressen aufzulösen. Diese Art der Zuordnung wird auch als Vorwärtessuche (engl. "Forward Lookup") bezeichnet. Daneben kann DNS aber auch in umgekehrter (engl. "reverse") Reihenfolge IP-Adressen zu den aktuell zugehörigen Namen zuordnen. Die Einträge für die Vorwärtssuche werden im Samba-DNS-Server in der "Forward Lookup-Zone" verwaltet. Diese Zone wird beim Provisionieren des Samba-AD-Server standardmäßig automatisch angelegt. Die für die Rückwärtssuche benötigte sog. "Reverse-Lookup-Zone" muss man dagegen zunächst erst noch anlegen. Der Name der Reverse-Lookup-Zone folgt dabei für ein /24-Subnetz dem folgenden Schema: {{{ IP-Oktett3.IP-Oktett2.IP-Okttet1.in-addr.arpa }}} Im vorliegenden Fall also: {{{ 20.10.10.in-addr.arpa }}} Für weitere Details siehe [https://wiki.samba.org/index.php/DNS_administration#Administering_DNS_on_Linux.2FUnix_with_samba-tool Administering DNS on Linux/Unix with samba-tool] {en}. Mit dem folgenden Befehl erstellt man dann die Reverse-Lookup-Zone: {{{#!vorlage Befehl samba-tool dns zonecreate adc01 20.10.10.in-addr.arpa -Uadministrator }}} Korrekte Rückmeldung: {{{ Password for [HEIM\administrator]: Zone 20.10.10.in-addr.arpa created successfully }}} Dann fügt man der Reverse-Zone ein PTR-Eintrag für den AD-Server hinzu: {{{#!vorlage Befehl samba-tool dns add adc01.heim.lan 20.10.10.in-addr.arpa 220 PTR adc01.heim.lan -Uadministrator }}} Korrekte Rückmeldung: {{{ Password for [HEIM\administrator]: Record added successfully }}} Mit dem folgenden Befehl lässt sich die gerade erstellte Reverse-Lookup-Zone nebst dem gerade angelegten PTR-Eintrag für den AD-Server auflisten: {{{#!vorlage Befehl samba-tool dns query adc01 20.10.10.in-addr.arpa @ ALL -Uadministrator }}} Korrekte Rückmeldung: {{{ Password for [HEIM\administrator]: Name=, Records=2, Children=0 SOA: serial=2, refresh=900, retry=600, expire=86400, minttl=3600, ns=adc01.heim.lan., email=hostmaster.heim.lan. (flags=600000f0, serial=2, ttl=3600) NS: adc01.heim.lan. (flags=600000f0, serial=1, ttl=3600) Name=220, Records=1, Children=0 PTR: adc01.heim.lan (flags=f0, serial=2, ttl=900) }}} Nun kann man die Rückwärtsauflösung testen: {{{#!vorlage Befehl host 10.10.20.220 }}} Korrekte Rückmeldung: {{{ 220.20.10.10.in-addr.arpa domain name pointer adc01.heim.lan. }}} {{{#!vorlage Hinweis Während beim späteren Hinzufügen eines Rechners oder eines Servers zum Active Directory DNS-Einträge für die Forward Lookup Zone in der Regel automatisch erstellt werden, müssen die Einträge für die Reverse Lookup Zone standardmäßig händisch angelegt werden. Einen Ansatz zur Automatisierung diese Porzesses erhält man unter [https://wiki.samba.org/index.php/Configure_DHCP_to_update_DNS_records Configure DHCP to update DNS records] {en} im Samba-Wiki. }}} =Konfiguration des NTP-Servers= Da es für die erfolgreiche Kerberos-Authentifizierung von Client-Rechnern und Benutzern am Active Directory Server auch wesentlich auf die korrekte Systemzeit ankommt, installiert und konfiguriert man auf dem AD-Server noch einen Zeitserver. Im folgenden wird dazu [:chrony:] verwendet.[8] Eine Verwendung von [:ntpd:] wäre aber auch möglich. Eine Übersicht, welcher Zeit-Server-Dienst, welche Funktionen bietet, findet man unter [https://chrony.tuxfamily.org/comparison.html Comparison of NTP implementations] {en}. Für chrony erstellt man eine neue '''/etc/chrony/chrony.conf''' {{{#!vorlage Befehl sudoedit /etc/chrony/chrony.conf }}} und fügt die nachfolgende Konfiguration ein: {{{ # Welcome to the chrony configuration file. See chrony.conf(5) for more # information about usable directives. # About using servers from the NTP Pool Project in general see (LP: #104525). # Approved by Ubuntu Technical Board on 2011-02-08. # See http://www.pool.ntp.org/join.html for more information. server 0.de.pool.ntp.org iburst server 1.de.pool.ntp.org iburst server 2.de.pool.ntp.org iburst server 3.de.pool.ntp.org iburst # This directive specify the location of the file containing ID/key pairs for # NTP authentication. keyfile /etc/chrony/chrony.keys # This directive specify the file into which chronyd will store the rate # information. driftfile /var/lib/chrony/chrony.drift # Uncomment the following line to turn logging on. #log tracking measurements statistics # Log files location. logdir /var/log/chrony # Stop bad estimates upsetting machine clock. maxupdateskew 100.0 # This directive enables kernel synchronisation (every 11 minutes) of the # real-time clock. Note that it can’t be used along with the 'rtcfile' directive. rtcsync # Step the system clock instead of slewing it if the adjustment is larger than # one second, but only in the first three clock updates. makestep 1 3 # Get TAI-UTC offset and leap seconds from the system tz database. # This directive must be commented out when using time sources serving # leap-smeared time. leapsectz right/UTC # ip to bind chronyc to bindcmdaddress 127.0.0.1 # ip to bind chronyd to bindaddress 10.10.20.220 # dns netmask allow 10.10.20.0/24 # samba signd socket ntpsigndsocket /var/lib/samba/ntp_signd # Disable chronyc access over 323 socket #cmdport 0 }}} Damit die in der Konfiguration festgelegte Signd-Socket-Verbindung zwischen chrony und samba-ad-dc funktioniert, müssen die Rechte für das Verzeichnis '''/var/lib/samba/ntp_signd''' noch wie folgt angepasst werden: {{{#!vorlage Befehl sudo chgrp _chrony /var/lib/samba/ntp_signd sudo chmod g+rx /var/lib/samba/ntp_signd }}} Da IPv6 vollständig deaktiviert ist, stellt man außerdem noch ein, dass chrony nur IPv4 verwenden soll. Dies geschieht bei Chrony unter Ubuntu über die Datei '''/etc/default/chrony''': {{{#!vorlage Befehl sudoedit /etc/default/chrony }}} Diese erhält folgenden Inhalt: {{{ # This is a configuration file for /etc/init.d/chrony and # /lib/systemd/system/chrony.service; it allows you to pass various options to # the chrony daemon without editing the init script or service file. # Options to pass to chrony. DAEMON_OPTS="-F 1 -4" # Sync system clock in containers or without CAP_SYS_TIME (likely to fail) # See /usr/share/doc/chrony/README.container for details. SYNC_IN_CONTAINER="no" }}} Nach diesen Anpassungen kann der chrony-Dienst neu gestartet werden: {{{#!vorlage Befehl sudo systemctl restart chrony.service }}} =Test des NTP-Servers= Die Funktionsfähigkeit des NTP-Servers kann mit den folgenden Befehlen überprüft werden: Status der Chrony-Service-Unit abfragen: {{{#!vorlage Befehl systemctl status chrony.service }}} Die Rückmeldung sollte ähnlich der folgenden aussehen: {{{ ● chrony.service - chrony, an NTP client/server Loaded: loaded (/lib/systemd/system/chrony.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2023-12-10 15:39:03 CET; 3s ago Docs: man:chronyd(8) man:chronyc(1) man:chrony.conf(5) Process: 3349 ExecStart=/usr/lib/systemd/scripts/chronyd-starter.sh $DAEMON_OPTS (code=exited, status=0/SUCCESS) Process: 3368 ExecStartPost=/usr/lib/chrony/chrony-helper update-daemon (code=exited, status=0/SUCCESS) Main PID: 3366 (chronyd) Tasks: 2 (limit: 4595) Memory: 1.5M CGroup: /system.slice/chrony.service ├─3366 /usr/sbin/chronyd -F 1 -4 └─3367 /usr/sbin/chronyd -F 1 -4 Dez 10 15:39:03 adc01 systemd[1]: Starting chrony, an NTP client/server... Dez 10 15:39:03 adc01 chronyd[3366]: chronyd version 3.5 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND +ASYNCDNS +SECHASH +IPV6 -DEBUG) Dez 10 15:39:03 adc01 chronyd[3366]: Frequency -13.416 +/- 12.205 ppm read from /var/lib/chrony/chrony.drift Dez 10 15:39:03 adc01 chronyd[3366]: Using right/UTC timezone to obtain leap second data Dez 10 15:39:03 adc01 chronyd[3366]: MS-SNTP authentication enabled Dez 10 15:39:03 adc01 chronyd[3366]: Loaded seccomp filter Dez 10 15:39:03 adc01 systemd[1]: Started chrony, an NTP client/server. }}} Synchronisation mit einem NTP-Internet-Server testen: {{{#!vorlage Befehl chronyc tracking }}} Die Rückmeldung sollte der folgenden Ausgabe ähneln: {{{ Reference ID : 05099102 (kotschak.de) Stratum : 4 Ref time (UTC) : Sun Dec 10 13:32:11 2023 System time : 0.000497767 seconds slow of NTP time Last offset : -0.000513375 seconds RMS offset : 0.000513375 seconds Frequency : 14.354 ppm slow Residual freq : +6.243 ppm Skew : 2.124 ppm Root delay : 0.034449756 seconds Root dispersion : 0.024923578 seconds Update interval : 64.0 seconds Leap status : Normal }}} Die `Reference ID` ist in der Regel nach jedem Neustart von chrony eine andere. Wichtig ist nur, dass eine solche angezeigt wird. Nach einem Neustart des gesamten Servers oder des chrony-Dienstes, kann es aber einige Sekunden dauern, bis `chronyc tracking` die Synchronisation mit einem externen Server anzeigt. Erfolgt (noch) keine Synchronisation mit einem der in der '''/etc/chrony/chrony.conf''' eingestellten Server, so sieht die Rückmeldung wie im folgenden oder so ähnlich aus: {{{ Reference ID : 00000000 () Stratum : 0 Ref time (UTC) : Thu Jan 01 00:00:00 1970 System time : 0.000000000 seconds slow of NTP time Last offset : +0.000000000 seconds RMS offset : 0.000000000 seconds Frequency : 12.386 ppm slow Residual freq : +0.000 ppm Skew : 0.000 ppm Root delay : 1.000000000 seconds Root dispersion : 1.000000000 seconds Update interval : 0.0 seconds Leap status : Not synchronised }}} Siehe zur Nutzung von poll.ntp.org auch: [https://www.ntppool.org/de/use.html Wie benutze ich pool.ntp.org?] =Neustart des Servers= Der AD-DC-Server ist damit erfolgreich eingerichtet und getestet. Abschließend sollte man den Server nun noch neu starten, um zu prüfen, dass dabei auch alle Dienste wie erwartet automatisch und sauber neu gestartet werden: {{{#!vorlage Befehl sudo reboot }}} =Nächste Schritte= Nachdem der Server neu gestartet wurde, hat man einen grundsätzlich funktionierenden Samba Active Directory Server. Allerdings hat man damit noch kein System, das man sofort produktiv einsetzen sollte! Außerdem gibt es z.B. außer dem Administrator-Konto noch kein weiteres nutzbares Benutzer-Konto. D.h. die eigentliche administrative Arbeit fängt jetzt erst so richtig an. ==DNS-Server-Verteilung== Wie [#DNS-Tests weiter oben] bereits geschildert, ist im Active Directory die korrekte Namensauflösung grundlegend für die korrekte Funktion des Active Directory. Damit Rechner oder Server in die Active Directory Domäne aufgenommen werden bzw. mit dieser in Kontakt treten können, muss ihnen stets der Samba-Active-Directory-Server als DNS-Server mitgeteilt werden. Im vorliegenden Fall haben wir den Internet-Router sowohl als Gateway, als auch als DNS-Forward-Server eingetragen. Standardmäßig ist bei Internet-Routern heute auch ein DHCP-Server aktiv. Dieser muss fortan den Samba-Server als primären DNS-Server verteilen. Wie dies genau erfolgt, kann in der Dokumentation des jeweiligen Internet-Routers nachgeschlagen werden. Lässt sich im Internet-Router der lokal zu nutzende DNS-Server nicht konfigurieren, so kann man den Samba-AD-Server entweder manuell in der DNS-Konfiguration der Clients festlegen. Siehe dazu z.B.: * Ubuntu Desktops: [https://phoenixnap.com/kb/ubuntu-dns-nameservers DNS-Server manuell unter Ubuntu-Desktop festlegen] (Bebilderte Anleitung) {en} * Windows 10 Clients: [https://www.netzwelt.de/anleitung/174587-windows-10-so-aendert-dns-server-internetverbindung.html Windows 10: So ändert ihr den DNS-Server für eure Internetverbindung] (Bebilderte Anleitung) {de} {{{#!vorlage Hinweis Windows Rechner lassen sich erst der Version ''"Professionell"'' zu einer Domäne hinzufügen! }}} Alternativ kann man einen eigenen [:ISC-DHCPD: DHCP-Server] einrichten und darüber den DNS-Server verteilen. Speziell für Samba siehe dazu auch: * [https://wiki.samba.org/index.php/Configure_DHCP_to_update_DNS_records Configure DHCP to update DNS records] {en} ==Weitere administrative Aufgabenstellungen== Die administrativen Tätigkeiten, die mit dem Betriebe eines Active Directory Servers einhergehen sind vielseitig und können einen erheblichen Komplexitäts-Grad erreichen. Daher sollte man sich insbesondere mit den folgenden Themen auseinandersetzen: * Planung einer auf das Anwendungsszenario zugeschnittenen Domänen-Struktur * [https://docs.microsoft.com/de-de/windows-server/identity/ad-ds/plan/designing-the-logical-structure Entwerfen der logischen Struktur] {de} * Administrations-Werkzeuge: * [https://manpages.ubuntu.com/manpages/focal/man8/samba-tool.8.html samba-tool] {en} * [https://docs.microsoft.com/de-de/windows-server/remote/remote-server-administration-tools Windows Remote Server Administration Tools] {de} * Administration von Benutzern, Gruppen * [https://wiki.samba.org/index.php/Administer_Unix_Attributes_in_AD_using_samba-tool_and_ldb-tools Administer Unix Attributes in AD using samba-tool and ldb-tools] {en} * [https://wiki.samba.org/index.php/Maintaining_Unix_Attributes_in_AD_using_ADUC Maintaining Unix Attributes in AD using ADUC] {en} * Hinzufügen von Client-Computern und Servern * [https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member Setting up Samba as a Domain Member] {en} * [https://c-nergy.be/blog/?p=16025 Join Ubuntu 20.10 Desktop in Active Directory Domain during Setup] {en} * __Beachte dazu aber unbedingt:__ * [https://bugs.launchpad.net/ubuntu/+source/sssd/+bug/1934997/comments/5 BUG 1934997 auf Launchpad] {en} * [https://bugzilla.redhat.com/show_bug.cgi?id=1839805] {en} * [post:9307567: Ubuntu User können sich nicht am Ubuntu samba AD-DC anmelden] {de} * [https://wiki.samba.org/index.php/Joining_a_Windows_Client_or_Server_to_a_Domain Joining a Windows Client or Server to a Domain] {en} * Vertrautmachen mit dem Rechtesystem in einer Windows-Domäne * [https://wiki.samba.org/index.php/Setting_up_a_Share_Using_Windows_ACLs Setting up a Share Using Windows ACLs] {en} * Administration des DNS-Servers * [https://wiki.samba.org/index.php/DNS_Administration DNS Administration] * Einrichtung einer Sicherung für den Active Directory Server * [https://wiki.samba.org/index.php/Back_up_and_Restoring_a_Samba_AD_DC Back up and Restoring a Samba AD DC] {en} * Erörterung sicherheitsrelevanter Aspekte * [https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Kompendium_Einzel_PDFs_2021/06_APP_Anwendungen/APP_2_2_Active_Directory_Edition_2021.pdf?__blob=publicationFile&v=2 BSI-Kompendium Active Directory] {de} * Vertrautmachen mit dem Protokollierungssystem * [https://wiki.samba.org/index.php/Configuring_Logging_on_a_Samba_Server Configuring Logging on a Samba Server] {en} * [https://wiki.samba.org/index.php/Setting_up_Audit_Logging Setting up Audit Logging] {en} =Links= ==Quellen extern== * [https://wiki.samba.org/index.php/Main_Page Samba-Wiki] {en} - Das original Samba-Wiki * [https://wiki.samba.org/index.php/Samba_Release_Planning Samba Release Planning] {en} - Über den Zyklus der Veröffentlichung und die Unterstützung von Samba-Versionen * [https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller Setting up Samba as an Active Directory Domain Controller] {en} - Anleitung zur Installation eines Active Directory Domain Controllers im Samba-Wiki * [https://wiki.samba.org/index.php/Active_Directory_Naming_FAQ Active Directory Naming FAQ] {en} - Häufige Fragen und Antworten zur Namensgebung im Active Directory * [https://wiki.samba.org/index.php/Setting_up_RFC2307_in_AD Setting up RFC2307 in AD] {en} - RFC2307 im Active Directory nutzen * [https://wiki.samba.org/index.php/Samba_Internal_DNS_Back_End Samba Internal DNS Back End] {en} - Der Samba-interne DNS-Server * [https://wiki.samba.org/index.php/Time_Synchronisation Time Synchronisation] {en} - Zeitsynchronisierung * [https://wiki.samba.org/index.php/Samba_AD_DC_Port_Usage Samba AD DC Port Usage] {en} - Übersicht über die von einem AD-Server genutzen Ports * [https://wiki.samba.org/index.php/Testing_the_DNS_Name_Resolution Testing the DNS Name Resolution] {en} - Ordnungsgemäße Funktion des DNS-Servers prüfen * [https://wiki.samba.org/index.php/AD_Schema_Version_Support AD Schema Version Support] {en} - Die von Samba unterstüzten Active Directory Schemata * [https://wiki.samba.org/index.php/Samba_AD_DC_Troubleshooting Samba AD DC Troubleshooting] {en} - Samba Active Directory Domain Controller - Problemlösungen * [https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc786468(v=ws.10)?redirectedfrom=MSDN Passwords must meet complexity requirements] {en} - MS Technet - Standard Passwort-Komplexitäts-Richtlinie im Active Direcoty ==Weiterführende Informationen== * [https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Grundschutz/Kompendium_Einzel_PDFs_2021/06_APP_Anwendungen/APP_2_2_Active_Directory_Edition_2021.pdf?__blob=publicationFile&v=2 BSI-Kompendium Active Directory] {de} - Grundschutz-Kompendium des BSI zum Active Directory (Stand: 2021) * [https://wiki.samba.org/index.php/DNS_Administration DNS Administration] {en} - Administration des DNS-Servers * [https://wiki.samba.org/index.php/Configure_DHCP_to_update_DNS_records Configure DHCP to update DNS records] {en} - DNS-Einträge mittels DHCP-Server aktuallisieren * [https://wiki.samba.org/index.php/Generating_Keytabs Generating Keytabs] {en} - Erstellen einer Kerberos Keytab-Datei * [Howto:Samba-AD-Server_unter_Ubuntu_20.04/Tipps:] - Ergänzungen zu diesem Howto * [tag:Howto:Howto-Liste] {Übersicht} - Übersicht aller Howto-Artikel #tag: Howto, Server, Samba, AD, Active Direcotry, Domain Controller, Provisionierung, DNS Server, NTP Server, Installation, Ubuntu