Praktische Beispiele für
SSH , die Ihre Fähigkeiten als Remote-Systemadministrator auf die nächste Stufe heben. Befehle und Tipps helfen nicht nur bei der Verwendung von
SSH
, sondern auch bei der kompetenteren Navigation im Netzwerk.
Ein paar
ssh
Tricks zu kennen, ist für jeden Systemadministrator, Netzwerktechniker oder Sicherheitsspezialisten nützlich.
Praktische SSH-Beispiele
- SSH Socken Proxy
- SSH-Tunnel (Port Forwarding)
- SSH-Tunnel zum dritten Host
- SSH-Reverse-Tunnel
- SSH-Reverse-Proxy
- VPN über SSH installieren
- SSH-Schlüssel kopieren (ssh-copy-id)
- Remote-Befehlsausführung (nicht interaktiv)
- Remote-Paketerfassung und -anzeige in Wireshark
- Kopieren eines lokalen Ordners auf einen Remote-Server über SSH
- Remote-SSH X11-Weiterleitungs-GUI-Anwendungen
- Remote-Dateikopie mit rsync und SSH
- SSH über das Tor-Netzwerk
- SSH zu EC2-Instanz
- Bearbeiten von Textdateien mit VIM über ssh / scp
- Mounten von Remote-SSH als lokaler Ordner mit SSHFS
- SSH-Multiplexing mit ControlPath
- SSH-Video-Streaming mit VLC und SFTP
- Zwei-Faktor-Authentifizierung
- Host Jumping mit SSH und -J
- Blockieren von SSH-Brute-Force-Versuchen mit iptables
- SSH Escape, um die Portweiterleitung zu ändern
Grundlagen zuerst
SSH-Befehlszeilenanalyse
Im folgenden Beispiel werden die üblichen Parameter verwendet, die häufig beim Herstellen einer Verbindung zu einem Remote-
SSH
Server gefunden werden.
localhost:~$ ssh -v -p 22 -C neo@remoteserver
-v
: Das Debuggen der Ausgabe ist besonders nützlich, wenn Authentifizierungsprobleme analysiert werden. Sie können es mehrmals verwenden, um zusätzliche Informationen anzuzeigen.- p 22
: Anschluss für die Verbindung zu einem Remote-SSH-Server. 22 muss nicht angegeben werden, da dies der Standardwert ist. Wenn sich das Protokoll jedoch an einem anderen Port befindet, geben wir es mit dem Parameter -p
. Der sshd_config
wird in der Datei sshd_config
im Format Port 2222
.-C
: Komprimierung für die Verbindung. Wenn Sie einen langsamen Feed haben oder viel Text anzeigen, kann dies die Verbindung beschleunigen.neo@
: Die Zeile vor dem @ -Symbol gibt den Benutzernamen für die Authentifizierung auf dem Remote-Server an. Wenn Sie es nicht angeben, wird standardmäßig der Benutzername des Kontos verwendet, bei dem Sie gerade angemeldet sind (~ $ whoami). Der Benutzer kann auch mit der Option -l
angegeben werden.remoteserver
: Der Hostname, mit dem ssh
Verbindung herstellt. remoteserver
kann ein vollständig qualifizierter Domänenname, eine IP-Adresse oder ein beliebiger Host in der lokalen Hosts-Datei sein. Um eine Verbindung zu einem Host herzustellen, der sowohl IPv4 als auch IPv6 unterstützt, können Sie der Befehlszeile die Option -4
oder -6
hinzufügen, um eine ordnungsgemäße Auflösung zu erzielen.
Alle oben genannten Optionen sind optional, mit Ausnahme des
remoteserver
.
Konfigurationsdatei verwenden
Obwohl viele mit der Datei
sshd_config
vertraut sind, gibt es auch eine Client-Konfigurationsdatei für den Befehl
ssh
. Der Standardwert ist
~/.ssh/config
, kann jedoch als Parameter für die Option
-F
definiert werden.
Host * Port 2222 Host remoteserver HostName remoteserver.thematrix.io User neo Port 2112 IdentityFile /home/test/.ssh/remoteserver.private_key
Die obige Beispiel-SSH-Konfigurationsdatei enthält zwei Hosteinträge. Der erste gibt alle Hosts an, der Konfigurationsparameter Port 2222 wird für alle verwendet. Der zweite besagt, dass für den
Remoteserver- Host ein anderer Benutzername, Port, FQDN und IdentityFile verwendet werden.
Eine Konfigurationsdatei kann viel Zeit beim Eingeben von Zeichen sparen, sodass Sie die erweiterte Konfiguration automatisch anwenden können, wenn Sie eine Verbindung zu bestimmten Hosts herstellen.
Kopieren Sie Dateien über SSH mit SCP
Der SSH-Client verfügt über zwei weitere sehr praktische Tools zum Kopieren von Dateien über eine
verschlüsselte SSH-
Verbindung . Im Folgenden finden Sie ein Beispiel für die Standardverwendung von scp- und sftp-Befehlen. Beachten Sie, dass viele der Optionen für ssh auch für diese Befehle gelten.
localhost:~$ scp mypic.png neo@remoteserver:/media/data/mypic_2.png
In diesem Beispiel wird die Datei
mypic.png auf den
Remoteserver im Ordner
/ media / data kopiert und in
mypic_2.png umbenannt.
Vergessen Sie nicht den Unterschied im Port-Parameter. Dies trifft auf viele, die
scp
über die Befehlszeile ausführen. Hier ist der Port-Parameter
-P
, nicht
-p
, wie im ssh-Client! Sie werden es vergessen, aber keine Sorge, jeder wird es vergessen.
Für diejenigen, die mit Konsolen-
ftp
vertraut sind, sind viele der Befehle in
sftp
ähnlich. Sie können
schieben ,
setzen und
ls, wie es Ihr Herz begehrt.
sftp neo@remoteserver
Praktische Beispiele
In vielen dieser Beispiele kann das Ergebnis durch verschiedene Verfahren erzielt werden. Wie bei allen unseren
Lehrbüchern und Beispielen werden praktische Beispiele bevorzugt, die einfach ihren Job machen.
1. SSH Socken Proxy
SSH-Proxy auf Platz 1 aus gutem Grund. Es ist leistungsfähiger als viele vermuten und bietet Ihnen Zugriff auf jedes System, auf das ein Remote-Server mit fast jeder Anwendung zugreifen kann. Der ssh-Client kann mit einem einfachen Befehl Datenverkehr durch den SOCKS-Proxy tunneln. Es ist wichtig zu verstehen, dass der Datenverkehr zu Remote-Systemen von einem Remote-Server kommt, wie in den Webserver-Protokollen angegeben.
localhost:~$ ssh -D 8888 user@remoteserver localhost:~$ netstat -pan | grep 8888 tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 23880/ssh
Hier führen wir den Socken-Proxy auf dem TCP-Port 8888 aus. Der zweite Befehl überprüft, ob der Port im Überwachungsmodus aktiv ist. 127.0.0.1 gibt an, dass der Dienst nur auf localhost ausgeführt wird. Wir können einen etwas anderen Befehl verwenden, um alle Schnittstellen, einschließlich Ethernet oder WLAN, abzuhören. Dadurch können andere Anwendungen (Browser usw.) in unserem Netzwerk über ssh socks proxy eine Verbindung zum Proxy-Dienst herstellen.
localhost:~$ ssh -D 0.0.0.0:8888 user@remoteserver
Jetzt können wir den Browser so konfigurieren, dass er eine Verbindung zum Socken-Proxy herstellt. Wählen Sie in Firefox
Einstellungen | Highlights | Netzwerkeinstellungen Geben Sie die IP-Adresse und den Port an, zu dem eine Verbindung hergestellt werden soll.

