Einleitung

Dieser Beitrag soll kurz und bündig beschreiben, wie man sowohl für SSH, als auch für alle anderen priviligierenden Authentifizierungsprozesse MFA auf Debian Systemen aktiviert.

Dies hilft zum einen den Server vor externen Angriffen zu schützen, aber gleichzeitig auch bei Multi-User Systemen intern die Übernahme von Accounts zu erschweren.

Hauptteil

User vorbereiten

In diesem Beispiel, wird ein Tokenbasierter zweiter Faktor verwendet, dafür wird die Google Libary für TOTP verwendet.
Dazu installieren wir:

sudo apt install -y libpam-google-authenticator

Sobald installiert, wiederholen wir den folgenden Schritt für ALLE User, die MFA verwenden sollen, sodass später weiterhin die Anmeldung möglich ist.

google-authenticator

oder für andere User:

sudo -u <<user>> google-authenticator

Jetzt wird ein QR Code gezeigt, der mit einer entsprechenden App gescannt werden muss.
Der angezeigte Code wird dann eingegeben, die Recovery Codes gesichert und alle Fragen werden dann mit einem "y" bestätigt.

System konfigurieren

Als nächstes muss jetzt dafür gesorgt werden, dass das System den entsprechenden Token auch abfragt. Das machen wir für SSH wie folgt:

SSH konfigurieren

In der Datei /etc/ssh/sshd_config folgendes eingetragen:

KbdInteractiveAuthentication yes
UsePAM yes
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive

Common Auth für alles andere...

In der Datei /etc/pam.d/common-auth wird die Authentifizierungslogik für alle Dienste definiert (an sich auch SSH...) - hier wird unter dem Eintrag

auth requisite pam_deny.so

folgendes eingetragen:

# google mfa
auth required pam_google_authenticator.so

Zuletzt wird jetzt der SSH Service neugestartet

sudo service ssh restart

und der Zugang wird in einem parallel geöffneten Terminal gestestet.