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

So richten Sie die Multi-Faktor-Authentifizierung für SSH unter Linux ein

In diesem Leitfaden erfahren wir, was die Multi-Faktor-Authentifizierung ist und wie wichtig sie ist, und schließlich erfahren Sie, wie Sie die Multi-Faktor-Authentifizierung für SSH unter Linux mithilfe der Google Authenticator-App einrichten.

Einführung

Sicherheit ist ein ernstes Geschäft. Die Zahl der Kompromittierungen nimmt von Tag zu Tag erheblich zu und es wird geschätzt, dass Cyberkriminalität Unternehmen bis 2025 10,5 Billionen US-Dollar kosten wird.

Es ist wichtig, dass eine starke Sicherheitsebene auf allen Ebenen des Technologie-Stacks implementiert wird. In diesem Artikel werden wir eine solche Sicherheitsimplementierung für ssh mit Multi-Faktor-Authentifizierung sehen.

SSH steht für Secure Shell und ist ein Netzwerkprotokoll, mit dem Benutzer eine Verbindung zu Remote-Computern (Servern) herstellen und auf Ressourcen zugreifen können.

Das ssh-Protokoll implementiert zwei Arten von Sicherheit, nämlich passwortbasierte Authentifizierung und schlüsselbasierte Authentifizierung .

Die schlüsselbasierte (öffentlich -> privat) Authentifizierung wird im Vergleich zur passwortbasierten Authentifizierung als sicherer angesehen, und die meisten SSH-Härtungsanweisungen empfehlen, die passwortbasierte Authentifizierung zu deaktivieren und nur die schlüsselbasierte Authentifizierung zu aktivieren.

Unabhängig davon, welchen Authentifizierungsmechanismus Sie wählen, können Sie ssh sicherer machen, indem Sie ein Multi-Faktor-Authentifizierungs-Setup implementieren.

Was ist Multi-Faktor-Authentifizierung?

Mutli-Factor Authentication (kurz MFA ) ist ein sicherer Authentifizierungsprozess, der mehr als eine Authentifizierungstechnik erfordert, die aus unabhängigen Kategorien von Anmeldeinformationen ausgewählt wird.

Die Multi-Faktor-Authentifizierung wird manchmal auch als "Zwei-Faktor-Authentifizierung (2FA)" bezeichnet .

Es gibt zwei Faktoren, die daran beteiligt sind, zu bestätigen, wer Sie zu sein sagen. Der erste Faktor ist das Passwort, das erstellt wird, wenn Ihr Benutzerkonto erstellt wird.

Der zweite Faktor ist jede Anwendung, die OTP oder ein Protokoll generiert, das Ihnen Textnachrichten sendet oder Ihr Gerät anruft.

Je nachdem, wie die Anwendung implementiert ist, variiert die Art und Weise, wie Sie sich authentifizieren. Einige gängige Tools, die Sie für MFA verwenden, sind:

  • Auf dem Mobilgerät installierte Anwendung, die Token generiert.
  • Ein externes Gerät wie Yubikey.
  • Fingerabdruck.
  • Gesichtserkennung.
  • Textnachricht oder einwahlbasiertes OTP-Passwort.

Um die Multi-Faktor-Authentifizierung für ssh zu aktivieren, verwenden wir "Google Authenticator" App, die das OATH-TOTP-Protokoll verwendet. Es gibt andere alternative Tools wie Twilio Authy oder FreeOTP die Sie installieren und ausprobieren können.

Wir beginnen mit der Installation der Google Authenticator-App sowohl auf dem Server als auch auf dem Mobilgerät und versuchen, MFA zu aktivieren und zu validieren.

Installieren Sie Google Authenticator

Installieren Sie zunächst die Google Authenticator-App über den Playstore auf Ihren Android- oder IOS-Geräten /Itunes .

Installieren Sie jetzt die Google Authenticator-App auf Ihrem Linux-System.

Führen Sie abhängig von Ihrer Distribution die folgenden Installationsbefehle aus.

Unter Ubuntu und seine abgeleiteten Distributionen führen den folgenden Befehl aus.

$ sudo apt install libpam-google-authenticator

In RHEL basierte Distributionen führen den folgenden Befehl aus.

$ sudo dnf install google-authenticator -y

Für Bogen basierte Verteilung führen Sie den folgenden Befehl aus.

$ sudo pacman -S libpam-google-authenticator

Anfangstoken für einen Benutzer generieren

Als ersten Schritt beim Einrichten von MFA müssen Sie den folgenden Befehl von Ihrem Terminal aus ausführen. Dies kümmert sich um die Ersteinrichtung, indem der TOTP-Schlüssel generiert wird. Dieser Schlüssel ist für den Benutzer, der den Befehl ausführt, und gilt nicht für alle Benutzer im System.

$ google-authenticator

Es gibt eine Reihe von Schritten, bei denen Sie mit dem (y aufgefordert werden /n )-Option.

SCHRITT 1 - Sie werden aufgefordert, zeitbasierte Authentifizierungstoken auszuwählen. Zeitbasierte Authentifizierungstoken generieren alle 30 Sekunden einen neuen Code. Drücken Sie "y" um fortzufahren.

