Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Authentifizierung und Konfiguration von OpenPAM

Konfiguration von sshd

Mithilfe von OpenPAM kann eine Multifaktor-Authentifizierung (MFA) realisiert werden. Hierfür wird gegenwärtig der Google Authenticator als OpenPAM-Modul (kurz: PAM-Modul) bereitgestellt. Dieser implementiert insbesondere zeitbasierte Einmal-Passwörter (TOTP) gemäß RFC 6238.

Um OpenPAM für die SSH-Server-Authentifizierung zu verwenden, sind einige Änderungen in der sshd-Konfigurationsdatei erforderlich. Zunächst muss die PAM-Authentifizierung aktiviert werden, indem die Option UsePAM auf "yes" gesetzt wird.

Um OpenPAM wirklich anzusprechen, sind Änderungen/Ergänzungen bei der AuthenticationMethods Option notwendig. Neben den bekannten Optionswerten "password" und "publickey" ist nun auch der Optionswert "keyboard-interactive" verwendbar, hinter dem sich eine Authentifizierung durch OpenPAM verbirgt. Im Gegensatz zu OpenSSH-Implementierungen in der offenen Welt wird beim Optionswert "password" die Authentifizierung immer von OpenSSH selbst und nicht von OpenPAM durchgeführt.

Konfiguration von OpenPAM

PAM steht für Pluggable Authentication Module, was auf Deutsch so viel wie "Steckbare Authentifizierungsmodul" bedeutet. Es handelt sich um eine flexibel konfigurier- und erweiterbare Methode zur Authentifizierung in Unix-ähnlichen Betriebssystemen.

OpenPAM ist eine Implementierung des PAM-Mechanismus aus der offenen Welt. OpenPAM ermöglicht die Integration verschiedener Authentifizierungsmethoden basierend auf den Anforderungen der Organisation. Hierbei kann es sich um die Verwendung von Benutzername und Passwort in Verbindung mit Einmal-Passwörtern handeln, um eine Multifaktor-Authentifizierung zu erreichen. Denkbar ist auch die Erfassung von Logging- oder Accounting-Informationen durch entsprechend zu erstellende PAM-Module.

