SSH-Login mit 2-Faktor-Authentifizierung absichern
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.
- Führen Sie Google Authenticator auf der Konsole aus:
- $ google-authenticator
- 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
- 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.
- Aktualisieren Sie die Datei .google_authenticator mit diesen Informationen.
- Tippen Sie dazu y ein.
- 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
- ↑ sshd_config — OpenSSH SSH daemon configuration file (manpages.ubuntu.com)
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. |