So richten Sie die Multi-Factor-Authentifizierung für SSH unter CentOS 7 ein

Einführung

Ein Authentifizierungsfaktor ist eine einzelne Information, die verwendet wird, um zu beweisen, dass Sie über die Berechtigung zum Ausführen einer Aktion verfügen, z. B. das Anmelden bei einem System. Ein Authentifizierungskanal ist die Art und Weise, in der ein Authentifizierungssystem dem Benutzer einen Faktor liefert oder vom Benutzer eine Antwort verlangt. Kennwörter und Sicherheitstoken sind Beispiele für Authentifizierungsfaktoren. Computer und Telefone sind Beispiele für Kanäle.

SSH verwendet standardmäßig Kennwörter für die Authentifizierung, und die meisten Anweisungen zur SSH-Absicherung empfehlen stattdessen die Verwendung eines SSH-Schlüssels. Dies ist jedoch immer noch nur ein einziger Faktor. Wenn ein schlechter Schauspieler Ihren Computer kompromittiert hat, kann er Ihren Schlüssel verwenden, um auch Ihre Server zu kompromittieren.

In diesem Lernprogramm richten wir die Multifaktorauthentifizierung ein, um dem entgegenzuwirken. Multifaktorauthentifizierung (MFA) erfordert mehr als einen Faktor, um sich zu authentifizieren oder anzumelden. Dies bedeutet, dass ein schlechter Schauspieler mehrere Dinge kompromittieren muss, wie z. B. Ihren Computer und Ihr Telefon, um einzusteigen. Die verschiedenen Arten von Faktoren werden häufig wie folgt zusammengefasst:

  1. Etwas, das Sie * kennen *, wie ein Passwort oder eine Sicherheitsfrage

  2. Etwas, das Sie * haben *, wie eine Authentifizierungs-App oder ein Sicherheitstoken

  3. Etwas, das Sie * sind *, wie Ihr Fingerabdruck oder Ihre Stimme

Ein häufiger Faktor ist eine OATH-TOTP-App wie Google Authenticator. OATH-TOTP (Zeitbasiertes Einmalkennwort für offene Authentifizierung) ist ein offenes Protokoll, das ein Einmalkennwort generiert, in der Regel eine 6-stellige Zahl, die alle 30 Sekunden wiederverwendet wird.

In diesem Artikel wird erläutert, wie die SSH-Authentifizierung mithilfe einer OATH-TOTP-App zusätzlich zu einem SSH-Schlüssel aktiviert wird. Wenn Sie sich über SSH bei Ihrem Server anmelden, sind zwei Faktoren auf zwei Kanälen erforderlich, wodurch die Sicherheit höher ist als bei einem Kennwort oder einem SSH-Schlüssel. Darüber hinaus werden einige zusätzliche Anwendungsfälle für MFA sowie einige hilfreiche Tipps und Tricks besprochen.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

Schritt 1 - PAM von Google installieren

In diesem Schritt installieren und konfigurieren wir Googles PAM.

PAM (Pluggable Authentication Module) ist eine Authentifizierungsinfrastruktur, die auf Linux-Systemen zur Authentifizierung eines Benutzers verwendet wird. Da Google eine OATH-TOTP-App erstellt hat, wurde auch eine PAM erstellt, die TOTPs generiert und mit allen OATH-TOTP-Apps wie Google Authenticator oder Authy vollständig kompatibel ist.

Zuerst müssen wir das EPEL-Repository (Extra Packages for Enterprise Linux) hinzufügen.

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Installieren Sie als Nächstes den PAM. Sie werden möglicherweise aufgefordert, den EPEL-Schlüssel zu akzeptieren, wenn Sie das Repo zum ersten Mal verwenden. Nach dem Akzeptieren werden Sie nicht erneut aufgefordert, den Schlüssel zu akzeptieren.

sudo yum install google-authenticator

