Einrichten der Multi-Factor-Authentifizierung für SSH unter Ubuntu 16.04

Einführung

Einauthentication factor ist eine einzelne Information, die verwendet wird, um zu beweisen, dass Sie die Rechte zum Ausführen einer Aktion haben, z. B. zum Anmelden bei einem System. Einauthentication channel ist die Art und Weise, wie 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. In den meisten Anweisungen zur SSH-Absicherung wird die Verwendung eines SSH-Schlüssels empfohlen. 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. Multi-factor authentication (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 oft wie folgt zusammengefasst:

  1. Etwas, das Sieknow, wie ein Passwort oder eine Sicherheitsfrage

  2. Etwas, das Siehave, wie eine Authentifizierungs-App oder ein Sicherheitstoken

  3. Etwas, das Sieare, wie Ihr Fingerabdruck oder Ihre Stimme

Ein häufiger Faktor ist eine OATH-TOTP-App wie Google Authenticator. OATH-TOTP (Open Authentication Time-Based One-Time Password) ist ein offenes Protokoll, das ein Einmalbenutzungskennwort generiert, normalerweise eine 6-stellige Nummer, die alle 30 Sekunden recycelt 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:

  • Ein Ubuntu 16.04-Server mit einem sudo-Benutzer ohne Rootberechtigung, SSH-Schlüssel und aktivierter Firewall, den Sie einrichten können, indem Siethis Initial Server Setup tutorial folgen.

  • Ein Smartphone oder Tablet mit einer installierten OATH-TOTP-App wie Google Authenticator (iOS,Android).

[[Schritt-1 -—- Installieren von Google-39-s-Pam]] == Schritt 1 - Installieren von Googles PAM

In diesem Schritt installieren und konfigurieren wir Google PAM.

PAM, das fürPluggable Authentication Module steht, 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 jeder OATH-TOTP-App wie Google Authenticator oderAuthy vollständig kompatibel ist.

Aktualisieren Sie zunächst den Ubuntu-Repository-Cache.

sudo apt-get update

Installieren Sie als Nächstes den PAM.

sudo apt-get install libpam-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) y

Diese PAM ermöglicht zeitbasierte oder sequenzielle Tokens. Die Verwendung vonsequential-based tokensbedeutet, dass der Code an einem bestimmten Punkt beginnt und den Code nach jeder Verwendung erhöht. Die Verwendung vontime-based tokensbedeutet, dass sich der Code nach Ablauf einer bestimmten Zeit zufällig ändert. Wir bleiben zeitbasiert, da Apps wie Google Authenticator dies erwarten. Beantworten Sie alsoy mit "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.

[.Hinweis]##

Note: Stellen Sie sicher, dass Sie den geheimen Schlüssel, den Bestätigungscode und die Wiederherstellungscodes an einem sicheren Ort wie einem Kennwortmanager aufzeichnen. Die Wiederherstellungscodes sind die einzige Möglichkeit, den Zugriff wiederherzustellen, wenn Sie beispielsweise den Zugriff auf Ihre TOTP-App verlieren.

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

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

Dadurch werden der Schlüssel und die Optionen in die Datei.google_authenticatorgeschrieben. 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) y

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

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

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.

[.Hinweis]##

Note: Wenn Sie nach Abschluss dieses Setups Ihren geheimen Schlüssel sichern möchten, können Sie die Datei~/.google-authenticator an einen vertrauenswürdigen Speicherort kopieren. Von dort aus können Sie es auf zusätzlichen Systemen bereitstellen oder nach einer Sicherung erneut bereitstellen.

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 - Konfigurieren von OpenSh]] == Schritt 2 - Konfigurieren von OpenSSH

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.

Öffnen Sie zunächst die Konfigurationsdatei vonsshdzur Bearbeitung mitnano oder Ihrem bevorzugten Texteditor.

sudo nano /etc/pam.d/sshd

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

/etc/pam.d/sshd

. . .
# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so nullok

Das Wortnullokam Ende der letzten Zeile teilt dem 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 Sienullok aus dieser Zeile entfernen, um MFA obligatorisch zu machen.

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 nachChallengeResponseAuthentication und setzen Sie den Wert aufyes.

/etc/ssh/sshd_config

. . .
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication yes
. . .

Speichern und schließen Sie die Datei und starten Sie SSH neu, um die Konfigurationsdateien neu zu laden. Durch einen Neustart dessshd-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.

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

[[Schritt-3 -—- ssh-bewusst-von-mfa machen]] == Schritt 3 - SSH auf MFA aufmerksam machen

Öffnen Sie die Konfigurationsdatei vonsshderneut.

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

. . .
UsePAM yes
AuthenticationMethods publickey,password publickey,keyboard-interactive

Speichern und schließen Sie die Datei.

Öffnen Sie als Nächstes die Konfigurationsdatei von PAMsshderneut.

sudo nano /etc/pam.d/sshd

Suchen Sie die Zeile@include common-auth und kommentieren Sie sie aus, indem Sie ein#-Zeichen als erstes Zeichen in der Zeile hinzufügen. Dadurch wird PAM angewiesen, kein Kennwort einzugeben.

/etc/pam.d/sshd

. . .
# Standard Un*x authentication.
#@include common-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ührlich) 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 rsa-sha2-512 blen 279
Authenticated with partial success.
debug1: Authentications that can continue: password,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]] == Schritt 4 - Hinzufügen eines dritten Faktors (optional)

