GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Richten Sie die SSH-Zwei-Faktor-Authentifizierung (2FA) auf dem Ubuntu-Server ein

Dieses Tutorial zeigt Ihnen, wie Sie die SSH-Zwei-Faktor-Authentifizierung auf einem Ubuntu-Server mit dem bekannten Google Authenticator einrichten. Es wird die Sicherheit des SSH-Dienstes auf Ihrem Ubuntu-Server erheblich verbessern.

Wie die Zwei-Faktor-Authentifizierung funktioniert

Normalerweise müssen Sie nur ein Passwort eingeben oder den SSH-Schlüssel verwenden, um sich remote bei Ihrem Ubuntu-Server anzumelden. Bei der Zwei-Faktor-Authentifizierung (2FA) müssen Sie zwei Informationen eingeben, um sich anzumelden. Sie müssen also auch ein zeitbasiertes Einmalpasswort eingeben, um sich bei Ihrem SSH-Server anzumelden. Dieses Einmalpasswort wird mit dem TOTP-Algorithmus berechnet, der ein IETF-Standard ist. Heutzutage bieten viele Websites und Dienste (Facebook, Google, Twitter usw.) 2FA für Benutzer an, um ihre Konten zu sichern, und es ist eine gute Idee, 2FA auch auf Ihrem SSH-Server zu aktivieren.

Dieses Tutorial zeigt Ihnen, wie Sie

einrichten
  • Passwortauthentifizierung mit 2FA
  • Public-Key-Authentifizierung mit 2FA

Hinweis :Die Open-Source-Serversoftware, die wir in diesem Artikel verwenden, heißt libpam-google-authenticator , das aus dem Standard-Ubuntu-Repository installiert wird. Das Unternehmen Google beteiligt sich in keiner Weise am Authentifizierungsprozess. Die Serversoftware und die mobile App benötigen keinen Netzwerkzugriff.

Schritt 1:Google Authenticator auf Ubuntu-Server installieren und konfigurieren

Melden Sie sich bei Ihrem Ubuntu-Server an und führen Sie den folgenden Befehl aus, um Google Authenticator aus dem standardmäßigen Ubuntu-Paket-Repository zu installieren.

sudo apt install -y libpam-google-authenticator

Führen Sie dann den google-authenticator aus Befehl zum Erstellen eines neuen geheimen Schlüssels in Ihrem Home-Verzeichnis.

google-authenticator

Auf die Frage „Möchten Sie, dass Authentifizierungstoken zeitbasiert sind?“ Antworten Sie mit y .

Dann sehen Sie einen QR-Code, den Sie mit einer TOTP-App auf Ihrem Telefon scannen können. Es gibt zwei Apps, die ich empfehle:

  • Google Authenticator ist die bekannteste mobile TOTP-App. Sie können es über Google Play oder den Apple App Store auf Ihrem Mobiltelefon installieren.
  • Der Google Authenticator Die mobile App ist nicht Open Source. Wenn Sie Google nicht vertrauen, können Sie FreeOTP verwenden, eine mobile Open-Source-TOTP-App, die von Red Hat entwickelt wurde.

Scannen Sie den QR-Code mit Google Authenticator oder FreeOTP auf Ihrem Mobiltelefon. Beachten Sie, dass Sie das Terminalfenster vergrößern müssen, um den vollständigen QR-Code zu scannen.

Der QR-Code stellt den geheimen Schlüssel dar, der nur Ihrem SSH-Server und Ihrer mobilen TOTP-App bekannt ist. Sobald der QR-Code gescannt wurde, können Sie ein sechsstelliges Einmalpasswort auf Ihrem Telefon sehen. Standardmäßig ändert es sich alle 30 Sekunden. Sie müssen dieses einmalige Passwort später eingeben, um sich über SSH beim Ubuntu-Server anzumelden.

Im Terminalfenster können Sie den geheimen Schlüssel, den Bestätigungscode und den Notfall-Rubbelcode sehen. Es wird empfohlen, diese Informationen zur späteren Verwendung an einem sicheren Ort zu speichern.