Wenn PAM installiert ist, verwenden wir eine Hilfsprogramm-App, die mit PAM geliefert wird, um einen TOTP-Schlüssel für den Benutzer zu generieren, dem Sie einen zweiten Faktor hinzufügen möchten. Dieser Schlüssel wird benutzerbezogen und nicht systemweit generiert. Dies bedeutet, dass sich jeder Benutzer, der eine TOTP-Authentifizierungs-App verwenden möchte, anmelden und die Hilfsprogramm-App ausführen muss, um seinen eigenen Schlüssel zu erhalten. Sie können es nicht nur einmal ausführen, um es für alle Benutzer zu aktivieren. Am Ende dieses Lernprogramms finden Sie jedoch einige Tipps zum Einrichten oder Anfordern von MFA für viele Benutzer.

Führen Sie die Initialisierungs-App aus.

google-authenticator

Nachdem Sie den Befehl ausgeführt haben, werden Ihnen einige Fragen gestellt. Der erste fragt, ob Authentifizierungstoken zeitbasiert sein sollen.

OutputDo you want authentication tokens to be time-based (y/n)

Diese PAM ermöglicht zeitbasierte oder sequenzielle Tokens. Bei Verwendung von sequential-based tokens beginnt der Code an einem bestimmten Punkt und inkrementiert den Code nach jeder Verwendung. Mit time-based tokens ändert sich der Code nach Ablauf einer bestimmten Zeit nach dem Zufallsprinzip. Wir bleiben zeitbasiert, da dies von Apps wie Google Authenticator erwartet wird. Antworten Sie daher mit "+ y +" und "ja".

Nach Beantwortung dieser Frage wird eine große Anzahl von Ausgaben gescrollt, einschließlich eines großen QR-Codes. Verwenden Sie zu diesem Zeitpunkt Ihre Authentifizierungs-App auf Ihrem Telefon, um den QR-Code zu scannen, oder geben Sie den geheimen Schlüssel manuell ein. Wenn der QR-Code zu groß zum Scannen ist, können Sie die URL über dem QR-Code verwenden, um eine kleinere Version zu erhalten. Nach dem Hinzufügen wird in Ihrer App ein sechsstelliger Code angezeigt, der sich alle 30 Sekunden ändert.

Die restlichen Fragen informieren den PAM über die Funktionsweise. Wir werden sie einzeln durchgehen.

OutputDo you want me to update your "/home/sammy/.google_authenticator" file (y/n)

Dadurch werden der Schlüssel und die Optionen in die Datei "+ .google_authenticator +" geschrieben. Wenn Sie Nein sagen, wird das Programm beendet und es wird nichts geschrieben. Dies bedeutet, dass der Authentifikator nicht funktioniert.

OutputDo 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)

Wenn Sie hier mit "Ja" antworten, verhindern Sie einen Wiederholungsangriff, indem Sie dafür sorgen, dass jeder Code sofort nach seiner Verwendung abläuft. Dies verhindert, dass ein Angreifer einen soeben verwendeten Code erfasst und sich damit anmeldet.

OutputBy default, tokens are good for 30 seconds. 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 +-1min (window size of 3) to about +-4min (window size of 17 acceptable tokens).
Do you want to do so? (y/n)

Wenn Sie hier mit Ja antworten, können bis zu 8 gültige Codes in einem sich bewegenden Fenster von vier Minuten angezeigt werden. Wenn Sie mit "Nein" antworten, beschränken Sie sich auf 3 gültige Codes in einem fortlaufenden Fenster von 1:30 Minuten. Wenn Sie keine Probleme mit dem 1:30-Minuten-Fenster finden, ist es sicherer, mit Nein zu antworten.

OutputIf the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n)

Ratenbegrenzung bedeutet, dass ein entfernter Angreifer nur eine bestimmte Anzahl von Vermutungen ausführen kann, bevor er blockiert wird. Wenn Sie die Ratenbeschränkung zuvor nicht direkt in SSH konfiguriert haben, ist dies jetzt eine hervorragende Härtungstechnik.

Nachdem Googles PAM installiert und konfiguriert ist, müssen Sie im nächsten Schritt SSH für die Verwendung Ihres TOTP-Schlüssels konfigurieren. Wir müssen SSH über die PAM informieren und anschließend SSH für die Verwendung konfigurieren.

