SSH JumpHost

5.August 2024

SSH JumpHost – Sicherer Zugriff auf entfernte Server mit einem Sprungserver

Wenn man verschiedene Server in einem abgeschotteten Netz betreuen muss, steht man oft vor dem Problem, dass für jeden Host eine eigene Portfreigabe in der Firewall nötig wäre. Um dies zu vermeiden und dennoch sicheren Zugriff zu gewährleisten, bietet sich die Nutzung eines sogenannten JumpHosts (auch Bastion Host genannt) an. Ein JumpHost fungiert als Vermittler zwischen dem lokalen Rechner und dem Zielserver. Dadurch bleibt das interne Netzwerk geschützt, während der JumpHost als einzige zugängliche Schnittstelle dient.

Ein JumpHost erhöht somit die Sicherheit und reduziert die Angriffsfläche des Netzwerks erheblich.

JumpHost

Anforderungen (Requirements)

Bevor wir zur Konfiguration kommen, sollten die grundlegenden Anforderungen für den Betrieb eines JumpHosts definiert werden.

JumpHost Requirements

  • Erreichbarkeit: Der JumpHost sollte über eine feste IP oder einen DNS-Namen erreichbar sein.
  • Harte Zugriffskontrollen: Zugriff auf den JumpHost sollte nur autorisierten Benutzern mit starken SSH-Schlüsseln erlaubt sein.
  • Aktualisiertes System: Der JumpHost sollte stets mit Sicherheitsupdates versorgt werden.
  • Logging & Monitoring: Aktivitäten auf dem JumpHost sollten protokolliert und überwacht werden.
  • Firewall-Regeln: Nur notwendige Ports sollten offen sein, und Verbindungen zu internen Servern sollten reglementiert sein.

Client Requirements

  • SSH-Client: Ein moderner SSH-Client mit Unterstützung für ProxyJump oder ProxyCommand.
  • Konfigurierte SSH-Schlüssel: Authentifizierung sollte über SSH-Schlüssel erfolgen, um sichere und passwortlose Verbindungen zu ermöglichen.
  • Zugriff auf den JumpHost: Der Client sollte in der Lage sein, eine Verbindung zum JumpHost herzustellen.

SSH-Zugriff über einen JumpHost mit der .ssh/config

Um den Zugriff über einen JumpHost zu vereinfachen, kann die ~/.ssh/config genutzt werden. Dies spart Tipparbeit und ermöglicht eine komfortable Nutzung von SSH.

Beispiel für eine SSH-Konfiguration mit JumpHost

Angenommen, wir haben folgende Serverstruktur:

  • JumpHost: jump.example.com
  • Zielserver: target.internal
  • Benutzername: user

Die ~/.ssh/config kann wie folgt konfiguriert werden:

Host jump
    HostName jump.example.com
    User user

Host target
    HostName target.internal
    User user
    ProxyJump jump

Nun kann der Zugriff auf den Zielserver einfach mit folgendem Befehl erfolgen:

ssh target

Alternativer Ansatz: ProxyCommand

Falls ProxyJump nicht unterstützt wird, kann auch ProxyCommand verwendet werden:

Host target
    HostName target.internal
    User user
    ProxyCommand ssh -W %h:%p jump.example.com

Auch hier erfolgt der Zugriff mit:

ssh target

Fazit

Ein SSH JumpHost verbessert die Sicherheit und Verwaltung von Serverzugriffen erheblich. Durch eine klare Strukturierung der Anforderungen und eine sorgfältige Konfiguration kann dieser Zugriff komfortabel und sicher umgesetzt werden. Damit wird eine einfache, aber effektive Möglichkeit geschaffen, Netzwerke vor unbefugtem Zugriff zu schützen.