Dann können Sie y eingeben um alle verbleibenden Fragen zu beantworten. Dadurch wird Ihre Google Authenticator-Konfigurationsdatei aktualisiert, die mehrfache Verwendung desselben Authentifizierungstokens deaktiviert, das Zeitfenster vergrößert und die Ratenbegrenzung zum Schutz vor Brute-Force-Anmeldeversuchen aktiviert.

Schritt 2:SSH-Daemon für die Verwendung von Google Authenticator konfigurieren

  • Passwortauthentifizierung mit 2FA
  • Public-Key-Authentifizierung mit 2FA

Passwortauthentifizierung mit 2FA

Wenn Sie keinen SSH-Schlüssel verwenden, befolgen Sie die nachstehenden Anweisungen.

Öffnen Sie die Konfigurationsdatei des SSH-Servers.

sudo nano /etc/ssh/sshd_config

Suchen Sie die folgenden beiden Parameter in der Datei und vergewissern Sie sich, dass beide auf yes gesetzt sind .

UsePAM yes

ChallengeResponseAuthentication yes

PAM steht für Pluggable Authentication Module. Es bietet eine einfache Möglichkeit, verschiedene Authentifizierungsmethoden in Ihr Linux-System einzubinden. Um Google Authenticator mit SSH zu aktivieren, müssen PAM und Challenge-Response-Authentifizierung aktiviert sein.

Wenn Sie dem Root-Benutzer erlauben möchten, 2FA zu verwenden, suchen Sie nach PermitRootLogin Parameter und setzen Sie seinen Wert auf yes . Es darf nicht PermitRootLogin no sein oder PermitRootLogin prohibit-password .

PermitRootLogin yes

Speichern und schließen Sie die Datei. Bearbeiten Sie als Nächstes die PAM-Regeldatei für den SSH-Daemon.

sudo nano /etc/pam.d/sshd

Am Anfang dieser Datei sehen Sie die folgende Zeile, die die Passwort-Authentifizierung bei ChallengeResponseAuthentication aktiviert auf yes gesetzt ist .

@include common-auth

Um 2FA in SSH zu aktivieren, fügen Sie die folgenden zwei Zeilen hinzu.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Speichern und schließen Sie die Datei. Starten Sie dann den SSH-Daemon neu, damit die Änderung wirksam wird.

sudo systemctl restart ssh

Von nun an verlangt der SSH-Daemon die Eingabe des Benutzerpassworts und eines Bestätigungscodes (das von Google Authenticator generierte Einmalpasswort). Der folgende Screenshot zeigt eine SSH-Anmeldesitzung von einer CentOS-Box zu einem Ubuntu 20.04-Server.

Public-Key-Authentifizierung mit 2FA

Wenn Sie den SSH-Schlüssel verwenden, um sich beim SSH-Server anzumelden, befolgen Sie die nachstehenden Anweisungen.

Öffnen Sie die Konfigurationsdatei des SSH-Servers.

sudo nano /etc/ssh/sshd_config

Suchen Sie die folgenden beiden Parameter in der Datei und vergewissern Sie sich, dass beide auf yes gesetzt sind .

UsePAM yes

ChallengeResponseAuthentication yes

PAM steht für Pluggable Authentication Module. Es bietet eine einfache Möglichkeit, verschiedene Authentifizierungsmethoden in Ihr Linux-System einzubinden. Um Google Authenticator mit SSH zu aktivieren, müssen PAM und Challenge-Response-Authentifizierung aktiviert sein.

Wenn Sie dem Root-Benutzer erlauben möchten, 2FA zu verwenden, suchen Sie nach PermitRootLogin Parameter und setzen Sie seinen Wert auf yes . Es darf nicht PermitRootLogin no sein oder PermitRootLogin prohibit-password .

PermitRootLogin yes

Fügen Sie als Nächstes die folgende Zeile am Ende dieser Datei hinzu. Dies teilt dem SSH-Daemon mit, dass der Benutzer sowohl die Public-Key-Authentifizierung als auch die Challenge-Response-Authentifizierung bestehen muss.

AuthenticationMethods publickey,keyboard-interactive

Speichern und schließen Sie die Datei. Bearbeiten Sie als Nächstes die PAM-Regeldatei für den SSH-Daemon.

sudo nano /etc/pam.d/sshd

