SSH ist das bewährte Mittel für den Zugriff auf Serversysteme. Über Tunnelmechanismen erhalten Sie Zugang zum Intranet oder zu weiteren Servern. Mit einigen Tricks ist es sogar möglich, ein klassisches VPN-Netzwerk zu etablieren. Im Schatten von SSH ist in den letzten Jahren eine moderne Alternative entstanden, die ein Absichern unterschiedlicher Verbindungen erlaubt. Teleport sorgt nicht nur für einen SSH-kompatiblen Shell-Zugang, sondern auch für sichere Zugriffe auf Kubernetes-Cluster, Datenbanken oder interne Webdienste.
Das Clustersystem Teleport [1] erlaubt Ihnen die Absicherung unterschiedlicher Systeme und vereinfacht dabei das Management von Benutzern und Zugriffsrechten.
Teleport installieren
Die Installation von Teleport auf einem Ubuntu-System gestaltet sich denkbar einfach. Die Entwickler stellen ein eigenes Repository bereit, das Sie in Ihr System einbinden können. Dafür und um anschließend die Installation zu starten geben Sie die folgenden Kommandos ein:
Bei Bedarf können Sie auch die Binärdaten im Archiv herunterladen und Teleport per Hand installieren. Als Nächstes erstellen Sie die Konfiguration für Teleport unter "/etc/teleport.yaml". Dabei sollten Sie gleichzeitig die Nutzung von Let's Encrypt für Ihre Teleport-Instanz aktivieren, soweit Sie dafür einen Eintrag in Ihrem DNS-Server verwenden können. So müssen Sie auch nicht für den ersten Login auf eine unsichere Verbindung zurückgreifen.
Das Clustersystem Teleport [1] erlaubt Ihnen die Absicherung unterschiedlicher Systeme und vereinfacht dabei das Management von Benutzern und Zugriffsrechten.
Teleport installieren
Die Installation von Teleport auf einem Ubuntu-System gestaltet sich denkbar einfach. Die Entwickler stellen ein eigenes Repository bereit, das Sie in Ihr System einbinden können. Dafür und um anschließend die Installation zu starten geben Sie die folgenden Kommandos ein:
Bei Bedarf können Sie auch die Binärdaten im Archiv herunterladen und Teleport per Hand installieren. Als Nächstes erstellen Sie die Konfiguration für Teleport unter "/etc/teleport.yaml". Dabei sollten Sie gleichzeitig die Nutzung von Let's Encrypt für Ihre Teleport-Instanz aktivieren, soweit Sie dafür einen Eintrag in Ihrem DNS-Server verwenden können. So müssen Sie auch nicht für den ersten Login auf eine unsichere Verbindung zurückgreifen.
Mit dem folgenden Kommando erstellen Sie nun die Konfiguration und erlauben Teleport die Nutzung von Let's Encrypt als CA. Geben Sie Ihre E-Mail-Adresse an, um relevante Benachrichtigungen zu Ihrem Zertifikat zu erhalten. Anschließend starten Sie die Instanz mit dem start-Kommando:
Nun können Sie mit Ihrem Browser unter "https://<Domain>" auf das Teleport-Webinterface zugreifen. Für den Login müssen Sie noch den ersten Benutzer anlegen. Das können Sie auch über die Kommandozeile erledigen:
Wenn Sie Ihre Konfiguration zum Testen nicht unter "/etc/teleport.yaml" speichern, müssen Sie den Speicherort mit der Option "-c" mitgeben. Die Rolle "editor" entspricht einem Administrator. Die Rolle "access" erlaubt Zugriff auf Dienste Ihres Clusters. Die Logins entsprechen den Linux-Konten, mit denen sich die Benutzer später anmelden sollen. Die Ausgabe des Kommandos enthält einen Link, den Sie mit dem Browser öffnen können. Dort setzen Sie das Passwort des Benutzers und aktivieren die obligatorische Zweifaktor-Authentifizierung mit Ihrem Smartphone. Dafür können Sie Google-Authenticator oder eine andere kompatible App verwenden.
Als angemeldeter Benutzer können Sie die konfigurierten Ressourcen aus dem Webinterface verwenden. Das können Sie direkt mit dem Server testen, auf dem Sie Teleport installiert haben. Klicken Sie dafür unter dem Menüpunkt "Servers" auf den entsprechenden "Connect"-Eintrag und wählen den Login-Benutzer aus dem Menü. Es öffnet sich ein neues Fenster mit der gewünschten SSH-Session.
Remote-Login
Um Teleport von einem entfernten Computer zu verwenden, müssen Sie es dort zunächst installieren. Mit dem Clientprogramm erstellen Sie zunächst eine gültige Sitzung an ihrem Teleport-Server. Um sich mit dem zuvor angelegten Benutzer anzumelden, führen Sie das folgende Kommando aus und geben Ihr Passwort und das erzeugte Einmalpasswort als zweiten Faktor ein:
Nach dem erfolgreichen Login sehen Sie auf der Kommandozeile Informationen über Ihre Sitzung, zugewiesene Rollen, erlaubte Benutzernamen und die Gültigkeit. Möchten Sie über diese Sitzung nun eine SSH-Verbindung öffnen, lassen Sie sich zunächst die verfügbaren Server anzeigen. Da Sie derzeit nur den Teleport-Server selbst konfiguriert haben, lesen Sie aus der Liste den Hostnamen aus und starten Sie dann die SSH-Verbindung:
tsh ls
tsh ssh root@<Hostname>
Wenn die Verbindung geöffnet ist, können Sie sich im Webinterface unter "Activity / Active Sessions" die aktiven Verbindungen anzeigen lassen, wie im Bild dargestellt. Hier offenbart sich Ihnen dann schon ein großer Unterschied zu klassischen SSH-Verbindungen. Klicken Sie dafür auf den "Options"-Button der Verbindung und wählen "Join Session". Nun öffnet sich, wie Sie bereits weiter oben probieren konnten, ein neues Fenster in Ihrem Browser und Sie befinden sich nun in der bereits aktiven Verbindung.
Server hinzufügen
Die Stärke von Teleport liegt darin, mit einem Login Zugang zu vielen unterschiedlichen Servern und Diensten zu ermöglichen. Das vereinfacht die Administration vieler Benutzer und vieler Server. Wenn Sie einen weiteren Host zur Liste der verfügbaren SSH-Server hinzufügen möchten, müssen Sie erst einmal auf diesem eingeloggt sein. Installieren Sie auch hier als Erstes Teleport und öffnen mit Ihrem zuvor angelegten Admin-Account eine gültige Teleport-Sitzung. Anschließend benötigen Sie ein Token, mit dem Sie den neuen Server hinzufügen können. Mit dem folgenden Kommando erstellen Sie den Token mit einer Stunde Gültigkeit:
tctl tokens add --type=node --ttl=1h
Aus der Konsolenausgabe können Sie das Kommando zum Hinzufügen des Servers und zum Start von Teleport kopieren und direkt ausführen. Prüfen Sie den Erfolg entweder im Webinterface oder mit dem ls-Kommando, wie zuvor dargestellt.
Im Webinterface können Sie unter "Activity" die aktiven Verbindungen einsehen.
Weitere Dienste absichern
Teleport erlaubt zusätzlich zu SSH auch die Absicherung weiterer Dienste. Die Nutzung ist damit vergleichbar mit einer klassischen SSH-Portweiterleitung oder der Verwendung eines Jump-Hosts. Betreiben Sie Teleport in einer DMZ, greifen Sie damit komfortabel auf isolierte Bereiche in Ihrem Intranet zu. Mit Teleport können Sie neben SSH den Zugriff auf Kubernetes-Cluster ebenso absichern wie auf interne Webdienste oder Ihre Datenbanken. Die Software unterstützt PostgreSQL, MySQL und MongoDB als Datenbank-Backends. Diese können selbstgehostet sein oder in den üblichen Cloudumgebungen liegen.
Rollenbasierte Berechtigungen
Im Gegensatz zur individuellen Konfiguration erlaubt die rollenbasierte Zugangskontrolle die Vergabe von Berechtigungen auf Basis von Benutzerrollen. Wenn Sie Kubernetes einsetzen, kennen Sie das Konzept vermutlich. Benutzern lassen sich Rollen zuordnen, die den Zugang zu Ressourcen kontrollieren. Ähnlich wie bei Kubernetes können Sie bei Teleport mittels YAML-Dateien weitere Rollen mit unterschiedlichen Berechtigungen erstellen und dem Cluster hinzufügen. Eine Übersicht über existierende Rollen und entsprechende Berechtigungen erhalten Sie auf dem Cluster-Server mit dem folgenden Kommando:
tctl get roles
Daran können Sie sich beim Erstellen weiterer Rollen orientieren. Haben Sie eine Rollendefinition in einer YAML-Datei angelegt, erstellen Sie die entsprechende Rolle auf dem Cluster mit dem Kommando:
tctl create -f <Dateiname>
Anschließend können Sie die Rolle Ihren Benutzern zuweisen.
Single Sign-on
Moderne Techniken erlauben die Verwendung von Single Sign-on. In der Community-Variante von Teleport können Sie etwa Ihr Github-Konto zur Authentifikation verwenden. Wenn Sie für den Einsatz von Teleport eine Lizenz erwerben, stehen Ihnen anschließend noch weitere Möglichkeiten zur Verfügung. Sie können übliche OAuth- und OIDC-Anbieter konfigurieren aber auch Ihr Active Directory anbinden.
Fazit
Teleport ist eine junge, aber bereits sehr ausgereifte Alternative zum klassischen SSH-Zugang zu Ihren Servern und Ihrer Infrastruktur. Der Security-Tipp in diesem Monat hat Ihnen erste Schritte und mögliche Einsatzszenarien für Ihre IT-Infrastruktur aufgezeigt.