Schritt 2 - OpenSSH konfigurieren

Da wir SSH-Änderungen über SSH vornehmen, ist es wichtig, Ihre anfängliche SSH-Verbindung niemals zu schließen. Öffnen Sie stattdessen eine zweite SSH-Sitzung, um Tests durchzuführen. Dies soll verhindern, dass Sie sich aus Ihrem Server aussperren, wenn in Ihrer SSH-Konfiguration ein Fehler aufgetreten ist. Sobald alles funktioniert, können Sie alle Sitzungen sicher schließen.

Zu Beginn bearbeiten wir die Konfigurationsdatei "+ sshd ". In diesem Fall verwenden wir " nano ", das standardmäßig nicht auf CentOS installiert ist. Sie können es mit ` sudo yum install nano +` installieren oder Ihren bevorzugten alternativen Texteditor verwenden.

sudo nano /etc/pam.d/sshd

Fügen Sie die folgende Zeile am Ende der Datei hinzu.

/etc/pam.d/sshd

. . .
# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare

Das "+ nullok " - Wort am Ende der letzten Zeile teilt der PAM mit, dass diese Authentifizierungsmethode optional ist. Auf diese Weise können sich Benutzer ohne OATH-TOTP-Token weiterhin mit ihrem SSH-Schlüssel anmelden. Sobald alle Benutzer über ein OATH-TOTP-Token verfügen, können Sie " nullok +" aus dieser Zeile entfernen, um MFA als obligatorisch festzulegen.

Speichern und schließen Sie die Datei.

Als Nächstes konfigurieren wir SSH so, dass diese Art der Authentifizierung unterstützt wird. Öffnen Sie die SSH-Konfigurationsdatei zum Bearbeiten.

sudo nano /etc/ssh/sshd_config

Suchen Sie nach den Zeilen + ChallengeResponseAuthentication. Kommentieren Sie die Zeile + no + aus und entfernen Sie das Kommentarzeichen für die Zeile + no +.

/ etc / ssh / sshd_config

. . .
# Change to no to disable s/key passwords

ChallengeResponseAuthentication no
. . .

Speichern und schließen Sie die Datei und starten Sie SSH neu, um die Konfigurationsdateien neu zu laden. Durch einen Neustart des "+ sshd +" - Dienstes werden offene Verbindungen nicht geschlossen, sodass Sie nicht riskieren, sich mit diesem Befehl auszusperren.

sudo systemctl restart sshd.service

Um zu testen, ob alles funktioniert, öffnen Sie ein anderes Terminal und melden Sie sich über SSH an. Wenn Sie zuvor einen SSH-Schlüssel erstellt haben und diesen verwenden, müssen Sie weder das Kennwort Ihres Benutzers noch den MFA-Bestätigungscode eingeben. Dies liegt daran, dass ein SSH-Schlüssel standardmäßig alle anderen Authentifizierungsoptionen überschreibt. Andernfalls sollten Sie ein Passwort und einen Bestätigungscode erhalten haben.

Wenn Sie sicherstellen möchten, dass das, was Sie bisher getan haben, funktioniert, navigieren Sie in Ihrer geöffneten SSH-Sitzung zu "+ ~ / .ssh / +" und benennen Sie die Datei "authorized_keys" vorübergehend um. Öffnen Sie eine neue Sitzung und melden Sie sich bei unserer an Passwort und Bestätigungscode.

cd ~/.ssh
mv authorized_keys authorized_keys.bak

Nachdem Sie überprüft haben, dass Ihr TOTP-Token funktioniert, benennen Sie die Datei "authorized_keys.bak" wieder in die ursprüngliche um.

mv authorized_keys.bak authorized_keys

Als Nächstes müssen wir einen SSH-Schlüssel als einen Faktor und den Bestätigungscode als einen zweiten aktivieren und SSH mitteilen, welche Faktoren verwendet werden sollen, und verhindern, dass der SSH-Schlüssel alle anderen Typen überschreibt.