In Schritt 3 haben wir die genehmigten Authentifizierungstypen in der Dateisshd_configaufgelistet:

  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 Konfigurationsdatei von PAMsshd.

sudo nano /etc/pam.d/sshd

Suchen Sie die zuvor auskommentierte Zeile#@include common-auth und kommentieren Sie die Zeile aus, indem Sie das Zeichen#entfernen. Speichern und schließen Sie die Datei. Starten Sie jetzt SSH erneut.

sudo systemctl restart sshd.service

Durch Aktivieren der Option@include common-auth fordert PAM nun zusätzlich zur Überprüfung eines SSH-Schlüssels und der Abfrage eines Bestätigungscodes, den wir zuvor hatten, zur Eingabe eines Kennworts auf. 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 - Zugriff wiederherstellen]] == Tipp 1 - Zugriff wiederherstellen

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 auf einem DigitalOcean Droplet generiert, einzusteigen, können Sie sich einfachuse the virtual console von Ihrem Dashboard aus mit Ihrem Benutzernamen und Passwort anmelden.

Andernfalls benötigen Sie einen Administrator mit sudo-Zugriff. Stellen Sie sicher, dass Sie MFA für diesen Benutzer nicht aktivieren, sondern 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 dabei helfen, den Schlüssel für jeden Benutzer mithilfe vonsudo wiederherzustellen oder neu zu 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 Benutzers werden die Einstellungen für den geheimen Schlüssel und den Google Authenticator in~/.google-authenticator gespeichert. Die allererste Zeile dieser Datei ist ein geheimer Schlüssel. Ein schneller Weg, um den Schlüssel zu erhalten, besteht darin, den folgenden Befehl auszuführen, der die erste Zeile der Dateigoogle-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/sammy/.google_authenticator

Wenn es einen Grund gibt, den vorhandenen Schlüssel nicht zu verwenden (z. B. weil der geheime Schlüssel nicht einfach sicher für den betroffenen Benutzer freigegeben werden kann), können Sie die Datei~/.google-authenticatorofort entfernen. Auf diese Weise kann sich der Benutzer erneut mit nur einem Faktor anmelden, sofern Sie MFA nicht erzwungen haben. Sie können danngoogle-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]] == 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 generieren, können Sie einfach die Datei~/.google-authenticatorbearbeiten. Diese Datei ist folgendermaßen angelegt:

Google-Authenticator-Layout


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 zu ermöglichen.

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

  • Entfernen Sie die Zeile" RATE_LIMIT 3 30, um mehrere fehlgeschlagene Anmeldungen zu deaktivieren (Ratenbegrenzung).

  • Um den Schwellenwert für die Ratenbegrenzung zu ändern, suchen Sie die Zeile" RATE_LIMIT 3 30 und passen Sie die Zahlen an. Die3 im Original geben die Anzahl der Versuche über einen bestimmten Zeitraum an, und die30 geben den Zeitraum in Sekunden an.

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

[[tip-3 -—- Vermeiden von mfa-für-einige-Konten]] == 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 richtig eingestellt sind, können Sie steuern, welche Faktoren von Benutzer zu Benutzer verwendet werden.

Stellen Sie sicher, dass die folgenden Einstellungen in/etc/pam.d/sshd aktiv sind, um MFA für einige Konten und SSH nur für andere zuzulassen.

/etc/pam.d/sshd

# PAM configuration for the Secure Shell service

# Standard Un*x authentication.
#@include common-auth

. . .

# Standard Un*x password updating.
@include common-password
auth required pam_google_authenticator.so nullok

Hier wird@include common-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 Optionnullokin der letzten Zeile.

Führen Sie nach dem Festlegen dieser Konfiguration einfachgoogle-authenticator als Benutzer aus, die MFA benötigen, und führen Sie sie nicht für Benutzer aus, bei denen nur SSH-Schlüssel verwendet werden.

[[Tipp-4 - Automatisieren des Setups mit Konfigurationsmanagement]] == Tipp 4 - Automatisieren des Setups mit Konfigurationsmanagement

Viele Systemadministratoren verwendenconfiguration management tools, wie Puppet, Chef oder Ansible, um ihre Systeme zu verwalten. 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ützt Befehlszeilenoptionen, um alle Optionen in einem einzigen, nicht interaktiven Befehl festzulegen. Um alle Optionen anzuzeigen, können Siegoogle-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, wird keine Ausgabe ausgegeben.) Wenn Sie diesen Befehl automatisiert verwenden, stellen Sie sicher, dass Sie den geheimen Schlüssel und / oder die Wiederherstellungscodes erfassen und erstellen für den Benutzer verfügbar.

[[tip-5 -—- mfa-for-all-users erzwingen]] == Tipp 5 - MFA für alle Benutzer erzwingen

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 Benutzer 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 Home-Verzeichnis eines neuen Benutzers kopiert wird.

[.Warnung]##

Warning: Dies kann ein Sicherheitsrisiko sein, da alle denselben zweiten Faktor teilen. Das heißt, wenn es durchgesickert ist, hat jeder Benutzer nur einen Faktor. Berücksichtigen Sie dies, wenn Sie diesen Ansatz verwenden möchten.

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 Anwendunggoogle-authenticatorfür sie aus, nachdem überprüft wurde, ob die Datei.google-authenticatorbereits vorhanden ist.

Um sicherzustellen, dass das Skript ausgeführt wird, wenn sich ein Benutzer anmeldet, können Sie es.bash_login nennen und 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.