Samba sichern und absichern

Aus Xinux Wiki
Version vom 18. Oktober 2026, 16:51 Uhr von Thomas.will (Diskussion | Beiträge) (Neue Seite (Kurs Linux - Samba))
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen
Kurs Lab Rechner Domäne
Linux - Samba Linux - Samba Lab sdc1, sdc2 samba.it2XX.int

Einfach erklärt

  • Der DC ist der wichtigste Rechner im Netz: Wer ihn übernimmt, hat alle Konten.
  • Sichern heißt hier: die ganze Domäne so aufheben, dass man sie nach einem Totalausfall wiederherstellen kann.
  • Absichern heißt: die Angriffsfläche klein halten, schwache Verfahren abschalten, mitschreiben, was passiert.
  • Gegen den Ausfall eines DCs hilft kein Backup, sondern ein zweiter DC. Das Backup ist für den Fall, dass alle DCs kaputt sind.

Sichern

Online-Sicherung

  • Holt eine Kopie der Domäne von einem laufenden DC, als root:
mkdir -p /root/backup
samba-tool domain backup online --targetdir=/root/backup --server=sdc1 -U administrator
ls -l /root/backup

Offline-Sicherung

  • Sichert die Dateien des lokalen DCs, mit Sperren, im laufenden Betrieb:
samba-tool domain backup offline --targetdir=/root/backup
  • Liegt die Datenbank im LMDB-Format, braucht es das Paket lmdb-utils.

Was in der Sicherung steckt

  • Alles, auch die Passwort-Hashes aller Benutzer. Die Datei so schützen wie den DC selbst: nur root, verschlüsselt ablegen, nicht auf eine Freigabe.
  • Mit samba-tool domain backup online --no-secrets ohne Passwörter, z.B. für Tests.
  • Vor jeder Sicherung: samba-tool dbcheck --cross-ncs. Eine Sicherung enthält auch alle Fehler.

Wiederherstellen

  • Nur, wenn alle DCs verloren sind:
  1. Alle alten DCs stoppen.
  2. Auf einem neuen Rechner mit neuem Namen wiederherstellen:
samba-tool domain backup restore --backup-file=/root/backup/samba-backup-….tar.bz2 --newservername=sdc3 --targetdir=/var/lib/samba-restore
samba -s /var/lib/samba-restore/etc/smb.conf
  1. Die alten DCs nicht einfach wieder einschalten, sondern neu als DC beitreten lassen: samba-tool domain join … DC --server=sdc3
  • Einen einzelnen kaputten DC repariert man nicht mit restore, sondern entfernt ihn und lässt ihn neu beitreten.

Absichern

Was Samba 4.22 schon von Haus aus macht

Einstellung Standard Bedeutung
server min protocol SMB2_02 kein SMB 1
ntlm auth ntlmv2-only kein NTLMv1
ldap server require strong auth yes keine einfache Anmeldung ohne TLS
server signing auf dem DC Pflicht SMB-Pakete werden signiert
  • Nachsehen: testparm -sv | grep -E "min protocol|ntlm auth|strong auth|server signing"

Passwörter und Konten

samba-tool domain passwordsettings show
samba-tool domain passwordsettings set --min-pwd-length=12 --account-lockout-threshold=5
samba-tool user list --hide-disabled
samba-tool group listmembers "Domain Admins"
  • Für Admins strengere Regeln mit einem PSO, siehe Passwortregeln.
  • Administrator nicht für den Alltag benutzen. Eigene Admin-Konten anlegen, z.B. adm-max, und Administrator nur für Notfälle.
  • Regelmäßig prüfen, wer in Domain Admins, Enterprise Admins und Schema Admins ist.

Functional Level 2016

  • Neue Domänen starten mit 2008R2. Für Authentication Policies, Silos und Kerberos FAST braucht es 2016:
samba-tool domain level show
  • Umstellen: in der smb.conf aller DCs ad dc functional level = 2016, neu starten, dann:
samba-tool domain schemaupgrade --schema=2019
samba-tool domain functionalprep --function-level=2016
samba-tool domain level raise --domain-level=2016 --forest-level=2016
  • Vorher sichern. Ein höherer Level lässt sich nicht zurücknehmen.

Mitschreiben

  • Samba kann Anmeldungen und Änderungen im Verzeichnis als JSON protokollieren. Das kann ein SIEM direkt einlesen.
  • In der smb.conf unter [global]:
log level = 1 auth_json_audit:3 dsdb_json_audit:5 dsdb_password_json_audit:5 dsdb_group_json_audit:5
  • systemctl restart samba-ad-dc
  • Die Einträge stehen in /var/log/samba/log.samba. Jede Zeile mit JSON ist ein Ereignis:
Klasse protokolliert
auth_json_audit jede Anmeldung, erfolgreich oder nicht, mit Benutzer, Adresse und Verfahren
dsdb_json_audit Änderungen im Verzeichnis
dsdb_password_json_audit Passwortänderungen und -zurücksetzungen
dsdb_group_json_audit Änderungen an Gruppenmitgliedschaften
  • Weiter ins SIEM: über journald und Remote Logging, siehe Systemd Baustein Journal, oder mit dem Agenten des SIEM direkt aus der Logdatei.
  • Interessant für das SOC: Anmeldungen mit NTLM, viele Fehlversuche, neue Mitglieder in Domain Admins.

Netz

  • Der DC gehört in ein eigenes Netz, Clients erreichen nur die nötigen Ports, siehe Offene Ports.
  • Kein Internet-Zugriff vom DC aus, außer DNS-Forwarder und Zeit.
  • Keine anderen Dienste auf dem DC: kein Webserver, kein Dateiserver für Benutzer.

Stolperfallen

  • Backup auf einer Freigabe: Jeder, der die Freigabe lesen kann, hat alle Passwort-Hashes.
  • Restore auf einen alten DC-Namen: schlägt fehl, der Name existiert in der Domäne noch.
  • Alten DC nach Restore wieder einschalten: zwei Domänen mit gleichem Namen und verschiedenem Stand.
  • Functional Level auf nur einem DC umgestellt: Alle DCs brauchen ad dc functional level = 2016 in der smb.conf.
  • log level zu hoch: Die Logdatei wächst schnell. Logrotate und Speicherplatz im Blick behalten.

Übungen

Grundübungen

  1. Sichern Sie die Domäne online und offline. Wie groß sind die Dateien, was steckt darin? tar tjf …
  2. Prüfen Sie die Datenbank mit samba-tool dbcheck --cross-ncs.
  3. Zeigen Sie mit testparm, welche Sicherheitseinstellungen aktiv sind.
  4. Legen Sie ein eigenes Admin-Konto an und nehmen Sie es in Domain Admins auf.
  5. Schalten Sie das JSON-Audit ein, melden Sie sich einmal richtig und einmal falsch an und suchen Sie beide Ereignisse.

Vertiefung

  1. Stellen Sie die Domäne aus der Sicherung auf einem neuen Rechner sdc3 wieder her, in einem abgetrennten Netz.
  2. Heben Sie den Functional Level auf 2016 an.
  3. Legen Sie eine Authentication Policy an: samba-tool domain auth policy create --name=… --audit
  4. Werten Sie die JSON-Zeilen mit jq aus: Wer hat sich heute wie oft falsch angemeldet?

Fehlersuche

1. samba-tool domain backup restore meldet
already exists

Der Name bei --newservername gibt es in der gesicherten Domäne schon. Einen neuen Namen wählen.

2. Nach dem Umstellen des Functional Level startet ein DC nicht mehr richtig

Auf diesem DC fehlt ad dc functional level = 2016 in der smb.conf. Alle DCs brauchen die Zeile, bevor der Level angehoben wird.

3. Im Log tauchen viele Anmeldungen mit NTLM auf, obwohl alle Clients in der Domäne sind

Clients greifen per IP-Adresse statt Namen zu, oder ein SPN fehlt. Für jeden Fall die Adresse und das Ziel im JSON nachsehen.

Vertiefung

Weiter