Schritt 3 - SSH MFA bewusst machen

Öffnen Sie die Konfigurationsdatei + sshd + erneut.

sudo nano /etc/ssh/sshd_config

Fügen Sie die folgende Zeile am Ende der Datei hinzu. Dies teilt SSH mit, welche Authentifizierungsmethoden erforderlich sind. Diese Zeile teilt SSH mit, dass wir einen SSH-Schlüssel und entweder ein Passwort oder einen Bestätigungscode (oder alle drei) benötigen.

/ etc / ssh / sshd_config

. . .
# Added by DigitalOcean build process
ClientAliveInterval 120
ClientAliveCountMax 2

Speichern und schließen Sie die Datei.

Öffnen Sie anschließend die PAM-Konfigurationsdatei + sshd + erneut.

sudo nano /etc/pam.d/sshd

Suchen Sie die Zeile "+ auth substack password-auth " oben in der Datei. Kommentieren Sie es aus, indem Sie ein " # +" - Zeichen als erstes Zeichen in der Zeile einfügen. Dadurch wird PAM angewiesen, kein Kennwort einzugeben.

/etc/pam.d/sshd

. . .
auth       substack     password-auth
. . .

Speichern und schließen Sie die Datei und starten Sie SSH neu.

sudo systemctl restart sshd.service

Versuchen Sie nun erneut, sich mit einer anderen Sitzung beim Server anzumelden. Im Gegensatz zum letzten Mal sollte SSH nach Ihrem Bestätigungscode fragen. Nach der Eingabe werden Sie angemeldet. Obwohl Sie keinen Hinweis darauf sehen, dass Ihr SSH-Schlüssel verwendet wurde, wurden bei Ihrem Anmeldeversuch zwei Faktoren berücksichtigt. Wenn Sie überprüfen möchten, können Sie nach dem SSH-Befehl "+ -v +" (für ausführliche Informationen) hinzufügen:

Example SSH output\. . .
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /Users/sammy/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 279
Authenticated with partial success.
debug1: Authentications that can continue: keyboard-interactive
debug1: Next authentication method: keyboard-interactive
Verification code:

Gegen Ende der Ausgabe wird angezeigt, wo SSH Ihren SSH-Schlüssel verwendet, und Sie werden nach dem Bestätigungscode gefragt. Sie können sich jetzt über SSH mit einem SSH-Schlüssel und einem Einmalpasswort anmelden. Wenn Sie alle drei Authentifizierungstypen erzwingen möchten, können Sie den nächsten Schritt ausführen.

Schritt 4 - Hinzufügen eines dritten Faktors (optional)

In Schritt 3 haben wir die genehmigten Authentifizierungstypen in der Datei "+ sshd_config +" aufgelistet:

  1. + publickey + (SSH-Schlüssel)

  2. + password publickey + (Passwort)

  3. + keyboard-interactive + (Bestätigungscode)

Obwohl wir drei verschiedene Faktoren aufgelistet haben, lassen sie bei den bisher ausgewählten Optionen nur einen SSH-Schlüssel und den Bestätigungscode zu. Wenn Sie alle drei Faktoren (SSH-Schlüssel, Kennwort und Bestätigungscode) haben möchten, werden alle drei durch eine schnelle Änderung aktiviert.

Öffnen Sie die PAM + sshd + Konfigurationsdatei.

sudo nano /etc/pam.d/sshd

Suchen Sie die zuvor auskommentierte Zeile "+ # auth substack password-auth " und entfernen Sie das Zeichen " # +", um das Kommentarzeichen zu entfernen. Speichern und schließen Sie die Datei. Starten Sie jetzt SSH erneut.

sudo systemctl restart sshd.service

Durch Aktivieren der Option "+ auth substack password-auth +" fordert PAM jetzt zur Eingabe eines Kennworts auf. Außerdem wird nach einem SSH-Schlüssel gesucht und nach einem Bestätigungscode gefragt, mit dem wir zuvor gearbeitet haben. Jetzt können wir etwas, das wir kennen (Passwort) und zwei verschiedene Arten von Dingen, die wir haben (SSH-Schlüssel und Bestätigungscode), über zwei verschiedene Kanäle verwenden.

