SSH Zugang per Multifaktor Authentifizierung absichern

In der Standardkonfiguration von SSH erfolgt die Anmeldung am System per Benutzername/Passwort. Insbesondere bei Systemen, die per SSH über das Internet erreichbar sind ist dies ein schwerwiegendes Sicherheitsproblem, da Benutzername/Passwort keinen ausreichenden Schutz vor Angriffen bietet.

Abhilfe schafft hier die Implementierung von Multifaktor Authentifizierung (MFA) per Einmal-Passwort (OTP) mit dem Google Authenticator Modul, das auf dem jeweiligen Linux Betriebssytem installiert werden kann.

Da fast alle Befehlt im sudo-Modus ausgeführt werden, aktiviert man diesen am Besten im Vorfeld:

sudo -i
Installation

Installation unter Ubuntu Linux und Debian Linux

apt-get install libpam-google-authenticator

Installation unter CentOS und Fedora Linux

yum install google-authenticator

Installation auf Arch Linux

yaourt -S libpam-google-authenticator
Konfiguration

Ist das Google Authenticator Modul installiert, startet man die Konfiguration des OTP Tokens mit:

google-authenticator

Während der Konfiguration werden folgende Codes/Keys konfiguriert:

  1. QR Code / URL: URL zum OTP Token QR Code für die Einrichtung der Smartphone App mit Hilfe der Kamera.
  2. Secret Key: Der Secret Key kann alternativ zum QR Code für die Einrichtung des OTP Tokens in der Smartphone App genutzt werden.
  3. Verification Code:
  4. Emergency Codes: Die Emergency Codes werden benötigt, um im Falle eines Verlusts des Tokens die Token Konfiguration zurücksetzen zu können.
Do you want authentication tokens to be time-based (y/n) y
https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/foo@barOsecret%0815CODE
Your new secret key is: <Secret Key>
Your verification code is <Verification Code>
Your emergency scratch codes are:
  <Emergency-Code 1>
  <Emergency-Code 2>
  <Emergency-Code 3>
  <Emergency-Code 4>
  <Emergency-Code 5>

Do you want me to update your "/home/username/.google_authenticator" file (y/n) y

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) n

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y

Bevor nach der Konfiguration nun MFA auch aktiviert wird, sollte der OTP Token in die Smartphone App importiert und getestet werden.

Aktivierung

Ist der OTP Token konfiguriert, muss die Nutzung von MFA noch aktiviert werden. Dazu wird die Datei /etc/pam.d/sshd angepasst.

nano /etc/pam.d/sshd

Wichtig zu wissen ist, dass die Reihenfolge der Einträge in der Datei die Reihenfolge der Anmeldeverfahren widerspiegelt, d.h. wird MFA in die erste Zeile eingetragen, wird der MFA OTP Code auch bei der Anmeldung als erstes abgefragt.

Ubuntu Linux / Debian Linux / CentOS / Fedora
Bei Ubuntu, Debian, CentOS und Fedora muss die folgende Zeile eingefügt werden:

auth     required     pam_google_authenticator.so

Arch Linux
Bei Arch müssen die folgenden 3 Zeilen eingefügt werden:

auth     required     pam_google_authenticator.so
auth     required     pam_unix.so
auth     required     pam_env.so

Für Testzwecke kann der Wert required auch auf sufficient geändert werden. Das bewirkt, dass die Anmeldung allein mit Passwort noch funktioniert, auch wenn MFA mit dem OTP Token fehlschlägt.

Abschließend wird das für MFA benötigte Challenge Response Authentication Verfahren in der Datei /etc/ssh/sshd_config aktiviert.

nano /etc/ssh/sshd_config

Der Wert für den Parameter ChallengeResponseAuthentication ist darin wie folgt anzupassen:

ChallengeResponseAuthentication     yes

Zur Aktivierung der Anpassungen ist der SSH Daemon neu zu starten:

systemctl restart sshd.service
# oder #
service sshd restart

Danach erfolgt die Anmeldung an SSH per MFA.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.