Site icon bintorosoft.com

SSH Deployment absichern: Keys, Jump Host und Restricted Shell

SSH ist das zentrale Werkzeug für das sichere Deployment von Anwendungen auf Linux-Servern. Durch die Verwendung von SSH-Keys, Jump Hosts und eingeschränkten Shells kann der Zugriff auf Server kontrolliert, automatisierte Deployments abgesichert und Angriffsflächen minimiert werden. In diesem Leitfaden lernen Einsteiger, IT-Studierende und Junior Network Engineers, wie SSH-Deployment sicher gestaltet wird.

SSH-Key-Paare erstellen

Die Authentifizierung über SSH-Keys ist deutlich sicherer als Passwörter. Ein Key-Paar besteht aus einem privaten und einem öffentlichen Schlüssel.

# Lokales Key-Paar erstellen
ssh-keygen -t rsa -b 4096 -f ~/.ssh/deploy_key -C "deploy@example.com"

# Optional Passphrase für den privaten Schlüssel setzen
# ~/.ssh/deploy_key = privater Schlüssel
# ~/.ssh/deploy_key.pub = öffentlicher Schlüssel

Public Key auf Zielserver verteilen

Der öffentliche Schlüssel wird auf dem Server hinterlegt, um den Login zu ermöglichen.

# Public Key kopieren
ssh-copy-id -i ~/.ssh/deploy_key.pub user@server.example.com

# Alternativ manuell einfügen
cat ~/.ssh/deploy_key.pub | ssh user@server.example.com "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Jump Host einrichten

Ein Jump Host dient als Zwischenserver, über den Zugriffe auf interne Systeme erfolgen. Dies erhöht die Sicherheit durch Netzwerksegmentierung.

# SSH-Konfiguration (~/.ssh/config)
Host jump
    HostName jump.example.com
    User deploy
    IdentityFile ~/.ssh/deploy_key

Host internal-server
    HostName 10.0.0.10
    User deploy
    ProxyJump jump

Restricted Shell (rbash) für Deploy-User

Eine eingeschränkte Shell limitiert die Befehle, die ein User ausführen kann. So werden Server sicherer, da nur Deploy-Skripte ausgeführt werden können.

# Benutzer mit Restricted Shell anlegen
sudo useradd -m -s /bin/rbash deploy

# Deploy-Skripte in eigenes Verzeichnis legen
mkdir -p /home/deploy/bin
chown deploy:deploy /home/deploy/bin

# PATH anpassen
echo 'export PATH=$HOME/bin' >> /home/deploy/.bash_profile

SSH Konfigurationshärtung

Automatisierte Deployments

SSH-Keys und Restricted Shells ermöglichen automatisierte Deployments via CI/CD-Tools wie GitLab CI oder Jenkins.

# Beispiel GitLab CI SSH-Verbindung
ssh -i ~/.ssh/deploy_key deploy@internal-server "cd /var/www/app && git pull"

Netzwerk- und Subnetzplanung

Jump Hosts sollten in einem separaten Netzwerksegment liegen, interne Server nur über interne IPs erreichbar.

IPv4 Subnetz

<math>
Jump-IP = 192.168.420.10/24
Subnetzadresse = 192.168.420.10 & 255.255.255.0 = 192.168.420.0
Broadcastadresse = 192.168.420.0 | ~255.255.255.0 = 192.168.420.255
Internal-Server-IP = 10.0.0.10/24
Subnetzadresse = 10.0.0.0
Broadcastadresse = 10.0.0.255
</math>

IPv6 Subnetz

<math>
Jump-IP = 2001:db8:abcd:420::10/64
Subnetzadresse = 2001:db8:abcd:420::0
Broadcastadresse = 2001:db8:abcd:420:ffff:ffff:ffff:ffff
Internal-Server-IP = fd00:abcd:420::10/64
Subnetzadresse = fd00:abcd:420::0
Broadcastadresse = fd00:abcd:420:ffff:ffff:ffff:ffff
</math>

Best Practices

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Exit mobile version