Einleitung
Passwortsicherheit ist eine kritische Komponente zum Schutz von Systemen und Daten vor unbefugtem Zugriff. Schwache oder kompromittierte Passwörter sind einer der häufigsten Einfallstore für Angreifer. Die Implementierung einer robusten Passwortrichtlinie ist eine grundlegende Sicherheitspraxis.
In diesem Lab lernen Sie, wie Sie mehrere Best Practices für die Passwortsicherheit auf einem Linux-System implementieren. Sie konfigurieren Regeln für die Passwortkomplexität, richten Multi-Faktor-Authentifizierung (MFA) ein, verstehen die Rolle von Passwortmanagern, erzwingen die Passwortrotation und lernen die Bedeutung der Benutzerschulung kennen.
Anforderungen an die Passwortkomplexität verstehen
In diesem Schritt erzwingen Sie Regeln für die Passwortkomplexität, um sicherzustellen, dass Benutzer starke Passwörter erstellen. Ein starkes Passwort enthält typischerweise eine Mischung aus Großbuchstaben, Kleinbuchstaben, Zahlen und Sonderzeichen und hat eine ausreichende Länge. Wir verwenden das Pluggable Authentication Module (PAM) pam_pwquality, um dies zu erreichen.
Zuerst installieren wir das Paket libpam-pwquality, das die notwendigen Werkzeuge bereitstellt.
sudo apt-get install libpam-pwquality -y
Nun müssen Sie den PAM-Stack konfigurieren, um dieses Modul für Passwortänderungen zu verwenden. Wir bearbeiten die Datei /etc/pam.d/common-password. Diese Datei enthält die gemeinsame Konfiguration für die Passwortverwaltung.
Öffnen Sie die Datei mit dem nano-Editor:
sudo nano /etc/pam.d/common-password
Suchen Sie die Zeile, die pam_unix.so enthält, und fügen Sie die folgende Zeile darüber ein. Dies stellt sicher, dass die Qualitätsprüfung erfolgt, bevor das Passwort tatsächlich vom pam_unix-Modul geändert wird.
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
Lassen Sie uns diese Optionen aufschlüsseln:
retry=3: Der Benutzer hat 3 Versuche, ein konformes Passwort einzugeben.minlen=12: Die minimale Passwortlänge beträgt 12 Zeichen.ucredit=-1: Erfordert mindestens einen Großbuchstaben.lcredit=-1: Erfordert mindestens einen Kleinbuchstaben.dcredit=-1: Erfordert mindestens eine Ziffer.ocredit=-1: Erfordert mindestens ein Sonderzeichen (andere).
Ihre Datei sollte ähnlich wie diese aussehen (einige Zeilen können abweichen):
## /etc/pam.d/common-password
...
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
password [success=1 default=ignore] pam_unix.so obscure sha512
...
Drücken Sie Strg+X, dann Y und Enter, um die Datei zu speichern und nano zu beenden.
Testen wir nun die neue Richtlinie. Wir versuchen, das Passwort für den Benutzer labex zu ändern.
passwd
Geben Sie zuerst Ihr aktuelles Passwort ein (Sie können einfach Enter drücken, da für labex kein Passwort festgelegt ist). Versuchen Sie dann, ein schwaches Passwort wie password festzulegen. Das System sollte es ablehnen und eine Fehlermeldung anzeigen, da es die Komplexitätsanforderungen nicht erfüllt.
(current) UNIX password:
New password:
BAD PASSWORD: The password is shorter than 12 characters
Retype new password:
Sorry, passwords do not match.
passwd: Authentication token manipulation error
passwd: password unchanged
Versuchen Sie es nun erneut mit einem starken Passwort wie Labex!P@ssw0rd. Dieses Passwort sollte akzeptiert werden.
Sie haben die Anforderungen an die Passwortkomplexität auf Ihrem System erfolgreich konfiguriert.
Multi-Faktor-Authentifizierung implementieren
In diesem Schritt lernen Sie, wie Sie die Multi-Faktor-Authentifizierung (MFA) implementieren. MFA fügt eine zweite Sicherheitsebene hinzu, indem Benutzer aufgefordert werden, zwei oder mehr Verifizierungsfaktoren bereitzustellen, um Zugriff zu erhalten. Wir verwenden das Google Authenticator PAM-Modul, um die zeitbasierte Einmalpasswort (TOTP)-Authentifizierung hinzuzufügen.
Installieren Sie zuerst das Paket libpam-google-authenticator.
sudo apt-get install libpam-google-authenticator -y
Als Nächstes müssen Sie eine MFA-Konfiguration für Ihren Benutzer generieren. Führen Sie den folgenden Befehl als Benutzer labex aus (nicht mit sudo).
google-authenticator
Der Befehl stellt Ihnen eine Reihe von Fragen. Für dieses Lab beantworten Sie diese wie folgt:
Do you want authentication tokens to be time-based (y/n): Drücken SieyundEnter.- Sie sehen einen QR-Code, einen geheimen Schlüssel und Notfall-Scratch-Codes. In einer realen Umgebung würden Sie den QR-Code mit einer Authentifizierungs-App auf Ihrem Telefon scannen. Für dieses Lab fahren wir einfach fort.
Do you want me to update your "/home/labex/.google_authenticator" file? (y/n): Drücken SieyundEnter. Dies speichert Ihren geheimen Schlüssel.Do you want to disallow multiple uses of the same authentication token?: Drücken SieyundEnter.Do you want to increase the time-skew window?: Drücken SienundEnter.Do you want to enable rate-limiting for the authentication module?: Drücken SieyundEnter.
Dadurch wird eine .google_authenticator-Datei in Ihrem Home-Verzeichnis (/home/labex) erstellt.
Konfigurieren wir nun SSH, um dieses MFA-Token zu verwenden. Zuerst müssen wir PAM anweisen, es für SSH-Sitzungen zu verlangen.
Öffnen Sie die Datei /etc/pam.d/sshd:
sudo nano /etc/pam.d/sshd
Fügen Sie die folgende Zeile am Ende der Datei hinzu:
auth required pam_google_authenticator.so
Speichern und schließen Sie die Datei (Strg+X, Y, Enter).
Als Nächstes müssen wir die Challenge-Response-Authentifizierung in der SSH-Serverkonfiguration aktivieren.
Öffnen Sie /etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config
Suchen Sie die Zeile ChallengeResponseAuthentication no und ändern Sie sie zu yes. Wenn die Zeile mit einem # auskommentiert ist, entfernen Sie das #.
## /etc/ssh/sshd_config
...
ChallengeResponseAuthentication yes
...
Speichern und schließen Sie die Datei. In einem realen System würden Sie den SSH-Dienst neu starten. In dieser containerisierten Umgebung wird das Neustarten von Diensten wie sshd jedoch nicht unterstützt. Die wichtigste Erkenntnis ist das Verständnis der Konfigurationsschritte, die zur Aktivierung von MFA für SSH erforderlich sind.
Passwort-Manager verwenden
In diesem Schritt besprechen wir die Bedeutung von Passwort-Managern. Die Wiederverwendung von Passwörtern über verschiedene Dienste hinweg stellt ein erhebliches Sicherheitsrisiko dar. Wenn ein Dienst kompromittiert wird, können Angreifer das geleakte Passwort verwenden, um auf Ihre anderen Konten zuzugreifen. Ein Passwort-Manager hilft Ihnen, eindeutige, starke Passwörter für jeden Dienst zu generieren, zu speichern und zu verwalten.
KeePassXC ist ein beliebter, quelloffener und kostenloser Passwort-Manager, der Ihre Passwörter in einer sicheren, verschlüsselten Datenbank speichert. Obwohl es sich um eine grafische Anwendung handelt, werden wir sie installieren, um zu verstehen, wie solche Werkzeuge in den Arbeitsablauf eines Benutzers integriert werden.
Lassen Sie uns KeePassXC mit apt-get installieren.
sudo apt-get install keepassxc -y
Nach Abschluss der Installation können Sie dies überprüfen, indem Sie die Existenz des Befehls prüfen.
which keepassxc
Sie sollten die folgende Ausgabe sehen, die anzeigt, dass die Anwendung installiert und im Pfad Ihres Systems verfügbar ist.
/usr/bin/keepassxc
In einer Desktop-Umgebung würden Sie KeePassXC starten, eine neue verschlüsselte Datenbank mit einem starken Master-Passwort erstellen und beginnen, Ihre Anmeldedaten für verschiedene Websites und Dienste hinzuzufügen. Die Anwendung kann auch sehr starke Passwörter für Sie automatisch generieren. Das Kernprinzip besteht darin, sich ein starkes Master-Passwort zu merken, um den Manager zu entsperren, und den Manager alle Ihre anderen komplexen Passwörter verwalten zu lassen.
Passwörter regelmäßig rotieren
In diesem Schritt lernen Sie, wie Sie die Passwortrotation, auch bekannt als Passwortalterung, erzwingen. Das regelmäßige Ändern von Passwörtern begrenzt das Zeitfenster für einen Angreifer, der möglicherweise ein Passwort gestohlen hat.
Unter Linux können Sie systemweite Richtlinien für die Passwortalterung in der Datei /etc/login.defs festlegen. Sie können auch Richtlinien für einzelne Benutzer mit dem Befehl chage festlegen. Wir konzentrieren uns auf den Befehl chage.
Zuerst zeigen wir die aktuellen Einstellungen für die Passwortalterung für den Benutzer labex an.
sudo chage -l labex
Sie sehen eine Ausgabe, die dieser ähnelt, wobei die meisten Werte auf never gesetzt sind.
Last password change : May 20, 2024
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
Die Einstellung Maximum number of days between password change ist auf 99999 gesetzt, was effektiv bedeutet, dass das Passwort niemals abläuft. Ändern wir dies, um alle 90 Tage eine Passwortänderung zu erzwingen.
Verwenden Sie den Befehl chage mit der Option -M, um das maximale Alter festzulegen.
sudo chage -M 90 labex
Überprüfen Sie nun erneut die Einstellungen, um die Änderung zu bestätigen.
sudo chage -l labex
Die Ausgabe sollte nun anzeigen, dass die maximale Anzahl von Tagen 90 beträgt. Das Datum Password expires wird ebenfalls entsprechend aktualisiert.
Last password change : May 20, 2024
Password expires : Aug 18, 2024
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
Sie haben erfolgreich eine Passwortrotationsrichtlinie für einen Benutzer konfiguriert.
Benutzer über Passwort-Hygiene aufklären
In diesem Schritt konzentrieren wir uns auf das menschliche Element der Sicherheit. Technische Kontrollen sind unerlässlich, aber sie sind am effektivsten, wenn Benutzer auch eine gute Passwort-Hygiene praktizieren. Die Aufklärung von Benutzern über bewährte Sicherheitspraktiken ist eine entscheidende, nicht-technische Kontrolle.
Hier sind einige wichtige Punkte der guten Passwort-Hygiene:
- Passwörter nicht wiederverwenden: Verwenden Sie für jedes Konto ein eindeutiges Passwort.
- Passwörter nicht teilen: Teilen Sie Ihr Passwort niemals mit jemandem, auch nicht mit IT-Mitarbeitern.
- Vorsicht vor Phishing: Seien Sie misstrauisch gegenüber E-Mails oder Nachrichten, die nach Ihren Anmeldedaten fragen.
- Bildschirm sperren: Sperren Sie Ihren Computer immer, wenn Sie ihn verlassen.
- Passphrasen verwenden: Eine lange Passphrase wie
correct-horse-battery-staplekann sicherer und leichter zu merken sein als ein kurzes, komplexes Passwort wieJ%7d*fQ!.
Um die Erstellung eines benutzerorientierten Richtliniendokuments zu simulieren, erstellen wir in unserem Projektverzeichnis eine einfache Textdatei, die diese Regeln umreißt.
Erstellen Sie zuerst die Datei und fügen Sie die erste Regel mit dem Befehl echo und der Ausgabeumleitung > hinzu.
echo "1. Do not share your password with anyone." > ~/project/password_policy.txt
Fügen wir nun mit dem Append-Operator >> zwei weitere Regeln zur Datei hinzu.
echo "2. Use a unique password for each service." >> ~/project/password_policy.txt
echo "3. Beware of phishing emails asking for credentials." >> ~/project/password_policy.txt
Zeigen Sie abschließend den Inhalt Ihres neuen Richtliniendokuments mit dem Befehl cat an.
cat ~/project/password_policy.txt
Sie sollten die folgende Ausgabe sehen:
1. Do not share your password with anyone.
2. Use a unique password for each service.
3. Beware of phishing emails asking for credentials.
Diese einfache Übung zeigt, wie Sicherheitspolicen dokumentiert und geteilt werden können. In einer realen Organisation wäre dies Teil eines umfassenderen Programms zur Sicherheitsaufklärung.
Zusammenfassung
In diesem Lab haben Sie erfolgreich mehrere wichtige Best Practices für die Passwortsicherheit in einer Linux-Umgebung implementiert. Ein mehrschichtiger Ansatz, der technische Kontrollen mit Benutzerschulungen kombiniert, bietet die stärkste Verteidigung gegen unbefugten Zugriff.
Sie haben gelernt, wie Sie:
- Die Erstellung starker Passwörter erzwingen, indem Sie die Komplexitätsanforderungen mit
pam_pwqualitykonfigurieren. - Eine kritische zweite Sicherheitsebene hinzufügen, indem Sie die Multi-Faktor-Authentifizierung (MFA) mit
pam_google_authenticatoreinrichten. - Die Rolle von Passwortmanagern wie KeePassXC bei der Erstellung und Speicherung eindeutiger, starker Passwörter verstehen.
- Passwortrotationsrichtlinien mit dem Befehl
chageimplementieren, um das Risiko kompromittierter Anmeldedaten zu begrenzen. - Die Bedeutung von Benutzerschulungen und der Dokumentation von Sicherheitsrichtlinien für eine gute Passwort-Hygiene erkennen.
Durch die Anwendung dieser Praktiken können Sie die Sicherheitslage jedes von Ihnen verwalteten Systems erheblich verbessern.


