Linux Sicherheit - Authentifizierung

Aus Xinux Wiki
Version vom 11. November 2025, 18:40 Uhr von Thomas.will (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Linux Sicherheit - Authentifizierung

  • Die Authentifizierung ist das Herzstück jeder System­sicherheit. Sie stellt sicher, dass nur berechtigte Benutzer Zugriff auf das System erhalten. Fehlerhafte oder schwache Authentifizierung ist einer der häufigsten Gründe für unbefugte Zugriffe und erfolgreiche Angriffe.*

Grundlagen

  • Ziel der Authentifizierung ist die zweifelsfreie Identifizierung eines Benutzers.
  • Das klassische Linux-Modell nutzt Benutzername und Passwort, verwaltet über PAM (Pluggable Authentication Modules).
  • Authentifizierungsdaten liegen in /etc/shadow, Hash-geschützt und nur für root lesbar.
  • Erweiterte Verfahren wie Zwei-Faktor-Authentifizierung (2FA) oder Public-Key-Verfahren erhöhen die Sicherheit erheblich.

Benutzerkonten und Passwortverwaltung

  • cat /etc/passwd
  • sudo cat /etc/shadow
  • passwd alice
  • chage -l alice
  • /etc/passwd enthält Basisinformationen zu Benutzern, jedoch keine Passwörter.
  • /etc/shadow speichert Passwort-Hashes, Ablaufdaten und Sperrstatus.
  • Passwörter sollten nie im Klartext gespeichert oder weitergegeben werden.
  • Empfehlung: Mindestlänge 12 Zeichen, Kombination aus Groß-/Kleinbuchstaben, Zahlen und Sonderzeichen.

Passwortregeln und Ablaufpolitik

  • cat /etc/login.defs
  • grep PASS_MAX_DAYS /etc/login.defs
  • chage -M 90 alice
  • Mit /etc/login.defs lassen sich globale Passwortanforderungen festlegen.
  • PASS_MAX_DAYS: maximale Gültigkeit eines Passworts (z. B. 90 Tage).
  • PASS_MIN_LEN: Mindestlänge.
  • chage erlaubt individuelle Kontrolle pro Benutzer.

Passwort-Hashverfahren prüfen

  • grep root /etc/shadow
  • Linux verwendet standardmäßig SHA-512-Hashes ($6$), ältere Verfahren wie MD5 ($1$) oder DES sind unsicher.
  • Nur Hashes mit $6$ oder höherer Sicherheitsstufe sind akzeptabel.
  • Konfiguration erfolgt über PAM: /etc/pam.d/common-password oder /etc/login.defs.

Kontosperrung und Fehlversuche (PAM Tally / Faillock)

  • faillock --user alice
  • faillock --reset
  • Das PAM-Modul „pam_faillock“ sperrt Konten nach mehrfachen Fehlversuchen.
  • Eintrag in /etc/security/faillock.conf z. B.:
deny = 5
unlock_time = 900
fail_interval = 600
  • Nach 5 falschen Logins wird das Konto für 15 Minuten gesperrt.

Zwei-Faktor-Authentifizierung (2FA)

  • apt install libpam-google-authenticator -y
  • google-authenticator
  • Der Benutzer generiert einen QR-Code und speichert den geheimen Schlüssel in einer Authenticator-App.
  • Anpassung der PAM-Konfiguration:
auth required pam_google_authenticator.so nullok
  • Beim Login ist nun zusätzlich zum Passwort ein Einmalcode nötig.
  • 2FA sollte für alle privilegierten Konten (root, sudo, SSH) verpflichtend sein.

SSH-Authentifizierung

  • ls -l ~/.ssh/
  • ssh-keygen -t ed25519 -C "alice@host"
  • cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
  • Public-Key-Authentifizierung ist sicherer als Passwort-Login.
  • SSH-Server konfigurieren:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
  • Nach Änderungen:
  • systemctl restart ssh
  • Verwendete Schlüssel regelmäßig prüfen und alte Schlüssel entfernen.

Zentralisierte Authentifizierung (LDAP, Kerberos)

  • In größeren Umgebungen werden Benutzer über zentrale Verzeichnisdienste verwaltet.
  • LDAP oder Kerberos bieten einheitliche Anmeldung über mehrere Systeme hinweg.
  • Beispielpakete:
  • apt install libnss-ldap libpam-ldap nscd
  • Konfiguration über /etc/ldap.conf und /etc/nsswitch.conf.
  • Sicherheitshinweis: Kommunikation immer per StartTLS oder LDAPS verschlüsseln.

Kontosicherheit und Sperrung

  • passwd -l benutzer
  • usermod --expiredate 1 gastkonto
  • Inaktive oder temporäre Konten sofort sperren.
  • Systemkonten (z. B. daemon, nobody) dürfen sich niemals interaktiv anmelden.
  • SSH-Shell für solche Konten auf /usr/sbin/nologin setzen.

Authentifizierungs-Logs auswerten

  • journalctl -u ssh
  • ausearch -m USER_LOGIN
  • grep "authentication failure" /var/log/auth.log
  • Alle Authentifizierungsversuche werden über PAM oder journald protokolliert.
  • Ungewöhnliche Loginzeiten, IP-Wechsel oder häufige Fehlversuche sind Warnzeichen.

Quick Checklist

  • Root-Login über SSH verbieten.
  • Passwortauthentifizierung deaktivieren, stattdessen SSH-Keys verwenden.
  • Passwortrichtlinien konsequent durchsetzen.
  • 2FA aktivieren, mindestens für Administratoren.
  • Login-Versuche begrenzen und fehlgeschlagene Anmeldungen überwachen.
  • Inaktive Benutzerkonten sperren oder löschen.
  • Authentifizierungslogs regelmäßig prüfen und archivieren.

Zusammenfassung

  • Eine starke Authentifizierungsstrategie verhindert die meisten unautorisierten Zugriffe.
  • Schwache Passwörter, inaktive Konten und offener SSH-Zugang sind Hauptangriffsziele.
  • Best Practice: Public-Key-Login, 2FA, restriktive PAM-Regeln und lückenlose Überwachung.