SSH/Gateway: Unterschied zwischen den Versionen
Zeile 18: | Zeile 18: | ||
|- | |- | ||
| gateway.foxtom.de || 2345 || sshTnlKunde001 | | gateway.foxtom.de || 2345 || sshTnlKunde001 | ||
|- | |- | ||
| kunde001 || || support | | kunde001 || || support | ||
|- | |- | ||
Zeile 24: | Zeile 24: | ||
|} | |} | ||
== Gateway == | |||
=== SSH-Server === | |||
; UNIX Sockets | ; UNIX Sockets | ||
Damit sich Kunden nicht mit dem System eines anderen Kunden verbinden können, werden hier UNIX Sockets verwandt. | Damit sich Kunden nicht mit dem System eines anderen Kunden verbinden können, werden hier UNIX Sockets verwandt. | ||
Zeile 37: | Zeile 37: | ||
StreamLocalBindUnlink yes | StreamLocalBindUnlink yes | ||
=== Kunden-Zugang === | |||
==== Tunnel-Benutzerkonto ==== | |||
'''root@gateway#''' useradd --create-home --groups users --shell /bin/bash --comment "Tunnel-User Kunden001" sshTnlKunde001 | '''root@gateway#''' useradd --create-home --groups users --shell /bin/bash --comment "Tunnel-User Kunden001" sshTnlKunde001 | ||
<!-- Ist ein Loginshell notwendig?, Ist die Gruppe users erforderlich? --> | <!-- Ist ein Loginshell notwendig?, Ist die Gruppe users erforderlich? --> | ||
==== Passwort vergeben ==== | |||
'''root@gateway#''' passwd sshTnlKunde001 | '''root@gateway#''' passwd sshTnlKunde001 | ||
New password: | New password: | ||
Zeile 48: | Zeile 48: | ||
passwd: password updated successfully | passwd: password updated successfully | ||
==== Zugang testen ==== | |||
'''user@support#''' ssh -p2345 sshTnlKunde001@gateway.foxtom.de | '''user@support#''' ssh -p2345 sshTnlKunde001@gateway.foxtom.de | ||
sshTnlKunde001@gateway's password: | sshTnlKunde001@gateway's password: | ||
== Kunden-Rechner == | |||
=== Tunnel-Benutzerkonto === | |||
'''root@kunde001#''' useradd -m -G users -s /bin/bash kunde001Tnl | '''root@kunde001#''' useradd -m -G users -s /bin/bash kunde001Tnl | ||
=== SSH-Key erzeugen === | |||
'''root@kunde001#''' sudo -u support -i | '''root@kunde001#''' sudo -u support -i | ||
'''support@kunde001$''' ssh-keygen -f /home/support/.ssh/gateway -t ecdsa | '''support@kunde001$''' ssh-keygen -f /home/support/.ssh/gateway -t ecdsa | ||
Passphrase | Keine Passphrase eingeben (Enter) | ||
=== Public-Key übertragen === | |||
'''support@kunde001$''' ssh-copy-id -p2345 -i /home/support/.ssh/gateway.foxtom.de.pub sshTnlKunde001@gateway.foxtom.de | '''support@kunde001$''' ssh-copy-id -p2345 -i /home/support/.ssh/gateway.foxtom.de.pub sshTnlKunde001@gateway.foxtom.de | ||
=== Public-Key-Zugang testen === | |||
'''support@kunde001$''' ssh -i /home/support/.ssh/gateway.foxtom.de -p2345 sshTnlKunde001@gateway.foxtom.de | '''support@kunde001$''' ssh -i /home/support/.ssh/gateway.foxtom.de -p2345 sshTnlKunde001@gateway.foxtom.de | ||
Zeile 72: | Zeile 72: | ||
Fehlermeldung "PTY allocation request failed on channel 0" und die Verbindung wird abgebrochen. Das ist beabsichtigt. | Fehlermeldung "PTY allocation request failed on channel 0" und die Verbindung wird abgebrochen. Das ist beabsichtigt. | ||
=== Automatisierung === | |||
'''[[Ssh:Gateway:Automatisierung]]''' | '''[[Ssh:Gateway:Automatisierung]]''' | ||
== Support-Rechner == | |||
=== Public-Key-Zugang === | |||
==== Public-Key übertragen ==== | |||
'''user@support#''' ssh-copy-id -p2345 sshTnlKunde001@gateway.foxtom.de | '''user@support#''' ssh-copy-id -p2345 sshTnlKunde001@gateway.foxtom.de | ||
==== Public-Key-Zugang testen ==== | |||
'''user@support#''' ssh -p2345 sshTnlKunde001@gateway.foxtom.de | '''user@support#''' ssh -p2345 sshTnlKunde001@gateway.foxtom.de | ||
'''sshTnlKunde001@gateway:~$''' exit | '''sshTnlKunde001@gateway:~$''' exit |
Version vom 24. Juli 2022, 12:34 Uhr
Ein SSH-Gateway vermittelt verschlüsselte Tunnelverbindungen zwischen SSH-Clients
Beschreibung
- Clients bauen aktiv SSH-Tunnel auf
- Gateway vermittelt den Kontakt zwischen den Rechnern
- Gateway ist ein SSH-Server im Internet
- Trennung verschiedener Kunden/Dienstleiter
- Je Tunnel (Kombination aus Kunde/Dienstleiter) ein Zugang
- Vorteile
- Keine Portweiterleitungen auf Client-Seite erforderlich
- Keine Namensauflösung des Clients erforderlich
Konfiguration
- Szenario
Hostname | Port | Username |
---|---|---|
gateway.foxtom.de | 2345 | sshTnlKunde001 |
kunde001 | support | |
support | user |
Gateway
SSH-Server
- UNIX Sockets
Damit sich Kunden nicht mit dem System eines anderen Kunden verbinden können, werden hier UNIX Sockets verwandt.
- Diese besitzen im Gegensatz zu TCP-Ports eine Zugriffssteuerung
Damit der Socket beim Abbau des Tunnels eine neue Socket-Datei erstellt wird, wird die Konfiguration des SSH-Dienstes ergänzt
- ein erneuter Aufbau des Tunnels ist ansonsten mit dem gleichen Socket-Namen nicht möglich
- Specifies whether to remove an existing Unix-domain socket file for local or remote port forwarding before creating a new one.
- /etc/ssh/sshd_config
StreamLocalBindUnlink yes
Kunden-Zugang
Tunnel-Benutzerkonto
root@gateway# useradd --create-home --groups users --shell /bin/bash --comment "Tunnel-User Kunden001" sshTnlKunde001
Passwort vergeben
root@gateway# passwd sshTnlKunde001 New password: Retype new password: passwd: password updated successfully
Zugang testen
user@support# ssh -p2345 sshTnlKunde001@gateway.foxtom.de sshTnlKunde001@gateway's password:
Kunden-Rechner
Tunnel-Benutzerkonto
root@kunde001# useradd -m -G users -s /bin/bash kunde001Tnl
SSH-Key erzeugen
root@kunde001# sudo -u support -i support@kunde001$ ssh-keygen -f /home/support/.ssh/gateway -t ecdsa
Keine Passphrase eingeben (Enter)
Public-Key übertragen
support@kunde001$ ssh-copy-id -p2345 -i /home/support/.ssh/gateway.foxtom.de.pub sshTnlKunde001@gateway.foxtom.de
Public-Key-Zugang testen
support@kunde001$ ssh -i /home/support/.ssh/gateway.foxtom.de -p2345 sshTnlKunde001@gateway.foxtom.de
- Fingerprint vergleichen
- Bestätigung durch Eingabe von "yes"
Fehlermeldung "PTY allocation request failed on channel 0" und die Verbindung wird abgebrochen. Das ist beabsichtigt.
Automatisierung
Support-Rechner
Public-Key-Zugang
Public-Key übertragen
user@support# ssh-copy-id -p2345 sshTnlKunde001@gateway.foxtom.de
Public-Key-Zugang testen
user@support# ssh -p2345 sshTnlKunde001@gateway.foxtom.de sshTnlKunde001@gateway:~$ exit
Anwendungen
Public-Key-Zugang
support@kunde001$ ssh -i /home/support/.ssh/gateway.foxtom.de.pub -p2345 sshTnlKunde001@gateway.foxtom.de
- Fingerprint vergleichen
- Bestätigung durch Eingabe von "yes"
"PTY allocation request failed on channel 0"
Fehlermeldung und die Verbindung wird abgebrochen, das ist beabsichtigt.
Tunnel starten
user@support$ ssh -nNT -L 10022:localhost:10001 sshTnlKunde001@gateway
Damit wird ein Tunnel vom lokalen Port 10022 zum Port 10001 auf dem Gateway erstellt
Tunnelaufbau
- Manueller Aufbau
support@debian01:~$ ssh -N -T -C -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -o StrictHostKeyChecking=no -i ${SSHKEY} -R ${GWSOCK}:localhost:${LOCALPORT} ${GWUSER}@${GWHOST}
Optionen | Bedeutung |
---|---|
-N | Keinen Befehl in der Ferne ausführen |
-T | Deaktiviert Pseudo-Terminal-Zuweisung |
-C | Komprimierung sämtlicher Daten |
-o ServerAliveInterval=60 | |
-o ExitOnForwardFailure=yes | |
-o StrictHostKeyChecking=no | |
-i ${SSHKEY} | absoluter Pfad zum SSH-Key, z.B. ~/.ssh/gateway |
-R ${GWSOCK}:localhost:${LOCALPORT} | Reverse Tunnel erstellt, um vom Gateway aus auf den Kundenrechner zugreifen zu können |
Parameter | Bedeutung |
---|---|
${SSHKEY} | Der komplette Pfad zum SSH-Key, z.B. ~/.ssh/gateway |
${GWSOCK} | Der Socket, welcher auf dem Gateway für den Tunnel verwendet wird
|
${LOCALPORT} |
|
${GWUSER} |
|
${GWHOST} |
|
- Beispiel
$ ssh -N -T -C -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -o StrictHostKeyChecking=no -i ~/.ssh/gateway.foxtom.de -R 23457:localhost:2345 -p2345 sshTnlKunde001@gateway.foxtom.de
Sicherheit
Allgemein
Es wird ein Tunnel durch die Firewall gebohrt, welche das Netzwerk mit dem Zielsystem schützt
- Das schafft definitiv neue Angriffsmöglichkeiten auf das Netzwerk
- Hier muss man, wie bei allen Fernwartungszugängen, zwischen dem Komfortgewinn und dem Sicherheitsverlust abwägen.
Ein Angreifer müsste Zugriff auf das Gateway erlangen und könnte von dort alle zu managenden Zielsysteme erreichen
- Das Zielsystem und das dahinter liegende Netzwerk ist dann nur noch durch die Sicherheitsmechanismen geschützt, welche die über den Tunnel erreichbare Anwendung auf dem Zielsystem bietet (z.B. SSH- oder Webserver).
Es ist also zum einen wichtig, das Gateway gut abzusichern
- Das ist gar nicht so anspruchsvoll, weil es sich beim Gateway um ein Minimalsystem handelt, welches vergleichsweise einfach upgedatet und sicher konfiguriert werden kann
- Zum anderen sollten auch auf dem Zielsystem die üblichen Sicherheitsmaßnahmen durchgeführt werden (laufende Updates, sichere Passwörter usw.). Insgesamt ist bei Einhaltung dieser Maßnahmen die Sicherheit im Vergleich zu anderen Varianten (proprietäre Fernwartungstools, Port-Forwarding durch Firewalls) als höher einzuschätzen.
Empfehlenswert ist eine zusätzliche Absicherung der durch die Supporter benutzten SSH-Schlüssel
- Die können z.B., wie unter "SSH-Login mit OpenPGP Card" beschrieben, auf einer Smartcard abgelegt werden.
Dokumentation
Siehe auch
Links
Weblinks
Einzelnachweise
Testfragen
Testfrage 1
Testfrage 2
Testfrage 3
Testfrage 4
Testfrage 5