Im Internet finden sich viele Anleitungen um den SSH Zugang mittels einer Two-factor Komponente (z.B. dem google-authenticator) zu sichern.
Bei fast allen Anleitungen wird jedoch von der Kombination aus Passwort und Two-factor Code ausgegangen. Wird dabei der Publickey des Clients auf dem Server unter den authorized_keys abgelegt, wird die Two-factor Authentifizierung komplett umgegangen, da PubkeyAuthentication alles andere aufhebt.

In dieser Anleitung wird beschrieben, wie der SSH Dienst konfiguriert werden muss, damit eine Kombination aus Publickey und Two-factor Token ausgewertet wird.

Installation

Wir installieren einen openssh-server sowie den google-authenticator. Bei der SSH Version ist darauf zu achten, dass diese höher als 6.2 sein muss.

apt-get install libpam-google-authenticator 
# apt-get install openssh-server

Konfigration des Google Authenticators

Dazu geben wir in der Shell einfach google-authenticator ein.

google-authenticator

Die nachfolgenden Fragen können nach belieben beantwortet werden. Ein durchgängiges YES ist empfehlenswert / in Ordnung.

Konfigration SSH

Nun muss der SSHd Dienst konfiguriert werden. Wir werden dabei die Authentifizierung mittels Passwort komplett deaktivieren und nur noch eine Authentifizierung mittels Publickey + Two-factor Code zulassen.
Innerhalb der Datei /etc/ssh/sshd_config müssen nun folgende Werte gesetzt werden:

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no
PermitRootLogin yes
PubkeyAuthentication yes

Anschließend öffnen wir noch die Datei /etc/pam.d/sshd und nehmen folgende Änderungen vor:

# Zeile hinzufügen:
auth       required     pam_google_authenticator.so

# Zeile auskommentieren (deaktivieren)
#@include common-auth

Testen!

Als nächstes wird der SSH Dienst mittels service ssh restart neugestartet.
Der Test sollte in einem zweiten Terminalfenster durchgeführt werden. Achtet darauf, dass erste Terminalfenster nicht zu schließen solange die Authentifizierung nicht reibungslos läuft, es besteht die Gefahr sich auszuschließen!

Categories: Linux