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.
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
oderProxyCommand
. - 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.