SCHRITT 2 - Geheimes Token wird zusammen mit einem QR-Code generiert. Öffnen Sie die mobile Google Authenticator-App und scannen Sie den QR-Code oder geben Sie den geheimen Schlüssel manuell ein, um das Gerät zu registrieren. Sobald dies erledigt ist, beginnt die App jetzt, alle 30 Sekunden Token zu generieren.

SCHRITT 3 - In diesem Schritt werden Sie aufgefordert, .google_authenticator zu aktualisieren Datei in Ihrem Home-Verzeichnis. Alle geheimen Schlüssel, Verifizierungscodes und Notfall-Rubbelcodes werden in dieser Datei gespeichert. Drücken Sie "y" um fortzufahren.

SCHRITT 4 - Wählen Sie "y" In diesem Schritt läuft das Token sofort ab, sobald Sie es zur Authentifizierung verwendet haben. In diesem Fall läuft Ihr Token ab, selbst wenn einige Hacker es erhalten.

SCHRITT 5 - Dieser Schritt entscheidet, wie viele Token erlaubt sind und in welchem ​​Zeitrahmen. Wenn ich "n" wähle , erlaubt es 3 Tokens in 90 Sekunden Fenster. Wenn ich "y" drücke , erlaubt es 17 Tokens in 240 Sekunden Zeitfenster.

SCHRITT 6 - In diesem Schritt werden Sie aufgefordert, die Ratenbegrenzung zu aktivieren. Die Ratenbegrenzung ermöglicht es einem Angreifer, alle 30 Sekunden nur 3 Anmeldeversuche zu unternehmen . Wenn die Token falsch sind, müssen sie auf N warten Zeit, es erneut zu versuchen.

Den ersten Schritt haben wir geschafft. Öffnen Sie die Datei ~/.google_authenticator und Sie können alle Einstellungen und Geheimcodes finden, die wir in all diesen Schritten vorgenommen haben.

$ cat ~/.google_authenticator

Sie können auch Argumente an den Befehl google-authenticator übergeben, der die Schlüssel und andere Einstellungen erstellt, ohne diese Schrittfolge durchlaufen zu müssen.

$ google-authenticator -q -t -d -f -r 3 -R 30 -w 3

Schlagen Sie im Hilfeabschnitt des Google-Authentifikators nach, um herauszufinden, was diese Argumente bewirken.

$ google-authenticator –-help

SSH für Multi-Faktor-Authentifizierung konfigurieren

Wir müssen einige Konfigurationsänderungen an openSSH vornehmen, damit wir mit der Verwendung von MFA beginnen können.

Hinweis:

  • Als bewährte Methode sollten Sie Ihre Konfigurationsdateien immer sichern, bevor Sie Änderungen vornehmen. Wenn irgendetwas vermasselt wird, können die Änderungen rückgängig gemacht werden.
  • Da Sie Änderungen an SSH-Konfigurationsdateien vornehmen, vergewissern Sie sich, dass Sie eine separate Sitzung geöffnet haben, damit Sie nicht versehentlich ausgesperrt werden.

Führen Sie die folgenden Befehle aus, um die SSH-Konfigurationsdateien zu sichern.

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
$ sudo cp /etc/pam.d/sshd /etc/pam.d/sshd.backup

Aktivieren Sie zunächst SSH für die Verwendung von MFA, indem Sie ChallengeResponseAuthentication festlegen Option auf "Ja" .

Als nächstes bearbeiten Sie /etc/pam.d/sshd Datei:

$ sudo vi /etc/pam.d/sshd

Und fügen Sie die folgenden Zeilen am Ende der Datei hinzu.

auth required pam_google_authenticator.so nullok
auth required pam_permit.so

Wenn Sie MFA für alle Benutzer obligatorisch machen möchten, entfernen Sie das Wort "nullok" .

Starten Sie den ssh-Dienst neu, damit die Änderungen wirksam werden.

$ sudo systemctl restart sshd

Zwei-Faktor-Authentifizierung testen

Es ist Zeit zu testen, ob die von uns vorgenommenen Änderungen wirksam sind.

Stellen Sie über SSH eine Verbindung zum Server her und Sie werden als ersten Faktor nach einem Passwort gefragt, gefolgt von einem Bestätigungscode als Zweitfaktor-Authentifizierung, wie im folgenden Bild gezeigt.

$ ssh [email protected]/IPaddress

Sobald Sie das SSH-Passwort und den Bestätigungscode eingegeben haben, können Sie sich anmelden.

Haben Sie sich daran erinnert, dass wir MFA nicht für alle Benutzer als obligatorisch aktiviert haben? Lassen Sie es uns testen und sehen, ob ich mich mit einem anderen Benutzer verbinden kann, bei dem ich keine Tokens generiert und eingerichtet habe.

Ich habe einen Testbenutzer und ich kann erfolgreich eine Verbindung herstellen, ohne zur Eingabe eines Bestätigungscodes aufzufordern.

Sehen? Ich kann mich auch ohne den Bestätigungscode anmelden.

