Schlagwort: SSH-Tools

  • RPort – Der TCP Tunnelbauer

    Photo by Mathew Schwartz on Unsplash

    Gastartikel von Sven Wick

    Möchte man komplette Netze verbinden, nimmt man in der Regel eine VPN Lösung, für einzelne Systeme oder Ports ein Forwarding. Für Letzteres z.B. den Router oder ein Werkzeug wie SSH, wobei OpenSSH schon seit Längerem auch komplette Netze tunneln kann…

    Ein Port Forwarding im Router möchte oder kann man vielleicht nicht einrichten, ein VPN für ein oder zwei Systeme wäre Overkill oder macht potenziell zu viel des eigenen Netzes erreichbar. Für den spontanen Zugriff strickt sich der versierte Anwender mal kurz was mit SSH zurecht. Soll das aber dauerhaft und robust laufen, muss man zu Tools wie autossh oder sidedoor greifen oder baut sich mit Systemd-Hausmitteln selbst etwas.

    Diese funktionieren für ihren Anwendungs-Bereich sehr passabel, haben jedoch alle ihre kleineren Einschränkungen:

    • mehrere Tunnel nicht möglich oder umständlich einzurichten
    • kein komfortables Management der Tunnel
    • keine Übersicht der Tunnel und deren Zustände
    • nicht für alle Betriebssysteme verfügbar ( systemd z.B. Linux-only )

    Eine heterogene Lösung

    Hier tritt nun RPort auf den Plan und möchte dies auf das nächste Level heben. Die Entwickler von rport haben erkannt (wie auch die PowerShell Macher), dass heutzutage heterogene statt Insel Lösungen gebraucht werden. rport wurde daher bewusst in Go geschrieben damit eine Binärdatei hinten rausfällt, die auf so vielen Plattformen wie möglich einfach gestartet werden kann.

    Konzept

    RPort besteht aus folgenden Komponenten:

    • Server
    • Client
    • API – mit CLI oder Webinterface nutzbar (optional)

    Verwendet wird das Port Forwarding Konzept aus SSH, genutzt wird dazu aber nicht der lokale SSH Client, sondern die SSH Library in Go. Der Server ist die zentrale Anlaufstelle für die Clients, die auch hinter Routern stehen können.Diese bauen über HTTP eine Verbindung auf, über die dann SSH gesprochen wird.
    Über diese SSH Verbindung kann der Server den Client dann steuern, beispielsweise welcher Port wohin weitergeleitet werden soll. Es lassen sich aber auch CLI Programme oder Skripte ausführen, falls das Zielsystem dies unterstützt. Für Windows Systeme kann sogar die PowerShell verwendet werden.

    Management

    Der Server beinhaltet eine API, die auch vom eingebauten Webinterface genutzt wird, in dem man eine Übersicht aller Clients, den Tunneln sowie weitere Metadaten vorfindet. Das Webinterface unterstützt den Anwender auch damit, sich bequem auf dem Remote-System einzuloggen. Hier wird dann der lokale SSH-, RDP- oder VNC- Client gestartet.Zusätzlich gibt es rport-cli um sich z.B. auch von der Shell aus eine Übersicht zu verschaffen oder automatisiert Tunnel zu erstellen.

    Sicherheit

    Das Projekt bietet einige Mechanismen an, um die Tunnel abzusichern, z.B. lassen sich ACLs setzen, damit auf ein Zielsystem nur bestimmte Clients dürfen, über Gruppen den Zugriff einschränken oder auch Befehle filtern, die auf Zielsystemen nicht ausgeführt werden dürfen.

    Dokumentation

    Mehr Info und Möglichkeiten findet man in der Dokumentation

    • https://oss.rport.io/docs/
    • https://kb.rport.io/

    Ausblick

    In der Vorstellung des Projektes auf der FrOSCon wurde erwähnt, dass man Features wie das Fernsteuern wie von TeamViewer gewohnt oder eine Art Ansible Framework zukünftig mitliefern will, damit man etwas mehr als nur Befehle oder Skripte ausführen kann.

  • SSH-Tools – den Alltag mit OpenSSH bequemer machen

    Photo by Hunter Haley on Unsplash

    Gastbeitrag von Sven Wick

    OpenSSH, das Schweizer Taschenmesser des Admins für den täglichen Remotezugriff. Das Projekt liefert einzelne Tools mit, die einfach zu benutzen sind und als sehr sicher gelten.Man kann sie daher in die Kategorie
    Keep It Simple and Secure einordnen. Das bedeutet aber nicht, dass der Alltag damit auch immer bequem ist. Wer kennt es nicht, der begehrte Server steht hinter einem JumpHost oder man muss erst durch einen VPN-Tunnel. Oder beides.

    Nun muss der Weg dorthin angepasst werden, z.B. die Umstellung des VPN Tunnels zum Kunden. Ab hier fängt die mühsame Dauerschleife an. Der Kunde meldet Vollzug auf seiner Seite und selbst hat man seine VPN Config auch schon angepasst, ein Login Versuch via SSH schlägt aber noch fehl:

    • Eigene Firewall Regeln nochmal geändert.
    • Der nächste manuelle Login Versuch.
    • Geht immer noch nicht.
    • Kunde anschreiben
    • Kunde meldet sich irgendwann später. Nochmal probieren..
    • Nächster manueller Login-Versuch.
    • Tut sich nix.

    Einen normalen Ping nebenher in einem Terminal laufen lassen um das Prozedere zu vereinfachen, ist hier leider nutzlos, da ein JumpHost dazwischensteht. Den ICMP Echo Request leitet dieser nicht weiter. Außerdem wollen wir wissen, ob der SSH Zugriff geht – nicht ein Ping. Ein Check auf Port 22 z.B. mit Netcat bleibt hier auch wirkungslos. Hier kommen nun die ssh-tools ins Spiel, die das KISS Prinzip um CISS erweitern.

    Scripte für den OpenSSH-Client

    Die ssh-tools sind Wrapper-Skripte um den OpenSSH-Client, die vieles bequemer machen. Für das oben beschriebene Problem gibt es z.B. ssh-ping, das prüft, ob ein SSH Server auch wirklich erreichbar ist. Das funktioniert sogar durch JumpHosts hindurch, vorausgesetzt diese sind über die SSH Config eingerichtet. Damit kann man sich nun in Ruhe auf seine VPN, Firewall oder SSH Config konzentrieren und parallel auf ssh-ping schauen, ob die Anpassungen fruchten.

    Weitere Tools

    Neben ssh-ping gibt es noch weitere Tools, die des Admins Leben versüßen:

    1. ssh-version: Zeigt die Version des SSH Servers an
    2. ssh-diff: Eine Datei über SSH diffen
    3. ssh-facts: Basisinfo über das Remotesystem anzeigen ( z.b. Welche Distro ist installiert )
    4. ssh-hostkeys: Die Fingerprints der HostKeys in verschiedenen Formaten ausgeben
    5. ssh-keyinfo: SSH PublicKeys in verschiedenen Formaten ausgeben (alte SSH Server schreiben z.B. noch MD5 Fingerprints ins Syslog)
    6. ssh-certinfo: Zeigt an, ob und wie lange SSH Zertifikate (nicht PublicKeys) noch gültig sind. (Damit kann man z.B. monitoren, ob SSH Zertifikate erneuert werden müssen.)
    7. ssh-force-password: Erzwingt bei PubKey Authentifizierung die Passwort Abfrage (z.B. um Passwort Änderungen zu testen)

    Pakete

    Die ssh-tools sind mittlerweile für die gängigen Distributionen paketiert, können aber auch direkt von Github runtergeladen und ausgeführt werden.