Die OpenPAM-Konfiguration erfolgt in der Datei /etc/pam.conf​​​ oder in einer Konfigurationsdatei unter /etc/pam.d/*​​​. Dabei können verschiedene PAM-Module für unterschiedliche Authentifizierungsschritte verwendet werden, z. B. pam_unix​​​ für Passwortauthentifizierung (auf der gleichen Grundlage wie die "password"-Authentifizierung des OpenSSH Servers), pam_google_authenticator​​​ für Einmalpasswort-basierte Authentifizierung usw.

Authentifizierungsschritte

Wenn der OpenSSH Server eine Authentifizierung des Benutzers gemäß den Einstellungen der AuthenticationMethods Option durchführt, werden die folgenden Schritte durchgeführt:

  1. Die hinter den Optionswerten "password" und "publickey" stehenden Authentifizierungsvorgänge werden vom OpenSSH Server wie bisher selbst durchgeführt.
  2. Beim Optionswert "keyboard-interactive" sendet der OpenSSH Server eine Anfrage an OpenPAM.
  3. OpenPAM prüft seine Konfiguration und ermittelt, welche PAM-Module für die Authentifizierung verwendet werden sollen. Diese werden der Reihe nach aufgerufen, bis das Authentifizierungsergebnis endgültig feststeht, das dann von OpenPAM an den OpenSSH Server zurückgeschickt wird.

OpenPAM Konfigurationsdatei

Die OpenPAM-Konfigurationsdatei, pam.conf​, liegt wie die OpenSSH-Konfigurationsdateien im Verzeichnis /etc. Sie legt fest, welche PAM-Module für bestimmte Authentifizierungsschritte verwendet werden sollen. Jeder Eintrag in der Konfigurationsdatei entspricht einem PAM-Modul und beschreibt, wann und wie es eingesetzt werden soll und ob gegebenenfalls die nachfolgenden PAM-Module noch aufgerufen werden, oder nicht, weil das Ergebnis des Moduls schon das Gesamtergebnis eindeutig bestimmt.

Syntax

Die Konfigurationsdatei besteht aus Zeilen, wobei jede Zeile einen PAM-Modul-Eintrag darstellt, es sei denn, es ist eine mit '#' beginnende Kommentarzeile. Die Syntax lautet wie folgt:

[ServiceName] [Type] ControlFlag ModulePath [ModuleOptions]
  • ​ServiceName​​: Der Name des Dienstes oder der Anwendung, für die die Konfiguration gilt, in unserem Fall ist das immer sshd.
  • Type: Gibt an, wofür ein PAM-Modul verwendet werden soll (siehe nachfolgende Beschreibung).
  • ​ControlFlag​​: Eine Option, die das Verhalten des PAM-Moduls steuert (siehe nachfolgende Beschreibung).
  • ​ModulePath​​: Der relative oder absolute Dateipfad des zu verwendenden PAM-Moduls (relativ zu /opt/TCP-IP-SV/openssh/lib, /usr/lib oder /usr/local/lib).
  • ​ModuleOptions​​: Optionale Parameter oder Konfigurationsoptionen für das PAM-Modul.

Type

  • account: Erledigt die Verwaltung von Konten, die nicht der Authentifizierung dienen.
  • auth: Authentifiziert Benutzer und gewährt Privilegien.
  • password: Aktualisiert Benutzerauthentifizierungstoken.
  • session: Führt Aktionen vor/nach dem Benutzer aus.

ControlFlag

  • required: Fehlschlag führt zu Gesamtfehlschlag, es werden aber dennoch die nachfolgenden Module aufgerufen.
  • requisite: Fehlschlag führt dazu, dass OpenPAM sofort einen Fehlschlag an OpenSSH berichtet.
  • sufficient: Erfolg bricht die Ausführung weiterer OpenPAM-Module ab, wenn vorher ein "required"-Modul fehlschlug, wird ein Fehlschlag an OpenSSH berichtet, sonst ein Erfolg.
  • optional: Erfolg oder Fehlschlag des Moduls ist nur relevant, wenn es das einzig verwendete PAM-Modul für die betreffende ServiceName/Type-Kombination ist.

Beispiele

PAM Konfiguration mit Passwort

In diesem Beispiel wird das PAM-Modul pam_unix​​ für die Passwortauthentifizierung bei einem SSH-Login verwendet.

sshd_config:

AuthenticationMethods keyboard-interactive

pam.conf:

sshd account optional pam_unix.so
sshd password optional pam_unix.so
sshd session optional pam_unix.so
sshd auth required pam_unix.so

PAM Konfiguration mit Passwort und Token

Hier wird das PAM-Modul pam_google_authenticator​​ für eine Zwei-Faktor-Authentifizierung hinzugefügt. Dieses Beispiel zeigt außerdem die Verwendung von mehreren PAM-Modulen für unterschiedliche Authentifizierungsschritte.

sshd_config:

AuthenticationMethods keyboard-interactive

pam.conf:

sshd account optional pam_unix.so
sshd password required pam_unix.so
sshd session optional pam_unix.so
sshd auth required pam_unix.so
sshd auth required pam_google_authenticator.so

PAM Konfiguration mit Public Key und Token

Um statt Passwörtern öffentliche Schlüssel zusammen mit OpenPAM verwenden zu können, ist sshd_config anzupassen.

sshd_config:

AuthenticationMethods publickey,keyboard-interactive

pam.conf:

sshd account optional pam_unix.so
sshd password required pam_unix.so
sshd session optional pam_unix.so
sshd auth required pam_google_authenticator.so

PAM Konfiguration mit Public Key / Passwort und Token

In diesem Beispiel kann alternativ zum Public Key auch ein Passwort verwendet werden, wobei das Passwort vom OpenSSH Server selbst erfragt wird. Das Einmal-Passwort wird vor dem Benutzer-Passwort erfragt.

sshd_config:

AuthenticationMethods keyboard-interactive,publickey keyboard-interactive,password

pam.conf:

sshd account optional pam_unix.so
sshd password required pam_unix.so
sshd session optional pam_unix.so
sshd auth required pam_google_authenticator.so

PAM Konfiguration mit Public Key, Passwort und Token (3-Faktor-Authentifizierung)

Dies ist ein extremes Beispiel, um zu zeigen, wie man alle möglichen Authentifizierungsschritte durchlaufen kann. In der ersten Variante wird das Benutzer-Passwort vom OpenSSH Server selbst erfragt.

sshd_config:

AuthenticationMethods publickey,password,keyboard-interactive

pam.conf:

sshd account optional pam_unix.so
sshd password required pam_unix.so
sshd session optional pam_unix.so
sshd auth required pam_google_authenticator.so

In der folgenden Variante wird das Benutzer-Passwort vom PAM-Modul pam_unix erfragt, im Ergebnis sollte aber kein Unterschied sein.

sshd_config:

AuthenticationMethods publickey,keyboard-interactive

pam.conf:

sshd account optional pam_unix.so
sshd password required pam_unix.so
sshd session optional pam_unix.so
sshd auth required pam_unix.so
sshd auth required pam_google_authenticator.so

Hinweise

  • Die Reihenfolge der PAM-Module in der Konfigurationsdatei ist wichtig. Sie werden in der angegebenen Reihenfolge durchlaufen.
  • Die verwendeten PAM-Module müssen auf dem System vorhanden und korrekt konfiguriert sein.
  • Überprüfen Sie die Dokumentation der einzelnen PAM-Module für ihre spezifischen Konfigurationsoptionen.

Dieses Beispiel verdeutlicht die grundlegende Funktionalität und Konfiguration der OpenPAM-Konfigurationsdatei. Für detailliertere Informationen zu erweiterten Konfigurationsmöglichkeiten empfehlen wir die offizielle Dokumentation von OpenPAM in /opt/TCP-IP-SV/openssh/readme/TCP-IP-SV.openssh (text/pam.conf.5.txt bzw. die korrespondierende Datei in html/ oder pdf/).

Unix PAM Modul

Das Modul pam_unix ist für die Authentifizierung mittels Password zuständig. Es bietet weitere Konfigurationsmöglichkeiten über die ModuleOptions in der pam.conf.

Einrichten des PAM-Moduls

  • nullok: Erlaubt Nutzern, sich mit einem leeren Password anzumelden.

Google Authenticator PAM Modul

Das HMAC-basierte Einmal-Passwort (HOTP) ist in RFC 4226 und das zeitbasierte Einmal-Passwort (TOTP) in RFC 6238 spezifiziert.

Einrichten des PAM-Moduls

Das Google Authenticator PAM Modul bietet weitere Konfigurationsmöglichkeiten an, welche über ModuleOptions in der pam.conf eingestellt werden können.

  • authtok_prompt=<prompt>: Überschreibt den standardmäßige Aufforderungstext (bei Sätzen mit Leerzeichen muss die gesamte Option in eckige Klammern geschrieben werden).

  • debug: Aktiviert ausführlichere Protokollmeldungen im Syslog.

  • noskewadj: Deaktiviert die Zeittoleranz beim Tokenvergleich.

  • no_increment_hotp: Den Zähler für fehlgeschlagene HOTP-Versuche nicht erhöhen. Falls HOTP verwendet wird, so ist diese Option notwendig, um einen Ausschluss des Users durch Brute-Force zu vermeiden.

  • nullok: Erlaubt den Nutzern, sich ohne OTP anzumelden, wenn noch kein OTP eingerichtet wurde.

  • echo_verification_code: Lässt den 2FA Token bei der Eingabe im Terminal anzeigen.

  • grace_period=<seconds>: Falls vorhanden und ungleich Null, kann eine Frist angegeben werden, in der kein zweiter Verifizierungscode angefordert wird (Vergleich auf IP und Zeitstempel).

Benutzereinrichtung durchführen

  1. Führen Sie die ausführbare Datei "google-authenticator" aus, um einen neuen Geheimschlüssel in Ihrem Benutzerverzeichnis zu erstellen. Die Konfigurationseinstellungen werden unter ~/.google_authenticator gespeichert.

  2. Bei jeder Anmeldung an Ihrem System werden Sie nun aufgefordert, Ihren TOTP-Code (zeitbasiertes Einmal-Passwort) oder HOTP (zählerbasiertes Einmal-Passwort) einzugeben, abhängig von den Optionen, die "google-authenticator" übergeben wurden.

  3. Während des anfänglichen Rollout-Prozesses ist es möglich, dass bisher nicht alle Benutzer einen 2FA Schlüssel erstellt haben. Um dennoch 2FA nutzen zu können, ist die Option nullok nötig.

pam.conf:

sshd auth required pam_google_authenticator.so nullok

  

&pagelevel(4)&pagelevel