SSH-Login mit 2-Faktor-Authentifizierung absichern

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Zu den essentiellen Managementwerkzeugen bei Linux-basierten Servern gehört eine SSH-Shell. Diese lässt sich durch Verwendung von ausschließlich zertifikatsbasierter Anmeldemethoden und Deaktivieren von Root-Logins bereits gut absichern. Darüberhinaus kann mit einem zweiten Faktor, z.B. ein einmal gültiges Passwort (OTP), ein zusätzlicher Anmeldeschritt eingefügt werden. Dadurch lässt sich die Sicherheit weiter erhöhen, denn ein erfolgreicher Login beruht nun auf einem Merkmal das man besitzt (das Zertifikat) und einem Merkmal das man weiß (das Einmalpasswort). Dieser Artikel zeigt wie Sie unter Ubuntu Server 18.04 LTS den SSH Login mit Google Authenticator als zweiten Faktor absichern.

Vorbereitungmaßnahmen

Konfigurieren Sie vorab an Ihrem Ubuntu Server 18.04 LTS System eine zertifikatsbasierte Authentifizierung mittels eines OpenSSH Public Keys.

libpam-google-authenticator

Der nachfolgende Abschnitt gibt einen Einblick in das Google-Authenticator PAM-Modul, zeigt die Installation und Konfiguration auf.

Integration

Die 2-Faktor-Authentifizierung wird als PAM-Modul (Pluggable Authentication Module) an das Betriebssystem angebunden.

Installation

Die Installation des PAM-Moduls von Google Authenticator gelingt unter Debian und Ubuntu via apt, es ist jeweils in den offiziellen Paketquellen enthalten.

$ sudo apt install libpam-google-authenticator

Kompatibilität

Die Authentifizierung per PAM-Modul ist mit einer Vielzahl an Systemdiensten kompatibel. Vielerlei Schritte können somit per google-authenticator zusätzlich abgesichert werden. Der list-Befehl angewendet auf das Verzeichnis /etc/pam.d/ liefert die derzeit kompatiblen Dienste und Werkzeuge bei einer Grundinstallation von Ubuntu 18.04 LTS Server.

$ ls -m /etc/pam.d/
atd, chfn, chpasswd, chsh, common-account, common-auth, common-password,
common-session, common-session-noninteractive, cron, login, newusers, other,
passwd, polkit-1, runuser, runuser-l, sshd, su, sudo, systemd-user, vmtoolsd

Konfiguration

Nachdem das PAM-Modul installiert wurde, kann es wie folgt dargestellt inititialisiert und konfiguriert werden.

  1. Führen Sie Google Authenticator auf der Konsole aus:
    $ google-authenticator
  2. Do you want authentication tokens to be time-based (y/n)
    y, es werden damit TOTP Tokens erstellt (zeitbasierte Einmalpasswörter)
    n, dadurch werden HOTP Tokens erstellt (zählerbasierte Einmalpasswörter)
    In diesem Fall wird per y das TOTP Verfahren verwendet
  3. Es wird nun ein QR-Code auf der SSH-Konsole angezeigt
    Scannen Sie diesen Code mit einer kompatiblen App auf Ihrem Smartphone
    Kopieren und verwahren Sie die unterhalb aufgelisteten Keys sicher.
    Mit den emergency scratch codes kann Login ohne OTP durchgeführt werden.
  4. Aktualisieren Sie die Datei .google_authenticator mit diesen Informationen.
    Tippen Sie dazu y ein.
  5. Bestätigen Sie sämtliche anderen Fragen mit y, oder bei gewünschten abweichenden Einstellungen mit n.

Integration in die SSH-Anmeldung

Das Google Authenticator PAM-Modul ist fertig konfiguriert, nun können Dienste wie der SSH-Daemon angepasst werden, um eine 2-Faktor-Authentifizierung darüber zu ermöglichen.

Wichtiger Hinweis: Falls die die folgende Konfiguration über eine SSH-Sitzung vornehmen, unbedingt die bestehende Sitzung aufrechterhalten und mit einer zweiten Sitzung parallel testen. Bei einer Fehlkonfiguration am SSH Daemon können Sie sich nicht mehr anmelden.

Anpassungen in /etc/pam.d/sshd

Öffnen Sie die Datei /etc/pam.d/sshd mit einem Editor. Kommentieren Sie die Zeile @include common-auth aus und fügen Sie die Zeile zum Google Authenticator unten an. Speichern und schließen Sie anschließend die Datei wieder.

[...]
# Standard Un*x authentication.
#@include common-auth
[...]
# Google Authenticator
auth required pam_google_authenticator.so

sshd_config anpassen

In der Konfigurationsdatei /etc/ssh/sshd_config können Sie nun ChallengeResponseAuthentication auf yes setzen.

[...]
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication yes
[...]

Ebenso prüfen Sie ob UsePAM auf yes steht und ergänzen Sie darunter die Zeile AuthenticationMethods. In diesem Beispiel wird eine Authentifizierung per Public-Key und Einmalpasswort akzeptiert.[1]

[...]
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
[...]

SSH Daemon neustarten

Sie können nun den SSH Daemon neustarten, um die Konfiguration zu aktivieren.

$ sudo systemctl restart sshd.service

Anmeldevorgang

Die nachfolgenden Screenshots zeigen den Anmeldevorgang an einer SSH-Shell mit aktivierter 2-Faktor-Authentifizierung durch Google Authenticator.

Einzelnachweise


Foto Thomas Niedermeier.jpg

Autor: Thomas Niedermeier

Thomas Niedermeier arbeitet im Product Management Team von Thomas-Krenn. Er absolvierte an der Hochschule Deggendorf sein Studium zum Bachelor Wirtschaftsinformatik. Seit 2013 ist Thomas bei Thomas-Krenn beschäftigt und kümmert sich unter anderem um OPNsense Firewalls, das Thomas-Krenn-Wiki und Firmware Sicherheitsupdates.

Icon-Twitter.png 

Das könnte Sie auch interessieren

Ausführbare SSH-Kommandos per authorized keys einschränken
OpenSSH Public Key Authentifizierung unter Ubuntu
SSH Login unter Debian mit fail2ban absichern