Samba sichern und absichern
Version vom 18. Oktober 2026, 16:51 Uhr von Thomas.will (Diskussion | Beiträge) (Neue Seite (Kurs Linux - Samba))
| 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:
- Alle alten DCs stoppen.
- 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
- 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
- Sichern Sie die Domäne online und offline. Wie groß sind die Dateien, was steckt darin? tar tjf …
- Prüfen Sie die Datenbank mit samba-tool dbcheck --cross-ncs.
- Zeigen Sie mit testparm, welche Sicherheitseinstellungen aktiv sind.
- Legen Sie ein eigenes Admin-Konto an und nehmen Sie es in Domain Admins auf.
- Schalten Sie das JSON-Audit ein, melden Sie sich einmal richtig und einmal falsch an und suchen Sie beide Ereignisse.
Vertiefung
- Stellen Sie die Domäne aus der Sicherung auf einem neuen Rechner sdc3 wieder her, in einem abgetrennten Netz.
- Heben Sie den Functional Level auf 2016 an.
- Legen Sie eine Authentication Policy an: samba-tool domain auth policy create --name=… --audit
- 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
- Samba Backup · Samba-tool dbcheck · Kerberos Sicherheitsaspekte · Domaincontroller Sicherheitsaspkete · Samba Password Brute-Force Aufgabe
- Samba Neuerungen
- https://wiki.samba.org/index.php/Back_up_and_Restoring_a_Samba_AD_DC