"Secure Shell" SSH ist ein Netzwerkprotokoll zum Herstellen einer sicheren Verbindung zwischen Hosts, Standard an Port 22 (das besser zu ändern ist). SSH-Clients und SSH-Server sind für die meisten Betriebssysteme verfügbar. Fast jedes andere Netzwerkprotokoll funktioniert innerhalb von SSH, dh Sie können remote auf einem anderen Computer arbeiten, einen Audiostream oder ein Video über einen verschlüsselten Kanal übertragen usw. Darüber hinaus können Sie
über SOCKS-Proxys auf einem Remote-Host im Namen dieses Remote-Hosts eine Verbindung zu anderen Hosts herstellen.
Die Authentifizierung erfolgt mit einem Kennwort, Entwickler und Systemadministratoren verwenden jedoch traditionell SSH-Schlüssel. Das Problem ist, dass der geheime Schlüssel gestohlen werden kann. Das Hinzufügen einer Passphrase schützt theoretisch vor Diebstahl des geheimen Schlüssels. In der Praxis können Schlüssel beim Weiterleiten und Zwischenspeichern
jedoch weiterhin ohne Bestätigung verwendet werden . Die Zwei-Faktor-Authentifizierung löst dieses Problem.
So implementieren Sie die Zwei-Faktor-Authentifizierung
Die Entwickler von Honeycomb haben kürzlich
detaillierte Anweisungen zur Implementierung der entsprechenden Infrastruktur auf dem Client und dem Server veröffentlicht.
Die Anweisung setzt voraus, dass Sie einen bestimmten Basishost haben, der im Internet geöffnet ist (Bastion). Sie möchten von Laptops oder Computern über das Internet eine Verbindung zu diesem Host herstellen und Zugriff auf alle anderen dahinter stehenden Geräte erhalten. 2FA stellt sicher, dass ein Angreifer nicht dasselbe tun kann, selbst wenn er beispielsweise durch die Installation von Malware Zugriff auf Ihren Laptop erhält.
Die erste Option ist OTP
OTP - Einmalige digitale Passwörter, die in diesem Fall zusammen mit dem Schlüssel für die SSH-Authentifizierung verwendet werden. Entwickler schreiben, dass dies keine ideale Option ist, da ein Angreifer eine gefälschte Bastion aufheben, Ihr OTP abfangen und verwenden kann. Das ist aber besser als nichts.
In diesem Fall werden die folgenden Zeilen in die Chef-Konfiguration auf der Serverseite geschrieben:
metadata.rb
attributes/default.rb
(von attributes.rb
)files/sshd
recipes/default.rb
(Kopie von recipe.rb
)templates/default/users.oath.erb
Jede OTP-Anwendung wird auf der Clientseite installiert: Google Authenticator, Authy, Duo, Lastpass,
brew install oath-toolkit
apt install oathtool openssl
oder
apt install oathtool openssl
, und anschließend wird eine zufällige base16-Zeichenfolge (Schlüssel) generiert. Es wird in das Base32-Format konvertiert, das von mobilen Authentifikatoren verwendet wird, und direkt in die Anwendung importiert.
Infolgedessen können Sie eine Verbindung zur Bastion herstellen und sicherstellen, dass jetzt nicht nur eine Passphrase, sondern auch ein OTP-Code für die Authentifizierung erforderlich ist:
➜ ssh -A bastion Enter passphrase for key '[snip]': One-time password (OATH) for '[user]': Welcome to Ubuntu 18.04.1 LTS...
Option Zwei - Hardwareauthentifizierung
In diesem Fall muss der Benutzer nicht jedes Mal einen OTP-Code eingeben, da der zweite Faktor das Hardwaregerät oder die Biometrie ist.
Hier ist die Konfiguration von Chef etwas komplizierter und die Konfiguration der Clients hängt vom Betriebssystem ab. Nach Abschluss aller Schritte können Clients unter MacOS die Authentifizierung in SSH mithilfe einer Passphrase bestätigen und einen Finger auf den Sensor legen (zweiter Faktor).
Besitzer von iOS und Android bestätigen die Eingabe
durch Drücken einer einzigen Taste auf dem Smartphone . Dies ist eine spezielle Technologie von Krypt.co, die noch sicherer als OTP ist.
Unter Linux / ChromeOS besteht die Möglichkeit, mit YubiKey-USB-Token zu arbeiten. Natürlich kann ein Angreifer Ihren Token stehlen, aber er kennt die Passphrase immer noch nicht.

