Einführung
In der Systemadministration und Cybersicherheit ist eine Sicherheits-Baseline ein standardisierter Mindestsicherheitskonfigurationslevel für ein System oder Netzwerk. Die Festlegung von Baselines ist ein grundlegender Schritt zur Härtung von Systemen, zur Reduzierung der Angriffsfläche und zur Gewährleistung einer konsistenten Sicherheitslage innerhalb einer Organisation. Compliance-Kontrollen sind die Mechanismen und Verfahren, die verwendet werden, um zu überprüfen, ob diese Baselines eingehalten und aufrechterhalten werden.
In diesem Lab erhalten Sie praktische Erfahrungen mit diesen Konzepten auf einem Linux-System. Sie lernen, wie Sie eine einfache Sicherheits-Baseline für neue Benutzerkonten definieren, überprüfen, ob die Baseline korrekt angewendet wird, und den Linux Audit Daemon (auditd) konfigurieren, um kritische Konfigurationsdateien auf unbefugte Änderungen zu überwachen. Dieser Prozess ist entscheidend für die Aufrechterhaltung der Systemintegrität und die Erfüllung regulatorischer Compliance-Anforderungen.
Am Ende dieses Labs werden Sie in der Lage sein:
- Systemweite Standardeinstellungen für Benutzer zu ändern.
- Neue Benutzer zu erstellen, die einer definierten Sicherheits-Baseline entsprechen.
- Die Compliance mit Standard-Linux-Befehlen zu überprüfen.
auditdzu konfigurieren, um Änderungen an kritischen Dateien zu überwachen.- Audit-Logs nach Sicherheitsereignissen zu durchsuchen und zu überprüfen.
Eine einfache Linux-Sicherheits-Baseline für Benutzer-Standardwerte definieren
In diesem Schritt definieren Sie eine einfache Sicherheits-Baseline, indem Sie Standard-Passwortrichtlinien für alle neu auf dem System erstellten Benutzer festlegen. Wir werden die Datei /etc/login.defs bearbeiten, die diese Standardeinstellungen steuert.
Zuerst öffnen wir die Konfigurationsdatei mit nano und sudo-Berechtigungen, da es sich um eine systemweite Datei handelt.
sudo nano /etc/login.defs
Suchen Sie im nano-Editor nach den folgenden drei Parametern, die sich auf die Passwort-Alterung beziehen, und ändern Sie deren Werte. Sie können Strg + W verwenden, um innerhalb von nano nach Text zu suchen.
PASS_MAX_DAYS: Die maximale Anzahl von Tagen, die ein Passwort verwendet werden darf. Wir setzen diesen Wert auf90.PASS_MIN_DAYS: Die minimale Anzahl von Tagen, die zwischen Passwortänderungen zulässig sind. Wir setzen diesen Wert auf7.PASS_WARN_AGE: Die Anzahl der Tage, an denen vor dem Ablauf eines Passworts eine Warnung ausgegeben wird. Wir setzen diesen Wert auf14.
Suchen Sie diese Zeilen und ändern Sie sie wie folgt:
#
## Password aging controls:
#
## PASS_MAX_DAYS Maximum number of days a password may be used.
## PASS_MIN_DAYS Minimum number of days allowed between password changes.
## PASS_WARN_AGE Number of days warning is given before a password expires.
#
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14
Nachdem Sie die Änderungen vorgenommen haben, speichern Sie die Datei und beenden Sie nano, indem Sie Strg + X, dann Y und schließlich Enter drücken.
Sie haben nun eine einfache Sicherheits-Baseline für Passwortrichtlinien auf Ihrem System etabliert. Jeder neue Benutzer, der ab diesem Zeitpunkt erstellt wird, übernimmt diese Einstellungen.
Baseline-Compliance mit Systembefehlen überprüfen
In diesem Schritt überprüfen Sie, ob die in den vorherigen Schritt definierten Baselines korrekt angewendet werden. Der direkteste Weg, dies zu tun, ist die Erstellung eines neuen Benutzers und die Überprüfung seiner Kontoeigenschaften.
Zuerst erstellen wir einen neuen Benutzer namens compliance_user. Der Befehl useradd wendet automatisch die Standardeinstellungen aus /etc/login.defs an. Das Flag -m stellt sicher, dass für den Benutzer ein Home-Verzeichnis erstellt wird.
sudo useradd -m compliance_user
Dieser Befehl erzeugt bei Erfolg keine Ausgabe. Nun können wir die Passwort-Alterungseinstellungen für unseren neuen Benutzer mit dem Befehl chage (change age) und dem Flag -l (list) überprüfen.
sudo chage -l compliance_user
Sie sollten eine Ausgabe ähnlich der folgenden sehen. Beachten Sie, wie die Werte für "Maximum number of days between password change", "Minimum number of days between password change" und "Number of days of warning before password expires" mit der Baseline übereinstimmen, die wir in /etc/login.defs festgelegt haben.
Last password change : Aug 05, 2025
Password expires : Nov 03, 2025
Password inactive : never
Account expires : never
Minimum number of days between password change : 7
Maximum number of days between password change : 90
Number of days of warning before password expires : 14
Diese Ausgabe bestätigt, dass unsere Baseline wirksam ist und das System mit unserer neuen Richtlinie für neue Benutzer konform ist.
Auditd für die Überwachung von Systemaufrufen konfigurieren
In diesem Schritt konfigurieren Sie den Linux Audit Daemon (auditd), um unsere Basis-Konfigurationsdatei /etc/login.defs auf Änderungen zu überwachen. Dies ist eine kritische Compliance-Kontrolle, da sie ein Protokoll darüber liefert, wer die Datei wann geändert hat.
Der auditd-Dienst verwendet eine Reihe von Regeln, um zu bestimmen, welche Ereignisse protokolliert werden sollen. Wir werden eine neue Regel hinzufügen, um nach Schreib- oder Attributänderungsoperationen auf unserer Datei zu suchen.
Wir werden unsere Regel zur Datei /etc/audit/rules.d/audit.rules hinzufügen. Die Verwendung von echo und tee ist eine sichere Methode, um eine Zeile an eine Systemdatei anzuhängen.
Führen Sie den folgenden Befehl aus, um die Audit-Regel hinzuzufügen:
sudo echo "-w /etc/login.defs -p wa -k login_defs_changes" | sudo tee -a /etc/audit/rules.d/audit.rules
Lassen Sie uns diese Regel aufschlüsseln:
-w /etc/login.defs: Gibt den zu überwachenden Dateipfad an.-p wa: Legt die zu auditierenden Berechtigungen fest.wsteht für Schreibzugriff undafür Attributänderungen.-k login_defs_changes: Weist diesen Audit-Ereignissen einen benutzerdefinierten Schlüssellogin_defs_changeszu, was die spätere Suche erleichtert.
Damit die neue Regel wirksam wird, müssen Sie den auditd-Dienst neu starten.
sudo systemctl restart auditd
Nun überwacht auditd aktiv /etc/login.defs auf jegliche Modifikationen.
Audit-Protokolle zur Richtliniendurchsetzung generieren und überprüfen
In diesem Schritt testen Sie die Audit-Regel, indem Sie ein Ereignis auslösen und anschließend die generierten Protokolle überprüfen. Dies zeigt, dass Ihre Compliance-Kontrolle wie erwartet funktioniert.
Um die Audit-Regel auszulösen, müssen wir die Datei /etc/login.defs ändern. Eine einfache Möglichkeit, dies zu tun, ohne den Inhalt zu ändern, ist die Verwendung des Befehls touch, der die Zugriffs- und Änderungszeitstempel der Datei aktualisiert. Diese Aktion wird von auditd als Attributänderung erkannt.
sudo touch /etc/login.defs
Diese Aktion sollte ein Ereignis im Audit-Protokoll erstellt haben. Die Protokolle werden in /var/log/audit/audit.log gespeichert, können aber sehr umfangreich sein. Eine bessere Methode, um bestimmte Ereignisse zu finden, ist die Verwendung des Befehls ausearch mit dem Schlüssel, den wir im vorherigen Schritt definiert haben.
Suchen wir nach allen Ereignissen, die mit unserem Schlüssel login_defs_changes gekennzeichnet sind:
sudo ausearch -k login_defs_changes
Die Ausgabe enthält einen oder mehrere Datensätze, die sich auf den touch-Befehl beziehen. Sie wird ungefähr so aussehen (Zeitstempel und IDs können variieren):
----
time->Tue Dec 12 08:35:15 2023
type=PROCTITLE msg=audit(1702370115.321:101): proctitle=746F756368002F6574632F6C6F67696E2E64656673
type=PATH msg=audit(1702370115.321:101): item=0 name="/etc/login.defs" inode=131409 dev=00:1e mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(1702370115.321:101): cwd="/home/labex/project"
type=SYSCALL msg=audit(1702370115.321:101): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=7ffc62e212d0 a2=90800 a3=0 items=1 ppid=1102 pid=1125 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=3 comm="touch" exe="/usr/bin/touch" key="login_defs_changes"
Suchen Sie nach key="login_defs_changes" am Ende des SYSCALL-Datensatzes. Dies bestätigt, dass auditd das Änderungsereignis für unsere kritische Konfigurationsdatei erfolgreich protokolliert hat, was beweist, dass unsere Überwachungskontrolle aktiv und wirksam ist.
Zusammenfassung
Herzlichen Glückwunsch zum Abschluss dieses Labs! Sie haben erfolgreich den grundlegenden Prozess der Anwendung einer Sicherheits-Baseline und der Implementierung einer Compliance-Kontrolle auf einem Linux-System durchlaufen.
In diesem Lab haben Sie gelernt, wie Sie:
- Eine Sicherheits-Baseline für Benutzerpasswortrichtlinien definieren, indem Sie
/etc/login.defsändern. - Überprüfen, ob die Baseline für neue Benutzer mit dem Befehl
chagekorrekt durchgesetzt wird. - Den Linux Audit Daemon (
auditd) konfigurieren, um eine kritische Konfigurationsdatei auf Änderungen zu überwachen. - Audit-Protokolle mit
ausearchauslösen und überprüfen, um zu bestätigen, dass Ihre Überwachungskontrolle funktioniert.
Diese Fähigkeiten sind grundlegend für jeden Systemadministrator oder Sicherheitsexperten, der für die Härtung von Systemen, die Aufrechterhaltung der Sicherheitsposition und die Einhaltung von Compliance-Standards wie den CIS Benchmarks oder NIST-Richtlinien verantwortlich ist. Durch die Festlegung klarer Baselines und die kontinuierliche Überwachung auf Abweichungen können Sie die Sicherheit und Integrität Ihrer IT-Infrastruktur erheblich verbessern.