Multi-Faktor-Authentifizierung für schlüsselbasierte Authentifizierung

Wenn Sie eine schlüsselbasierte Authentifizierung eingerichtet haben, werden Sie nicht zur Eingabe des Passworts oder der Bestätigungscodes aufgefordert. Warum?

Denn standardmäßig verwendet ssh zuerst die Public-Key-Authentifizierung und wenn ein Schlüssel gefunden wird, authentifiziert es sich damit. Falls der Schlüssel nicht gefunden wird, wird eine passwortbasierte Authentifizierung verwendet.

Sie können verbose verwenden Modus, um dies zu überprüfen.

$ ssh -v [email protected]/IPaddress ## With verbose

Fügen Sie unten die folgende Zeile hinzu /etc/ssh/sshd_config Datei:

AuthenticationMethods publickey,password publickey,keyboard-interactive

Als nächstes öffnen Sie /etc/pam.d/sshd und kommentieren Sie die folgende Zeile aus.

Wenn Sie "@include common-auth" nicht auskommentieren , dann ermöglicht es mehr als zwei Faktoren, sich zu authentifizieren. Es authentifiziert sich zuerst mit Schlüsseln, gefolgt von Passwort und Token. Alles, was ich brauche, ist ein Schlüssel und ein Token für meine Authentifizierung, also deaktiviere ich es.

Starten Sie sshd neu Service und testen Sie, ob die Änderungen gut funktionieren.

$ sudo systemctl restart sshd

Wenn ich jetzt versuche, eine Verbindung herzustellen, verwendet es den öffentlichen Schlüssel als ersten Faktor und den Bestätigungscode als zweiten Faktor zur Authentifizierung.

Wiederherstellungsschritte

Es kann Szenarien geben, in denen Sie Ihr mobiles Gerät verlieren oder wechseln können. In diesem Fall müssen Sie die Google-Authenticator-Anwendung neu installieren und den geheimen Schlüssel registrieren, um mit der Generierung von Token zu beginnen.

Wenn Sie vom System ausgeschlossen sind, müssen Sie sich an Ihren Systemadministrator wenden, um Ihnen neue geheime Schlüssel zur Registrierung und Verwendung zu geben. Es gibt jedoch einen alternativen Ansatz, bei dem Sie sich anmelden und selbst Schlüssel generieren können.

Erinnern Sie sich an die Codes, die im ersten Schritt generiert werden? Sie können den Notfall-Rubbelcode verwenden als Token zum Einloggen. Jeder Rubbelcode kann nur einmal verwendet werden. Speichern Sie es an einem sicheren Ort so kann es verwendet werden, wenn es am meisten benötigt wird.

Die Codes werden in ~/.google_authenticator gespeichert Datei.

$ cat ~/.google_authenticator

Sie können jetzt Ihre eigenen Schlüssel erneut generieren, indem Sie den folgenden Befehl ausführen.

$ google-authenticator

Schlussfolgerung

In diesem Artikel habe ich Ihnen gezeigt, wie Sie Google Authenticator installieren und Multi-Factor Authentication für SSH mit verschiedenen Konfigurationen aktivieren.

Als Administrator können Sie auch Bash-Skripte schreiben um den Prozess der Generierung der geheimen Schlüssel zu automatisieren und mit dem Benutzer zu teilen. Sie sollten ssh auch härten, bevor Sie MFA einrichten, damit Ihr System sicherer ist. Wir planen, sie in separaten Artikeln zu behandeln. Bleiben Sie dran!

Verwandte Lektüre:

  • So konfigurieren Sie die schlüsselbasierte SSH-Authentifizierung unter Linux
  • Feststellen, ob ein Benutzer passwortbasierte oder schlüsselbasierte SSH-Authentifizierung verwendet
  • Zulassen oder Verweigern des SSH-Zugriffs für einen bestimmten Benutzer oder eine bestimmte Gruppe in Linux
  • SSH-Passwortauthentifizierung für bestimmte Benutzer oder Gruppen deaktivieren

Linux
  1. So ändern Sie den SSH-Port unter Linux

  2. So richten Sie Sudo-Berechtigungen für Benutzer in Linux ein

  3. So richten Sie Chroot SFTP unter Linux ein (nur SFTP zulassen, nicht SSH)

  4. So richten Sie SSH-Schlüssel für die „kennwortlose“ SSH-Anmeldung unter Linux ein

  5. So richten Sie SSH-Schlüssel für die SSH-Anmeldung mit „öffentlichen/privaten Schlüsseln“ unter Linux ein

So richten Sie die passwortlose SSH-Anmeldung unter Linux mit Schlüsseln ein

So deaktivieren Sie die SSH-Passwortauthentifizierung auf Linux VPS

So erstellen Sie einen SSH-Alias ​​unter Linux

Wie richte ich die ssh-schlüsselbasierte Authentifizierung für Github mithilfe der Datei ~/.ssh/config ein?

So führen Sie SSH zum Server über Linux

Wie deaktiviere ich die SSH-Anmeldung für den Root-Benutzer in Linux?