Am Anfang dieser Datei sehen Sie die folgende Zeile, die die Passwort-Authentifizierung bei ChallengeResponseAuthentication aktiviert auf yes gesetzt ist . Wir müssen diese Zeile auskommentieren, da wir den SSH-Schlüssel anstelle des Passworts verwenden werden.

@include common-auth

Um 2FA in SSH zu aktivieren, fügen Sie die folgenden zwei Zeilen hinzu.

# two-factor authentication via Google Authenticator
auth   required   pam_google_authenticator.so

Speichern und schließen Sie die Datei. Starten Sie dann den SSH-Daemon neu, damit die Änderung wirksam wird.

sudo systemctl restart ssh

Von nun an müssen Sie sich mit dem SSH-Schlüssel und dem Google Authenticator-Bestätigungscode anmelden.

Notizen

  • Jeder Benutzer auf Ihrem Ubuntu-Server muss google-authenticator ausführen Befehl eingeben und QR-Code scannen, um die Zwei-Faktor-Authentifizierung zu verwenden. Wenn der Benutzer die Einrichtung nicht vorgenommen hat und versucht, sich anzumelden, wird die Fehlermeldung „Berechtigung verweigert (Tastatur-interaktiv) “ wird angezeigt.
  • Notfall-Scratch-Code ist Ihr Backup-Code. Wenn Sie Ihr Telefon verlieren, können Sie anstelle eines Einmalpassworts einen von fünf Notfall-Rubbelcodes eingeben, um die zweistufige Verifizierung abzuschließen. Diese Codes sind nur zur einmaligen Verwendung bestimmt.
  • Wenn Sie den geheimen Schlüssel ändern möchten, melden Sie sich einfach bei Ihrem Server an und führen Sie google-authenticator aus Befehl erneut, um den ~/.google_authenticator zu aktualisieren Datei.
  • Da das einmalige Passwort anhand des gemeinsamen geheimen Schlüssels und der aktuellen Uhrzeit berechnet wird, ist es eine gute Idee, die NTP-Zeitsynchronisierung auf Ihrem Ubuntu-Server zu aktivieren, um die genaue Zeit beizubehalten, obwohl wir zuvor eine Zeitverschiebung von 4 Minuten zugelassen haben zwischen dem Ubuntu-Server und der mobilen App. Ihr Ubuntu-Server und die mobile TOTP-App können unterschiedliche Zeitzonen verwenden.

So deaktivieren Sie die SSH-Zwei-Faktor-Authentifizierung

Bearbeiten Sie die PAM-Regeldatei für den SSH-Daemon.

sudo nano /etc/pam.d/sshd

Kommentieren Sie die folgende Zeile aus.

auth   required   pam_google_authenticator.so

Speichern und schließen Sie die Datei. Wenn Sie die folgende Zeile in /etc/ssh/sshd_config hinzugefügt haben Datei,

AuthenticationMethods publickey,keyboard-interactive

Entfernen Sie das keyboard-interactive Authentifizierungsmethode.

AuthenticationMethods publickey

Speichern und schließen Sie die Datei. Starten Sie dann den SSH-Daemon neu.

sudo systemctl restart ssh

Ubuntu
  1. So generieren Sie SSH-Schlüssel unter Ubuntu 18.04

  2. So installieren und richten Sie einen sftp-Server in Ubuntu 20.04 ein

  3. Sicheres SSH mit Zwei-Faktor-Authentifizierung unter Ubuntu 16.04

  4. Richten Sie die mehrstufige Authentifizierung für SSH unter Ubuntu 20.04 ein

  5. Richten Sie die Zwei-Faktor-Authentifizierung mit Google Authenticator ein

So installieren Sie den SSH-Server unter Ubuntu 22.04

So installieren Sie OpenSSH unter Ubuntu 20.04

So richten Sie die SSH-Zwei-Faktor-Authentifizierung unter Ubuntu 16.04 mit Google Authenticator ein

So aktivieren Sie den SSH-Server unter Ubuntu 22.04

So richten Sie die Zwei-Faktor-Authentifizierung unter Ubuntu 20.04 LTS ein

So verwenden Sie die Zwei-Faktor-Authentifizierung mit Ubuntu