„Secure Shell“ SSH ist ein Netzwerkprotokoll zum Aufbau einer sicheren Verbindung zwischen Hosts, standardmäßig über Port 22 (was 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, d. h. Sie können remote auf einem anderen Computer arbeiten, einen Audio- oder Videostream über einen verschlüsselten Kanal übertragen usw. Außerdem, Sie können im Namen dieses Remote-Hosts eine Verbindung zu anderen Hosts herstellen.
Die Authentifizierung erfolgt über ein Passwort, Entwickler und Systemadministratoren verwenden jedoch traditionell SSH-Schlüssel. Das Problem besteht darin, dass der private Schlüssel gestohlen werden kann. Das Hinzufügen einer Passphrase schützt theoretisch vor Diebstahl des privaten Schlüssels, in der Praxis jedoch, wenn Schlüssel weitergeleitet und zwischengespeichert werden, ist dies der Fall . Die Zwei-Faktor-Authentifizierung löst dieses Problem.
So implementieren Sie die Zwei-Faktor-Authentifizierung
Entwickler von Honeycomb haben kürzlich veröffentlicht , wie man die entsprechende Infrastruktur auf dem Client und Server implementiert.
Bei den Anweisungen wird davon ausgegangen, dass Sie über einen bestimmten Basishost verfügen, der für das Internet geöffnet ist (Bastion). Sie möchten sich von Laptops oder Computern über das Internet mit diesem Host verbinden und auf alle anderen Geräte zugreifen, die sich dahinter befinden. 2FA stellt sicher, dass ein Angreifer nicht dasselbe tun kann, selbst wenn er Zugriff auf Ihren Laptop erhält, beispielsweise durch die Installation von Malware.
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. Die Entwickler schreiben, dass dies keine ideale Option sei, da ein Angreifer eine Fake-Bastion errichten, Ihr OTP abfangen und nutzen könnte. Aber es ist besser als nichts.
In diesem Fall werden serverseitig folgende Zeilen in die Chef-Konfiguration geschrieben:
metadata.rbattributes/default.rb(vonattributes.rb)files/sshdrecipes/default.rb(Kopie vonrecipe.rb)templates/default/users.oath.erb
Auf der Clientseite wird jede OTP-Anwendung installiert: Google Authenticator, Authy, Duo, Lastpass, installiert brew install oath-toolkit oder apt install oathtool openssl, dann wird eine zufällige Base16-Zeichenfolge (Schlüssel) generiert. Es wird in das Base32-Format konvertiert, das mobile Authentifikatoren verwenden, und direkt in die Anwendung importiert.
Als Ergebnis können Sie sich mit Bastion verbinden und sehen, dass es jetzt nicht nur eine Passphrase, sondern auch einen OTP-Code zur Authentifizierung benötigt:
➜ ssh -A bastion
Enter passphrase for key '[snip]':
One-time password (OATH) for '[user]':
Welcome to Ubuntu 18.04.1 LTS...Die zweite Option ist die Hardwareauthentifizierung
In diesem Fall muss der Benutzer nicht jedes Mal den OTP-Code eingeben, da der zweite Faktor das Hardwaregerät oder die Biometrie ist.
Hier ist die Chef-Konfiguration etwas komplizierter und die Client-Konfiguration hängt vom Betriebssystem ab. Aber nach Abschluss aller Schritte können Clients unter MacOS die Authentifizierung in SSH mithilfe einer Passphrase und einem Fingerauflegen auf den Sensor bestätigen (zweiter Faktor).
Владельцы iOS и Android подтверждают вход . Hierbei handelt es sich um eine spezielle Technologie von Krypt.co, die noch sicherer als OTP ist.
Auf Linux/ChromeOS есть вариант работы с USB-токенами YubiKey. Конечно, злоумышленник может похитить ваш токен, но он всё равно не знает парольную фразу.
Source: habr.com
