Die „sichere Hülle“ SSH ist ein Netzwerkprotokoll zur Herstellung einer sicheren Verbindung zwischen Hosts, standardmäßig über Port 22 (den man besser ändern sollte). SSH-Clients und SSH-Server sind für die meisten Betriebssysteme verfügbar. Innerhalb von SSH funktioniert praktisch jedes andere Netzwerkprotokoll, sodass man remote auf einem anderen Computer arbeiten, Audio- oder Videostreams über einen verschlüsselten Kanal übertragen usw. kann. Darüber hinaus kann man sich bereits im Namen dieses entfernten Hosts mit anderen Hosts verbinden.
Die Authentifizierung erfolgt per Passwort, aber Entwickler und Systemadministratoren verwenden traditionell SSH-Schlüssel. Das Problem dabei ist, dass der geheime Schlüssel gestohlen werden kann. Das Hinzufügen einer Passwortphrase schützt theoretisch vor dem Diebstahl des geheimen Schlüssels, aber in der Praxis können sie bei der Weiterleitung und dem Caching von Schlüsseln . Die Zwei-Faktor-Authentifizierung löst dieses Problem.
Wie man die Zwei-Faktor-Authentifizierung umsetzt
Die Entwickler von Honeycomb haben kürzlich wie man die entsprechende Infrastruktur auf dem Client und dem Server umsetzt.
Die Anleitung setzt voraus, dass Sie einen bestimmten Basis-Host haben, der im Internet verfügbar ist (Bastion). Sie möchten sich von Laptops oder Computern über das Internet mit diesem Host verbinden und Zugriff auf alle anderen Geräte erhalten, die sich dahinter befinden. 2FA garantiert, dass ein Angreifer dasselbe nicht tun kann, selbst wenn er Zugriff auf Ihr Laptop hat, beispielsweise durch die Installation von Malware.
Die erste Variante ist OTP
OTP sind einmalige digitale Passwörter, die in diesem Fall zur SSH-Authentifizierung zusammen mit dem Schlüssel verwendet werden. Die Entwickler schreiben, dass dies keine ideale Lösung ist, da ein Angreifer einen gefälschten Bastion einrichten, Ihr OTP abfangen und es verwenden kann. Aber es ist besser als nichts.
In diesem Fall werden auf der Serverseite die folgenden Zeilen in der Konfiguration von Chef angegeben:
metadata.rbattributes/default.rb(vonattributes.rb)files/sshdrecipes/default.rb(Kopie vonrecipe.rb)templates/default/users.oath.erb
Auf der Client-Seite wird eine beliebige OTP-Anwendung installiert: Google Authenticator, Authy, Duo, Lastpass, und es wird brew install oath-toolkit oder apt install oathtool openssl, dann wird eine zufällige Zeichenkette im Format base16 (Schlüssel) generiert. Diese wird in das Base32-Format umgewandelt, das von mobilen Authentifizierern verwendet wird, und direkt in die Anwendung importiert.
Am Ende können Sie sich mit dem Bastion verbinden und sicherstellen, dass dieser nun nicht nur das Passwort, sondern auch einen OTP-Code zur Authentifizierung verlangt:
➜ ssh -A bastion
Geben Sie das Passwort für den Schlüssel '[snip]' ein:
Einmalpasswort (OATH) für '[user]':
Willkommen bei Ubuntu 18.04.1 LTS...Die zweite Möglichkeit ist die Hardware-Authentifizierung
In diesem Fall muss der Benutzer nicht jedes Mal einen OTP-Code eingeben, da das zweite Faktor ein Hardware-Gerät oder Biometrie ist.
Hier ist die Chef-Konfiguration etwas komplexer, und die Konfiguration der Clients hängt vom Betriebssystem ab. Aber nachdem alle Schritte ausgeführt wurden, können die Clients auf MacOS die Authentifizierung in SSH durch Eingabe des Passworts und durch das Anlegen des Fingers an den Sensor (zweiter Faktor) bestätigen.
iOS- und Android-Besitzer bestätigen den Zugang . Dies ist eine spezielle Technologie von Krypt.co, die sogar sicherer ist als OTP.
Unter Linux/ChromeOS gibt es die Möglichkeit, mit USB-Token wie YubiKey zu arbeiten. Natürlich kann ein Angreifer Ihren Token stehlen, aber er kennt trotzdem nicht das Passwort.
Quelle: habr.com