Bisher wurde in diesem Artikel beschrieben, wie MFA mit einem SSH-Schlüssel und einem zeitbasierten Einmalkennwort aktiviert wird. Wenn das alles ist, was Sie brauchen, können Sie hier enden. Dies ist jedoch nicht die einzige Möglichkeit, eine Multi-Faktor-Authentifizierung durchzuführen. Im Folgenden finden Sie einige zusätzliche Möglichkeiten zur Verwendung dieses PAM-Moduls für die Multi-Faktor-Authentifizierung sowie einige Tipps und Tricks zur Wiederherstellung, automatisierten Verwendung und mehr.

Tipp 1 - Wiederherstellen des Zugriffs

Wie bei jedem System, das Sie sichern und sichern, sind Sie für die Verwaltung dieser Sicherheit verantwortlich. In diesem Fall bedeutet dies, dass Sie weder Ihren SSH-Schlüssel noch Ihren geheimen TOTP-Schlüssel verlieren und sicherstellen, dass Sie Zugriff auf Ihre TOTP-App haben. Manchmal kann es jedoch vorkommen, dass Sie die Kontrolle über die Schlüssel oder Apps verlieren, die Sie benötigen, um darauf zugreifen zu können.

Verlust eines SSH-Schlüssels oder eines geheimen TOTP-Schlüssels

Wenn Sie Ihren SSH-Schlüssel oder Ihren geheimen TOTP-Schlüssel verlieren, kann die Wiederherstellung in mehrere Schritte unterteilt werden. Der erste Schritt besteht darin, wieder einzusteigen, ohne den Bestätigungscode zu kennen, und der zweite darin, den geheimen Schlüssel zu finden oder ihn für die normale MFA-Anmeldung zu regenerieren.

Um nach dem Verlust des geheimen Schlüssels, der den Bestätigungscode für ein DigitalOcean-Droplet generiert, einzusteigen, können Sie einfach https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-console-to-access -your-droplet [Verwenden Sie die virtuelle Konsole] in Ihrem Dashboard, um sich mit Ihrem Benutzernamen und Kennwort anzumelden.

Andernfalls benötigen Sie einen Administrator mit sudo-Zugriff. Stellen Sie sicher, dass Sie MFA nicht für diesen Benutzer aktivieren, sondern nur einen SSH-Schlüssel verwenden. Wenn Sie oder ein anderer Benutzer ihren geheimen Schlüssel verlieren und sich nicht anmelden können, kann sich der Administrator anmelden und den Schlüssel mithilfe von "+ sudo +" für einen beliebigen Benutzer wiederherstellen oder neu generieren.

Sobald Sie angemeldet sind, gibt es zwei Möglichkeiten, um das TOTP-Geheimnis zu ermitteln:

  1. Stellen Sie den vorhandenen Schlüssel wieder her

  2. Erzeugen Sie einen neuen Schlüssel

Im Home-Verzeichnis jedes Nutzers werden der geheime Schlüssel und die Google Authenticator-Einstellungen in "+ ~ / .google-authenticator " gespeichert. Die allererste Zeile dieser Datei ist ein geheimer Schlüssel. Eine schnelle Möglichkeit, den Schlüssel zu erhalten, besteht darin, den folgenden Befehl auszuführen, der die erste Zeile der Datei " google-authenticator +" anzeigt (d. H. den geheimen Schlüssel). Nehmen Sie dann diesen geheimen Schlüssel und geben Sie ihn manuell in eine TOTP-App ein.

head -n 1 /home//.google_authenticator

Wenn es einen Grund gibt, den vorhandenen Schlüssel nicht zu verwenden (z. B. weil der geheime Schlüssel nicht sicher für den betroffenen Benutzer freigegeben werden kann oder der vorhandene Schlüssel kompromittiert wurde), können Sie die Datei "+ ~ / .google-authenticator " entfernen geradeheraus. Auf diese Weise kann sich der Benutzer erneut mit nur einem Faktor anmelden, sofern Sie MFA nicht durch Entfernen von "nullok" in der Datei "/etc/pam.d/sshd" erzwungen haben. Sie können dann " google-authenticator" ausführen, um einen neuen Schlüssel zu generieren.