Beachten Sie die Option am unteren Rand des Formulars, damit Browser-DNS-Abfragen auch SOCKS-Proxys durchlaufen. Wenn Sie einen Proxyserver zum Verschlüsseln des Webverkehrs im lokalen Netzwerk verwenden, möchten Sie diese Option wahrscheinlich auswählen, damit DNS-Abfragen über eine SSH-Verbindung getunnelt werden.
Socken die Proxy-Aktivierung in Chrome
Wenn Sie Chrome mit bestimmten Befehlszeilenoptionen ausführen, werden Socken-Proxys aktiviert und DNS-Abfragen über den Browser getunnelt. Vertrauen, aber überprüfen. Verwenden Sie
tcpdump , um zu überprüfen, ob DNS-Abfragen nicht mehr sichtbar sind.
localhost:~$ google-chrome --proxy-server="socks5://192.168.1.10:8888"
Verwenden anderer Proxy-Anwendungen
Beachten Sie, dass viele andere Anwendungen auch Socken-Proxys verwenden können. Ein Webbrowser ist einfach der beliebteste von ihnen. Einige Anwendungen verfügen über Konfigurationsoptionen zum Aktivieren eines Proxyservers. Andere brauchen ein wenig Hilfe beim Hilfsprogramm. Mit
Proxy-Ketten können
Sie beispielsweise Microsoft RDP usw. über Socken-Proxys ausführen.
localhost:~$ proxychains rdesktop $RemoteWindowsServer
Die Socken-Proxy-Konfigurationsparameter werden in der Proxy-Ketten-Konfigurationsdatei festgelegt.
Hinweis: Wenn Sie Remotedesktop unter Linux unter Windows verwenden? Probieren Sie den FreeRDP- Client aus. Dies ist eine modernere Implementierung als rdesktop
mit einer viel reibungsloseren Interaktion.
SSH-Option über Socken-Proxy
Sie sitzen in einem Café oder Hotel - und sind gezwungen, ziemlich unzuverlässiges WLAN zu nutzen. Starten Sie vom Laptop aus den ssh-Proxy lokal und installieren Sie den ssh-Tunnel im Heimnetzwerk auf dem lokalen Rasberry Pi. Mit einem Browser oder anderen Anwendungen, die für Socken-Proxys konfiguriert sind, können wir auf alle Netzwerkdienste in unserem Heimnetzwerk oder über eine Heimverbindung auf das Internet zugreifen. Alles zwischen Ihrem Laptop und Ihrem Heimserver (über WLAN und Internet zu Ihnen nach Hause) wird im SSH-Tunnel verschlüsselt.
2. SSH-Tunnel (Portweiterleitung)
In seiner einfachsten Form öffnet ein SSH-Tunnel einfach einen Port auf Ihrem lokalen System, der eine Verbindung zu einem anderen Port am anderen Ende des Tunnels herstellt.
localhost:~$ ssh -L 9999:127.0.0.1:80 user@remoteserver
Lassen Sie uns die Option
-L
untersuchen. Es kann als die lokale Seite des Zuhörens dargestellt werden. Daher wird im obigen Beispiel Port 9999 auf der Localhost-Seite abgehört und über Port 80 an den Remoteserver weitergeleitet. Bitte beachten Sie, dass sich 127.0.0.1 auf localhost auf dem Remote-Server bezieht!
Gehen wir einen Schritt weiter. Im folgenden Beispiel kommunizieren Überwachungsports mit anderen Knoten im lokalen Netzwerk.
localhost:~$ ssh -L 0.0.0.0:9999:127.0.0.1:80 user@remoteserver
In diesen Beispielen stellen wir eine Verbindung zum Port auf dem Webserver her, es kann sich jedoch auch um einen Proxyserver oder einen anderen TCP-Dienst handeln.
3. SSH-Tunnel zu einem Drittanbieter-Host
Wir können dieselben Parameter verwenden, um einen Tunnel von einem Remote-Server mit einem anderen Dienst zu verbinden, der auf einem dritten System ausgeführt wird.
localhost:~$ ssh -L 0.0.0.0:9999:10.10.10.10:80 user@remoteserver
In diesem Beispiel leiten wir den Tunnel vom Remoteserver auf einen Webserver um, der am 10.10.10.10 ausgeführt wird. Der Datenverkehr mit dem Remoteserver bis 10.10.10.10 befindet sich
nicht mehr im SSH-Tunnel . Am 10.10.10.10 betrachtet der Webserver den Remoteserver als Quelle für Webanfragen.
4. SSH-Tunnel umkehren
Hier konfigurieren wir den Überwachungsport auf dem Remote-Server, der eine Verbindung zum lokalen Port auf unserem lokalen Host (oder einem anderen System) herstellt.
localhost:~$ ssh -v -R 0.0.0.0:1999:127.0.0.1:902 192.168.1.100 user@remoteserver
In dieser SSH-Sitzung wird eine Verbindung von Port 1999 auf dem Remoteserver zu Port 902 auf unserem lokalen Client hergestellt.
5. SSH-Proxy umkehren
In diesem Fall installieren wir den Socken-Proxy auf unserer SSH-Verbindung. Der Proxy lauscht jedoch auf dem Remote-Ende des Servers. Verbindungen zu diesem Remote-Proxy werden jetzt vom Tunnel aus als Datenverkehr von unserem lokalen Host angezeigt.
localhost:~$ ssh -v -R 0.0.0.0:1999 192.168.1.100 user@remoteserver
Fehlerbehebung bei Remote-SSH-Tunneln
Wenn Sie Probleme mit den Remote-SSH-Optionen haben, überprüfen Sie mit
netstat
, mit welchen anderen Schnittstellen der Listening-Port verbunden ist. Obwohl wir in den Beispielen
0.0.0.0 angegeben haben, wird der Listener nur an localhost (127.0.0.1) gebunden, wenn der
GatewayPorts- Wert in
sshd_config auf
no gesetzt ist .
Sicherheitswarnung
Bitte beachten Sie, dass beim Öffnen von Tunneln und Socken-Proxys möglicherweise nicht vertrauenswürdigen Netzwerken (z. B. dem Internet!) Interne Netzwerkressourcen zur Verfügung stehen. Dies kann ein ernstes Sicherheitsrisiko darstellen. Stellen Sie daher sicher, dass Sie verstehen, was der Hörer ist und auf was er Zugriff hat.
6. Installieren von VPN über SSH
Der allgemeine Begriff unter Spezialisten für Angriffsmethoden (Pentester usw.) ist "der Dreh- und Angelpunkt des Netzwerks". Nach dem Herstellen einer Verbindung in einem System wird dieses System zu einem Gateway für den weiteren Zugriff auf das Netzwerk. Der Drehpunkt, mit dem Sie sich in der Breite bewegen können.
Für einen solchen Drehpunkt können wir SSH-Proxys und
Proxy-Ketten verwenden , es gibt jedoch einige Einschränkungen. Beispielsweise können Sie nicht direkt mit Sockets arbeiten, sodass wir keine Ports im Netzwerk über
Nmap SYN
scannen können.
Mit dieser erweiterten VPN-Option wird die Verbindung auf
Stufe 3 unterbrochen. Dann können wir den Verkehr einfach mit Standard-Netzwerkrouting durch den Tunnel leiten.
Die Methode verwendet
ssh
,
iptables
,
tun interfaces
und Routing.
Zuerst müssen Sie diese Parameter in
sshd_config
. Da wir Änderungen an den Schnittstellen des Remote- und des Client-Systems vornehmen,
benötigen wir
auf beiden Seiten Root-Rechte .
PermitRootLogin yes PermitTunnel yes
Stellen Sie dann eine SSH-Verbindung mit einem Parameter her, der die Initialisierung von Tun-Geräten anfordert.
localhost:~
Jetzt sollten wir ein Tun-Gerät haben, wenn wir Schnittstellen
# ip a
(
# ip a
). Im nächsten Schritt werden den Tunnelschnittstellen IP-Adressen hinzugefügt.
SSH-Client-Seite:
localhost:~
SSH-Serverseite:
remoteserver:~
Jetzt haben wir eine direkte Route zu einem anderen Host (
route -n
und
ping 10.10.10.10
).
Sie können jedes Subnetz über den Host auf der anderen Seite routen.
localhost:~
Auf der Remote-Seite müssen Sie
ip_forward
und
iptables
ip_forward
.
remoteserver:~
Boom!
VPN über SSH-Tunnel auf Netzwerkebene 3 . Dies ist bereits ein Sieg.
Wenn Sie auf Probleme stoßen, verwenden Sie
tcpdump und
ping
, um die Ursache zu ermitteln. Da wir auf Level 3 spielen, werden unsere icmp-Pakete diesen Tunnel durchlaufen.
7. Kopieren des SSH-Schlüssels (ssh-copy-id)
Es gibt verschiedene Möglichkeiten, aber dieser Befehl spart Zeit, um Dateien nicht manuell zu kopieren. Es kopiert einfach ~ / .ssh / id_rsa.pub (oder den Standardschlüssel) von Ihrem System nach
~/.ssh/authorized_keys
auf dem Remote-Server.
localhost:~$ ssh-copy-id user@remoteserver
8. Remote-Befehlsausführung (nicht interaktiv)
Der Befehl
ssh
kann mit anderen Befehlen für die übliche benutzerfreundliche Oberfläche verknüpft werden. Fügen Sie einfach den Befehl, den Sie auf dem Remote-Host ausführen möchten, als letzten Parameter in Anführungszeichen hinzu.
localhost:~$ ssh remoteserver "cat /var/log/nginx/access.log" | grep badstuff.php
In diesem Beispiel wird
grep
auf dem lokalen System ausgeführt, nachdem das Protokoll über den SSH-Kanal heruntergeladen wurde. Wenn die Datei groß ist, ist es bequemer,
grep
auf der Remote-Seite auszuführen, indem Sie einfach beide Befehle in doppelte Anführungszeichen setzen.
Ein anderes Beispiel führt dieselbe Funktion wie
ssh-copy-id
aus Beispiel 7 aus.
localhost:~$ cat ~/.ssh/id_rsa.pub | ssh remoteserver 'cat >> .ssh/authorized_keys'
9. Remote-Paketerfassung und -anzeige in Wireshark
Ich habe eines unserer
tcpdump-Beispiele genommen . Verwenden Sie diese Option, um Pakete mit dem Ergebnis direkt in der GUI des lokalen Wireshark abzufangen.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. Kopieren eines lokalen Ordners auf einen Remote-Server über SSH
Ein schöner Trick, der einen Ordner mit
bzip2
(dies ist die Option -j im Befehl
tar
) und dann den
bzip2
Stream auf der anderen Seite extrahiert, wodurch ein Duplikat des Ordners auf dem Remote-Server erstellt wird.
localhost:~$ tar -cvj /datafolder | ssh remoteserver "tar -xj -C /datafolder"
11. Remote-SSH X11-Weiterleitungs-GUI-Anwendungen
Wenn auf dem Client und dem Remoteserver X installiert ist, können Sie den GUI-Befehl mit einem Fenster auf Ihrem lokalen Desktop remote ausführen. Diese Funktion existiert schon vor langer Zeit, ist aber immer noch sehr nützlich. Starten Sie einen Remote-Webbrowser oder sogar die VMWawre Workstation-Konsole, wie in diesem Beispiel beschrieben.
localhost:~$ ssh -X remoteserver vmware
Erfordert die
X11Forwarding yes
in der Datei
sshd_config
.
12. Kopieren von Remote-Dateien mit rsync und SSH
rsync
ist viel praktischer als
scp
wenn Sie regelmäßig ein Verzeichnis, eine große Anzahl von Dateien oder sehr große Dateien sichern müssen. Es gibt eine Funktion zum Wiederherstellen von Übertragungsfehlern und zum Kopieren nur geänderter Dateien, wodurch Datenverkehr und Zeit gespart werden.
In diesem Beispiel werden die
gzip
Komprimierung (-z) und der Archivierungsmodus (-a) verwendet, der das rekursive Kopieren ermöglicht.
:~$ rsync -az /home/testuser/data remoteserver:backup/
13. SSH über das Tor-Netzwerk
Ein anonymes Tor-Netzwerk kann SSH-Verkehr mit dem
torsocks
. Der folgende Befehl wirft einen SSH-Proxy durch Tor.
localhost:~$ torsocks ssh myuntracableuser@remoteserver
Torsocks verwendet Port 9050 als Proxy für localhost. Wie immer müssen Sie bei der Verwendung von Tor ernsthaft überprüfen, welcher Datenverkehr getunnelt wird, und andere betriebliche Sicherheitsprobleme (opsec).
Wohin gehen Ihre DNS-Abfragen?14. SSH zu EC2-Instanz
Für die Verbindung zu einer EC2-Instanz ist ein privater Schlüssel erforderlich. Laden Sie es (Erweiterung .pem) von der Amazon EC2
chmod 400 my-ec2-ssh-key.pem
und ändern Sie die Berechtigungen (
chmod 400 my-ec2-ssh-key.pem
).
~/.ssh/
Sie den Schlüssel an einem sicheren Ort auf oder legen Sie ihn in Ihrem Ordner
~/.ssh/
.
localhost:~$ ssh -i ~/.ssh/my-ec2-key.pem ubuntu@my-ec2-public
Die
Option -i weist den ssh-Client einfach an, diesen Schalter zu verwenden. Die Datei
~/.ssh/config
ist ideal zum automatischen Konfigurieren der Schlüsselnutzung beim Herstellen einer Verbindung zum ec2-Host.
Host my-ec2-public Hostname ec2???.compute-1.amazonaws.com User ubuntu IdentityFile ~/.ssh/my-ec2-key.pem
15. Bearbeiten von Textdateien mit VIM über ssh / scp
Für alle
vim
Liebhaber spart dieser Tipp etwas Zeit. Mit
vim
Dateien mit scp mit einem einzigen Befehl bearbeitet. Diese Methode erstellt die Datei einfach lokal in
/tmp
und kopiert sie dann zurück, sobald wir sie aus
vim
gespeichert haben.
localhost:~$ vim scp://user@remoteserver//etc/hosts
Hinweis: Das Format unterscheidet sich geringfügig von
scp
. Nach dem Host haben wir double
//
. Dies ist eine Verbindung zum absoluten Pfad. Ein Schrägstrich bedeutet den Pfad relativ zum Home-Ordner des
users
.
**warning** (netrw) cannot determine method (format: protocol://[user@]hostname[:port]/[path])
Wenn dieser Fehler angezeigt wird, überprüfen Sie das Format des Befehls. Dies bedeutet normalerweise einen Syntaxfehler.
16. Mounten von Remote-SSH als lokaler Ordner mit SSHFS
Mit
sshfs
, dem
ssh
Dateisystem-Client, können wir das lokale Verzeichnis mit einem Dateispeicherort mit allen
sshfs
in einer verschlüsselten
ssh
Sitzung verbinden.
localhost:~$ apt install sshfs
Wir installieren das
sshfs
Paket unter Ubuntu und Debian und mounten dann einfach den Remote-Speicherort auf unserem System.
localhost:~$ sshfs user@remoteserver:/media/data ~/data/
17. SSH-Multiplexing mit ControlPath
Wenn Sie über
ssh
eine bestehende Verbindung zum Remote-Server haben,
ssh
zweite Verbindung mit
ssh
oder
scp
standardmäßig eine neue Sitzung mit zusätzlicher Authentifizierung auf. Mit der
ControlPath
Option können Sie eine vorhandene Sitzung für alle nachfolgenden Verbindungen verwenden. Dies beschleunigt den Prozess erheblich: Der Effekt ist selbst im lokalen Netzwerk spürbar, insbesondere bei Verbindung mit Remote-Ressourcen.
Host remoteserver HostName remoteserver.example.org ControlMaster auto ControlPath ~/.ssh/control/%r@%h:%p ControlPersist 10m
ControlPath weist den Socket an, nach neuen Verbindungen für eine aktive
ssh
Sitzung zu
ssh
. Die letzte Option bedeutet, dass die vorhandene Sitzung auch nach dem Verlassen der Konsole 10 Minuten lang geöffnet bleibt, sodass Sie während dieser Zeit erneut eine Verbindung zum vorhandenen Socket herstellen können. Weitere Informationen finden Sie in der Hilfe zum
ssh_config man
.
18. Video-Streaming über SSH mit VLC und SFTP
Selbst langjährige Benutzer von
ssh
und
vlc
(Video Lan Client) kennen diese praktische Option nicht immer, wenn Sie wirklich Videos im Netzwerk ansehen müssen. In den Einstellungen
Datei | Das Open Network Stream vlc
Programm kann den Speicherort als
sftp://
eingeben. Wenn ein Passwort erforderlich ist, wird eine Eingabeaufforderung angezeigt.
sftp://remoteserver//media/uploads/myvideo.mkv
19. Zwei-Faktor-Authentifizierung
Für den SSH-Dienst gilt dieselbe Zwei-Faktor-Authentifizierung wie für Ihr Bankkonto oder Ihr Google-Konto.
Natürlich verfügt
ssh
zunächst über eine Zwei-Faktor-Authentifizierungsfunktion, dh das Kennwort und den SSH-Schlüssel. Der Vorteil eines Hardware-Tokens oder einer Google Authenticator-Anwendung besteht darin, dass es sich normalerweise um ein anderes physisches Gerät handelt.
Lesen Sie unseren 8-minütigen Leitfaden zur
Verwendung von Google Authenticator und SSH .
20. Host springt mit ssh und -J
Wenn Sie aufgrund der Netzwerksegmentierung mehrere SSH-Hosts überqueren müssen, um das endgültige Zielnetzwerk zu erreichen, sparen Sie mit der Verknüpfung -J Zeit.
localhost:~$ ssh -J host1,host2,host3 user@host4.internal
Das Wichtigste, was hier zu verstehen ist, ist, dass dies nicht analog zum
ssh host1
, dann
user@host1:~$ ssh host2
usw. ist. Der Parameter -J verwendet geschickt die Weiterleitung, sodass localhost eine Sitzung mit dem nächsten Host in der Kette erstellt. Im obigen Beispiel authentifiziert sich unser localhost also bei host4. Das heißt, unsere localhost-Schlüssel werden verwendet und die Sitzung von localhost zu host4 ist vollständig verschlüsselt.
Geben Sie dazu die Konfigurationsoption
proxyJump in
ssh_config an . Wenn Sie regelmäßig mehrere Hosts durchlaufen müssen, spart die Automatisierung über die Konfiguration viel Zeit.
21. Blockieren von SSH-Brute-Force-Versuchen mit iptables
Jeder, der den SSH-Dienst ausgeführt und die Protokolle durchgesehen hat, kennt die Anzahl der Brute-Force-Versuche, die täglich stündlich durchgeführt werden. Eine schnelle Möglichkeit, das Rauschen in den Protokollen zu reduzieren, besteht darin, SSH auf einen nicht standardmäßigen Port zu migrieren.
sshd_config
mit dem Konfigurationsparameter
Port sshd_config
Änderungen an der Datei
sshd_config
.
Mit
iptables
können Sie auch problemlos Versuche blockieren, nach Erreichen eines bestimmten Schwellenwerts eine Verbindung zu einem Port herzustellen.
Eine einfache Möglichkeit, dies zu tun, ist die Verwendung von OSSEC , da es nicht nur SSH blockiert, sondern auch eine Reihe anderer hostbasierter Intrusion Detection-Maßnahmen (HIDS) durchführt.22. SSH Escape, um die Portweiterleitung zu ändern
Unser letztes Beispiel ssh
ist das Ändern der Portweiterleitung im laufenden Betrieb in einer vorhandenen Sitzung ssh
. Stellen Sie sich ein solches Szenario vor. Sie sind tief online; Möglicherweise haben Sie über ein halbes Dutzend Hosts gesprungen, und Sie benötigen einen lokalen Port auf der Workstation, der auf das Microsoft SMB des alten Windows 2003-Systems umgeleitet wird (erinnert sich jemand an ms08-67?). Versuchen Siedurch Klicken enter
in die Konsole einzugeben ~C
. Dies ist eine Steuerungssequenz in einer Sitzung, mit der Sie Änderungen an einer vorhandenen Verbindung vornehmen können. localhost:~$ ~C ssh> -h Commands: -L[bind_address:]port:host:hostport Request local forward -R[bind_address:]port:host:hostport Request remote forward -D[bind_address:]port Request dynamic forward -KL[bind_address:]port Cancel local forward -KR[bind_address:]port Cancel remote forward -KD[bind_address:]port Cancel dynamic forward ssh> -L 1445:remote-win2k3:445 Forwarding port.
Hier sehen Sie, dass wir unseren lokalen Port 1445 auf den Windows 2003-Host umgeleitet haben, den wir im internen Netzwerk gefunden haben. Führen Sie msfconsole
es jetzt einfach aus und Sie können fortfahren (vorausgesetzt, Sie planen, diesen Host zu verwenden).Fertigstellung
Diese Beispiele, Tipps und Befehle ssh
sollten einen Ausgangspunkt bieten. Weitere Informationen über die einzelnen Befehle und Funktionen auf den Hilfeseiten ( man ssh
, man ssh_config
, man sshd_config
).Ich war schon immer fasziniert von der Möglichkeit, überall auf der Welt auf Systeme zuzugreifen und Befehle auszuführen. Die Entwicklung Ihrer Fähigkeiten in der Arbeit mit Tools wie ssh
Ihnen wird in jedem Spiel, das Sie spielen, effektiver.