Wenn du deinen Linux-Server mit einer zusätzlichen Sicherheitsstufe ausstatten willst, gibt es nur wenige bessere Optionen als die Zwei-Faktor-Authentifizierung. In dieser Anleitung zeigen wir dir, wie du Google PAM für die SSH-Authentifizierung installierst.
Aktualisieren wir zunächst den Eignungs-Cache von Ubuntu:
sudo apt-get update
Als Nächstes holen und installieren wir Google LibPAM:
sudo apt-get install libpam-google-authenticator -y
Lerne mehr über die SSH Sicherheit mit dem Intensivkurs
Der SSH effektiv nutzen: Tipps & Tricks für Linux-Admins Kurs deckt grundlegende und fortgeschrittene Themen wie Authentifizierung, Verschlüsselung, Server- und Client-Sicherheit, automatisierte Aufgaben und fortgeschrittene Konfigurationstechniken ab, um den Teilnehmern ein umfassendes Verständnis der sicheren Verwendung von SSH zu vermitteln.
Buche jetzt meinen SSH Kurs auf Udemy oder werde Youtube Mitglied im Experten status und Zugang zu über 1400 Lektionen aus allen meinen Kursen zu erhalten.
Erstkonfiguration für Google PAM
Jetzt, da wir PAM installiert haben, starten wir die Anwendung:
google-authenticator
An dieser Stelle werden dir eine Reihe von Antworten für die Erstkonfiguration angezeigt. Gehen wir sie durch. Zuerst wirst du gefragt, ob du die zeitbasierte Antwort für die Authentifizierungs-Tokens verwenden möchtest. Wenn du hier "Nein" auswählst, wird das Modul so konfiguriert, dass es sequenzielle Token verwendet, was nicht besonders kompatibel ist und zu einer nicht optimalen ersten Erfahrung führen könnte, also wählen wir hier "J", um das zu vermeiden:
Do you want authentication tokens to be time-based (y/n) y
Um Google PAM zu installieren, musst du hier mit Ja antworten, damit das Authentifizierungs-Token geschrieben wird und das Programm nicht beendet wird, also antworte mit Y:
Do you want me to update your "~/.google_authenticator" file (y/n) y
Wenn du kein Fan von Wiederholungsangriffen bist, möchtest du im nächsten Schritt wahrscheinlich die mehrfache Verwendung desselben Authentifizierungs-Tokens deaktivieren, also wähle hier 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
Hier solltest du nicht mit "Ja" antworten, es sei denn, du möchtest Hackern ein größeres Zeitfenster für den Zugriff gewähren. Dann solltest du wahrscheinlich mit "Nein" antworten und die App so konfigurieren, dass sie nur 3 Anmeldeversuche innerhalb von 30 Sekunden erlaubt. Antwort:
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
Indem du die Ratenbegrenzung bestätigst, beschränkst du Angreifer auf eine bestimmte Anzahl von Versuchen, bevor sie geblockt werden. Das ist eine gute Sache und wird (vorausgesetzt, du hast nicht schon vorher eine Ratenbegrenzungsrichtlinie für SSH eingerichtet) definitiv dein Sicherheitsniveau erhöhen. Antwort Yes!
QR-Code und Notfall-Codes
Vielleicht ist dir der riesige QR-Code aufgefallen, der während des Prozesses aufgetaucht ist. Darunter befinden sich deine Notfall-Codes, die du benutzen kannst, wenn du keinen Zugang zu deinem Telefon hast: Schreibe sie auf Papier und bewahre sie an einem sicheren Ort auf.
Wichtig: Jetzt öffnen wir am Smartphone Google Authenticator, Authy oder eine andere 2FA App und fügen unseren geheimen Schlüssel hinzu, damit es funktioniert. Lasse diesen Schritt nicht aus dieser ist wichtig für zukünftige Anmeldungen!
PAM mit SSH konfigurieren
Lass uns die PAM-Konfigurationsdatei mit Nano öffnen:
sudo nano /etc/pam.d/sshd
Füge direkt unter der @include common-password Zeile die folgende Zeile ein, um PAM anzufordern und null zu erlauben:
auth required pam_google_authenticator.so nullok
Wenn die Option nullok nicht verwendet wird, werden Authentifizierungsversuche abgelehnt, wenn eine solche geheime Datei nicht existiert.
Schließe die Datei und speichere sie.
Lass uns nun eine Änderung an der SSHD-Konfiguration vornehmen:
sudo nano /etc/ssh/sshd_config
Finde die Zeile mit der ChallengeResponseAuthentication und stelle sicher, dass sie auf yes gesetzt ist:
ChallengeResponseAuthentication yes
Schließe und speichere deine Bearbeitung und starte den SSHD-Dienst neu:
service sshd restart
Jetzt werden wir die SSHD-Konfiguration erneut bearbeiten:
sudo nano /etc/ssh/sshd_config
Suche nach der Zeile, in der UsePAM "yes" liest, und füge die folgende Zeile darunter ein, um die Authentifizierungsmethode auf SSH-Schlüssel und dann entweder ein Passwort oder einen Bestätigungscode festzulegen:
UsePAM yes
AuthenticationMethods publickey,password publickey,keyboard-interactive
Jetzt werden wir auch die PAM-Konfigurationsdatei erneut bearbeiten:
sudo nano /etc/pam.d/sshd
Finde die Zeile # Standard Un*x authentication und entferne das Hashtag Zeichen # direkt darunter in der Zeile #@include common-auth, so dass es wie folgt aussieht:
# Standard Un*x authentication.
@include common-auth
Schließe und speichere die Datei und starte den SSH Dienst erneut:
Jetzt kommt der wichtigste Teil!
Lass deine aktuelle SSH-Sitzung offen und versuche über eine zweite Verbingung eine neue SSH-Sitzung zu starten.
Wenn alles gut gegangen ist, solltest du nach der Annahme deines SSH-Schlüssels nach einem Bestätigungscode gefragt werden und kannst dich einloggen.
Tipp: Bei meinen SSH Kurs findest du noch viel Detailliertere Konfigurationsmöglichkeiten Schritt-für-Schritt mit Videoanleitungen. Du kannst den Kurs auf Udemy oder werde Youtube Mitglied im Experten status und Zugang zu über 1400 Lektionen aus allen meinen Kursen zu erhalten.