Zugriff auf die TOTP-App verlieren

Wenn Sie sich bei Ihrem Server anmelden müssen, aber keinen Zugriff auf Ihre TOTP-App haben, um Ihren Bestätigungscode zu erhalten, können Sie sich weiterhin mit den Wiederherstellungscodes anmelden, die angezeigt wurden, als Sie Ihren geheimen Schlüssel erstellt haben. Beachten Sie, dass diese Wiederherstellungscodes nur einmal verwendet werden. Sobald Sie sich angemeldet haben, können Sie diesen Code nicht mehr als Bestätigungscode verwenden.

Tipp 2 - Ändern der Authentifizierungseinstellungen

Wenn Sie Ihre MFA-Einstellungen nach der Erstkonfiguration ändern möchten, anstatt eine neue Konfiguration mit den aktualisierten Einstellungen zu erstellen, können Sie einfach die Datei "+ ~ / .google-authenticator +" bearbeiten. Diese Datei ist folgendermaßen angelegt:

google-authenticator layout
<secret key>
<options>
<recovery codes>

Optionen, die in dieser Datei festgelegt sind, haben eine Zeile im Optionsbereich. Wenn Sie bei der Ersteinrichtung auf eine bestimmte Option mit „Nein“ geantwortet haben, wird die entsprechende Zeile aus der Datei ausgeschlossen.

Hier sind die Änderungen, die Sie an dieser Datei vornehmen können:

  • Um sequentielle Codes anstelle von zeitbasierten Codes zu aktivieren, ändern Sie die Zeile "+" TOTP_AUTH + "in" + "HOTP_COUNTER 1 +".

  • Entfernen Sie die Zeile "+" DISALLOW_REUSE + ", um die mehrfache Verwendung eines einzelnen Codes zuzulassen.

  • Fügen Sie die Zeile "+" WINDOW_SIZE 17 + "hinzu, um das Code-Ablauffenster auf 4 Minuten zu verlängern.

  • Um mehrere fehlgeschlagene Anmeldungen zu deaktivieren (Ratenbegrenzung), entfernen Sie die Zeile "+" RATE_LIMIT 3 30 + ".

  • Um die Schwelle der Ratenbegrenzung zu ändern, suchen Sie die Zeile "" RATE_LIMIT 3 30 + "und passen Sie die Zahlen an. Das " 3 " im Original gibt die Anzahl der Versuche über einen bestimmten Zeitraum an, und das " 30 +" gibt den Zeitraum in Sekunden an.

  • Entfernen Sie die fünf achtstelligen Codes am Ende der Datei, um die Verwendung von Wiederherstellungscodes zu deaktivieren.

Tipp 3 - Vermeiden von MFA für einige Konten

