Linux Sicherheit - Authentifizierung: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= Linux Sicherheit - Authentifizierung = *Die Authentifizierung ist das Herzstück jeder System­sicherheit. Sie stellt sicher, dass nur berechtigte Benutzer Z…“)
 
 
Zeile 24: Zeile 24:
 
:*Mit /etc/login.defs lassen sich globale Passwortanforderungen festlegen.
 
:*Mit /etc/login.defs lassen sich globale Passwortanforderungen festlegen.
 
:*PASS_MAX_DAYS: maximale Gültigkeit eines Passworts (z. B. 90 Tage).
 
:*PASS_MAX_DAYS: maximale Gültigkeit eines Passworts (z. B. 90 Tage).
:*PASS_MIN_LEN: Mindestl*
+
:*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.:
 +
<pre>
 +
deny = 5
 +
unlock_time = 900
 +
fail_interval = 600
 +
</pre>
 +
:*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:
 +
<pre>
 +
auth required pam_google_authenticator.so nullok
 +
</pre>
 +
:*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:
 +
<pre>
 +
PermitRootLogin no
 +
PasswordAuthentication no
 +
PubkeyAuthentication yes
 +
</pre>
 +
:*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.

Aktuelle Version vom 11. November 2025, 18:40 Uhr

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.