Passwörter und 2FA
Starke Passwortrichtlinien und Zwei-Faktor-Authentifizierung (2FA) sind zwei wichtige Verteidigungslinien zum Schutz von Benutzerkonten. In diesem Artikel wird erläutert, wie Sie Kennwortrichtlinien konfigurieren und die Zwei-Faktor-Authentifizierung unter Ubuntu 26.04 aktivieren.
Richtlinien für starke Passwörter
Installieren von Tools zur Passwortqualitätsprüfung
sudo apt install libpam-pwqualityKonfigurieren von Passwortrichtlinien
Bearbeiten Sie die Konfigurationsdatei für die Passwortqualität:
sudo nano /etc/security/pwquality.confAllgemeine Konfigurationsoptionen:
# Minimum password length
minlen = 12
# Minimum number of character classes (uppercase, lowercase, digits, special characters)
minclass = 3
# Minimum number of uppercase letters
ucredit = -1
# Minimum number of lowercase letters
lcredit = -1
# Minimum number of digits
dcredit = -1
# Minimum number of special characters
ocredit = -1
# Number of characters that must differ from the old password
difok = 5
# Prevent using the username as part of the password
usercheck = 1
# Limit consecutive identical characters
maxrepeat = 3
# Limit consecutive characters of the same class
maxclassrepeat = 4
# Reject palindrome passwords
palindrome = 1
# Reject common dictionary words
dictcheck = 1Konfigurieren von Kennwortablaufrichtlinien
# Edit global settings
sudo nano /etc/login.defs# Maximum password age (days)
PASS_MAX_DAYS 90
# Minimum password age (days)
PASS_MIN_DAYS 7
# Password expiration warning days
PASS_WARN_AGE 14
# Minimum password length
PASS_MIN_LEN 12Festlegen von Passwortrichtlinien für bestimmte Benutzer
# Set maximum password age to 90 days
sudo chage -M 90 username
# Set minimum password age to 7 days
sudo chage -m 7 username
# Set 14-day expiration warning
sudo chage -W 14 username
# Immediately require password change
sudo chage -d 0 username
# View user password policy
sudo chage -l usernamePasswortverlauf (Verhinderung der Wiederverwendung alter Passwörter)
Bearbeiten Sie die PAM-Konfiguration:
sudo nano /etc/pam.d/common-passwordSuchen Sie die Zeile mit pam_unix.so und fügen Sie den Parameter remember hinzu:
password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt remember=12Dadurch wird verhindert, dass Benutzer eines ihrer letzten 12 Passwörter wiederverwenden.
Passwortverwaltungstools
Befehlszeilen-Passwort-Manager: bestanden
# Install
sudo apt install pass
# Initialize (requires a GPG key)
gpg --gen-key
pass init "your-gpg-id"
# Add a password
pass insert email/gmail
pass insert -m server/production # multi-line mode
# View a password
pass email/gmail
# Generate a random password
pass generate web/newsite 20
# List all passwords
pass ls
# Search
pass find gmailVerwendung von KeePassXC
# Install
sudo apt install keepassxc
# Or use snap
sudo snap install keepassxcKeePassXC ist ein funktionsreicher grafischer Passwort-Manager, der Folgendes unterstützt:
- Verschlüsselter Passwort-Datenbankspeicher
- Passwörter automatisch ausfüllen
- TOTP-Zwei-Faktor-Authentifizierung
- Browser-Integration
- SSH Agentenintegration
Google Authenticator (TOTP 2FA)
Installation und Initialisierung
# Install the PAM module
sudo apt install libpam-google-authenticator
# Run initialization as a regular user
google-authenticatorEmpfohlene Auswahl während der Initialisierung:
Do you want authentication tokens to be time-based (y/n) y
# Choose y for time-based tokens (TOTP)
# A QR code will be displayed -- scan it with an authenticator app
# Recommended apps: Google Authenticator, Authy, Microsoft Authenticator, FreeOTP
Do you want me to update your "/home/user/.google_authenticator" file? (y/n) y
Do you want to disallow multiple uses of the same authentication token? (y/n) y
# Choose y to prevent token replay
By default, a new token is generated every 30 seconds.
Do you want to change the size of the time skew window? (y/n) n
Do you want to enable rate-limiting? (y/n) y
# Choose y to limit attempt frequencySpeichern Sie unbedingt die angezeigten Notfall-Backup-Codes.
Aktivieren von 2FA für die lokale Anmeldung
sudo nano /etc/pam.d/common-authAm Ende der Datei hinzufügen:
auth required pam_google_authenticator.so nullokDer Parameter nullok ermöglicht Benutzern, die 2FA nicht konfiguriert haben, die normale Anmeldung. Entfernen Sie es, sobald alle Benutzer eingerichtet sind.
Aktivieren von 2FA für die SSH-Anmeldung
# Edit PAM SSH configuration
sudo nano /etc/pam.d/sshdHinzufügen:
auth required pam_google_authenticator.soBearbeiten Sie die Serverkonfiguration SSH:
sudo nano /etc/ssh/sshd_config# Enable keyboard-interactive authentication
KbdInteractiveAuthentication yes
# Require key + TOTP dual authentication
AuthenticationMethods publickey,keyboard-interactiveStarten Sie SSH neu:
sudo systemctl restart ssh2FA für Sudo aktivieren
sudo nano /etc/pam.d/sudoNach @include common-auth hinzufügen:
auth required pam_google_authenticator.soDies erfordert bei jeder Verwendung von sudo einen Bestätigungscode.
Hardware-Sicherheitsschlüssel (FIDO2/U2F)
Unterstützte Geräte
Ubuntu 26.04 unterstützt FIDO2/U2F-Sicherheitsschlüssel, wie zum Beispiel:
- YubiKey 5-Serie
- Google Titan-Sicherheitsschlüssel
- Feitian ePass FIDO
- SoloKeys
Installation und Konfiguration
# Install the PAM U2F module
sudo apt install libpam-u2f
# Install management tools
sudo apt install pamu2fcfgRegistrieren eines Sicherheitsschlüssels
# Create configuration directory
mkdir -p ~/.config/Yubico
# Register the first key (insert the security key and touch it)
pamu2fcfg > ~/.config/Yubico/u2f_keys
# Register a backup key (append mode)
pamu2fcfg -n >> ~/.config/Yubico/u2f_keysSicherheitsschlüssel für sudo aktivieren
sudo nano /etc/pam.d/sudoVor @include common-auth hinzufügen:
auth sufficient pam_u2f.soAktivieren des Sicherheitsschlüssels für die Anmeldung
sudo nano /etc/pam.d/gdm-passwordHinzufügen:
auth required pam_u2f.soAktivieren des Sicherheitsschlüssels für SSH
OpenSSH 8.2+ unterstützt nativ FIDO2-Schlüssel:
# Generate a FIDO2 SSH key
ssh-keygen -t ed25519-sk -C "your_email@example.com"
# Or use a resident key (does not require the corresponding hardware key for the public key in .ssh/authorized_keys on the server)
ssh-keygen -t ed25519-sk -O resident -C "your_email@example.com"
# Deploy the public key to the server
ssh-copy-id -i ~/.ssh/id_ed25519_sk.pub user@serverKonfiguration des PAM-Authentifizierungsflusses
PAM-Kontrollflags verstehen
| Flagge | Beschreibung |
|---|---|
required | Muss gelingen; prüft weiterhin andere Module auf Fehler |
requisite | Muss gelingen; kehrt bei einem Fehler sofort zurück |
sufficient | Gibt den Erfolg sofort weiter; prüft weiterhin auf Fehler |
optional | Erfolg oder Misserfolg haben keinen Einfluss auf das Endergebnis |
Beispiele für Multi-Faktor-Authentifizierungskombinationen
Passwort + TOTP:
# /etc/pam.d/common-auth
auth required pam_unix.so
auth required pam_google_authenticator.soPasswort + Sicherheitsschlüssel (Sicherheitsschlüssel optional):
auth required pam_unix.so
auth sufficient pam_u2f.so
auth required pam_google_authenticator.soRichtlinie zur Kontosperrung
Konfigurieren der Sperre bei fehlgeschlagener Anmeldung
sudo nano /etc/pam.d/common-authAm Anfang der Datei hinzufügen:
auth required pam_faillock.so preauth silent deny=5 unlock_time=900
auth [default=die] pam_faillock.so authfail deny=5 unlock_time=900sudo nano /etc/pam.d/common-accountHinzufügen:
account required pam_faillock.soParameterbeschreibungen:
deny=5: Sperre nach 5 Fehlernunlock_time=900: Für 900 Sekunden (15 Minuten) sperren
Verwalten des Sperrstatus
# View a user's failed attempts
sudo faillock --user username
# Unlock a user
sudo faillock --user username --reset
# View all locked users
sudo faillockBest Practices
- Verwenden Sie Passwörter mit mindestens 12 Zeichen, einschließlich Großbuchstaben, Kleinbuchstaben, Ziffern und Sonderzeichen.
- Verwenden Sie für jeden Dienst ein anderes Passwort und verwenden Sie einen Passwort-Manager.
- Aktivieren Sie 2FA für alle Dienste, die es unterstützen.
- Backup-Codes und Wiederherstellungsschlüssel sicher speichern.
- Registrieren Sie mehrere Sicherheitsschlüssel als Backups.
- Ändern Sie Passwörter regelmäßig, aber nicht zu häufig (alle 90 Tage ist ausreichend).
- Überwachen Sie fehlgeschlagene Anmeldedatensätze, um Brute-Force-Angriffe frühzeitig zu erkennen.