Es kann vorkommen, dass ein einzelner Benutzer oder einige Dienstkonten (d. H. Konten, die von Anwendungen (nicht von Menschen) verwendet werden, benötigen SSH-Zugriff, ohne dass MFA aktiviert ist. Einige Anwendungen, die SSH verwenden, wie z. B. einige FTP-Clients, unterstützen möglicherweise MFA nicht. Wenn eine Anwendung nicht in der Lage ist, den Bestätigungscode anzufordern, bleibt die Anfrage möglicherweise hängen, bis das Timeout der SSH-Verbindung abläuft.

Solange einige Optionen in "+ / etc / pam.d / sshd +" korrekt eingestellt sind, können Sie steuern, welche Faktoren von Benutzer zu Benutzer verwendet werden.

Um MFA für einige Konten und SSH-Schlüssel nur für andere zuzulassen, stellen Sie sicher, dass die folgenden Einstellungen in "+ / etc / pam.d / sshd +" aktiv sind.

/etc/pam.d/sshd

#%PAM-1.0
auth       required     pam_sepermit.so
#auth       substack     password-auth

. . .

# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare
auth       required      pam_google_authenticator.so nullok

Hier wird "+ auth substack password-auth " auskommentiert, da Passwörter deaktiviert werden müssen. MFA kann nicht erzwungen werden, wenn für einige Konten MFA deaktiviert sein soll. Lassen Sie daher die Option " nullok +" in der letzten Zeile.

Führen Sie nach dem Festlegen dieser Konfiguration einfach "+ google-authenticator +" als Benutzer aus, die MFA benötigen, und führen Sie es nicht für Benutzer aus, für die nur SSH-Schlüssel verwendet werden.

Tipp 4 - Automatisieren des Setups mit Configuration Management

Viele Systemadministratoren verwenden configuration management tools, um ihre Systeme zu verwalten, z. B. Puppet, Chef oder Ansible. Wenn Sie ein solches System zum Installieren verwenden möchten, können Sie beim Erstellen eines neuen Benutzerkontos einen geheimen Schlüssel einrichten.

+ google-authenticator unterstützte Befehlszeilenschalter zum Festlegen aller Optionen in einem einzelnen, nicht interaktiven Befehl. Um alle Optionen anzuzeigen, können Sie "+ google-authenticator --help" eingeben. Nachfolgend finden Sie den Befehl, mit dem alles wie in Schritt 1 beschrieben eingerichtet wird:

google-authenticator -t -d -f -r 3 -R 30 -W

Auf diese Weise werden alle von uns manuell beantworteten Fragen beantwortet, in einer Datei gespeichert und anschließend der geheime Schlüssel, der QR-Code und die Wiederherstellungscodes ausgegeben. (Wenn Sie das Flag "+ -q +" hinzufügen, erfolgt keine Ausgabe.) Wenn Sie diesen Befehl automatisiert verwenden, stellen Sie sicher, dass Sie den geheimen Schlüssel und / oder die Wiederherstellungscodes erfassen und für verfügbar machen der Benutzer.

Tipp 5 - Erzwingen von MFA für alle Benutzer

Wenn Sie MFA für alle Benutzer erzwingen möchten, selbst wenn Sie sich zum ersten Mal anmelden, oder wenn Sie nicht möchten, dass Ihre Benutzer ihre eigenen Schlüssel generieren, gibt es eine einfache Möglichkeit, dies zu tun. Sie können einfach für jeden Nutzer dieselbe "+ .google-authenticator +" - Datei verwenden, da in der Datei keine benutzerspezifischen Daten gespeichert sind.

Dazu muss ein privilegierter Benutzer nach der erstmaligen Erstellung der Konfigurationsdatei die Datei in das Stammverzeichnis jedes Basisverzeichnisses kopieren und die Berechtigungen auf den entsprechenden Benutzer ändern. Sie können die Datei auch nach + / etc / skel + / kopieren, damit sie beim Erstellen automatisch in das Ausgangsverzeichnis eines neuen Benutzers kopiert wird.

Eine andere Methode, um die Erstellung des geheimen Schlüssels eines Benutzers zu erzwingen, ist die Verwendung eines Bash-Skripts, das:

  1. Erstellt ein TOTP-Token,

  2. Fordert sie auf, die Google Authenticator-App herunterzuladen und den angezeigten QR-Code zu scannen

  3. Führt die Anwendung "+ google-authenticator " für sie aus, nachdem überprüft wurde, ob die Datei " .google-authenticator +" bereits vorhanden ist.

Um sicherzustellen, dass das Skript ausgeführt wird, wenn sich ein Benutzer anmeldet, können Sie ihm den Namen "+ .bash_login +" geben und es im Stammverzeichnis seines Ausgangsverzeichnisses ablegen.

Fazit

Indem Sie zwei Faktoren (einen SSH-Schlüssel + ein MFA-Token) über zwei Kanäle (Ihren Computer + Ihr Telefon) hinweg haben, haben Sie es einem externen Agenten sehr schwer gemacht, über SSH brutal in Ihren Computer einzudringen die Sicherheit Ihrer Maschine.