Praktische Tipps, Beispiele und SSH-Tunnel

Praktische Tipps, Beispiele und SSH-Tunnel
Praktische Beispiele SSH, die Ihre Fähigkeiten als Remote-Systemadministrator auf ein neues Niveau heben. Die Befehle und Tipps helfen nicht nur, SSH, sondern auch, sich besser im Netzwerk zurechtzufinden.

Das Wissen um einige Tricks ssh ist für jeden Systemadministrator, Netzwerkingenieur oder Sicherheitsexperten nützlich.

Praktische Beispiele für SSH

  1. SSH Socks-Proxy
  2. SSH-Tunnel (Portweiterleitung)
  3. SSH-Tunnel zum dritten Host
  4. Rückwärts-SSH-Tunnel
  5. Rückwärts-SSH-Proxy
  6. VPN über SSH einrichten
  7. SSH-Schlüssel kopieren (ssh-copy-id)
  8. Remote-Befehle ausführen (nicht interaktiv)
  9. Remote-Paketabgriff und -ansicht mit Wireshark
  10. Lokalen Ordner über SSH auf einen Remote-Server kopieren
  11. Remote-GUI-Anwendungen mit SSH X11-Weiterleitung
  12. Dateien mit rsync und SSH remote kopieren
  13. SSH über das Tor-Netzwerk
  14. SSH zu einer EC2-Instanz
  15. Textdateien mit VIM über ssh/scp bearbeiten
  16. Remote-SSH als lokalen Ordner mit SSHFS einhängen
  17. SSH-Multiplexing mit ControlPath
  18. Streaming-Videos über SSH mit VLC und SFTP
  19. Zwei-Faktor-Authentifizierung
  20. Hop-in und Hop-out zwischen Hosts mit SSH und -J
  21. Blockieren von Brute-Force-Versuchen für SSH mit iptables
  22. SSH Escape zur Änderung der Portweiterleitung

Zuerst die Grundlagen

Analyse der SSH-Befehlszeile

Im folgenden Beispiel werden gängige Parameter verwendet, die häufig beim Verbinden mit einem Remote-Server auftreten. SSH.

localhost:~$ ssh -v -p 22 -C neo@remoteserver

  • -v: Die Ausgabe von Debugging-Informationen ist besonders nützlich bei der Analyse von Authentifizierungsproblemen. Sie kann mehrmals verwendet werden, um zusätzliche Informationen anzuzeigen.
  • - p 22: Port für die Verbindung zum Remote-SSH-Server. 22 muss nicht angegeben werden, da dies der Standardwert ist, aber wenn das Protokoll an einem anderen Port läuft, geben Sie diesen mit dem Parameter an. -p. Der Lauschetport wird in der Datei sshd_config im Format Port 2222.
  • -C: Komprimierung für die Verbindung. Wenn Sie eine langsame Verbindung haben oder viel Text anzeigen, kann dies die Verbindung beschleunigen.
  • neo@: Die Zeichenfolge vor dem @-Symbol bezeichnet den Benutzernamen zur Authentifizierung auf dem Remote-Server. Wenn dies nicht angegeben wird, wird standardmäßig der Benutzername des derzeit angemeldeten Kontos verwendet (~$ whoami). Der Benutzer kann auch mit einem Parameter angegeben werden. -l.
  • remoteserver: Der Hostname, mit dem verbunden wird. ssh, das kann ein vollständiger Domainname, 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 einen Parameter hinzufügen -4 oder -6 für die korrekte Auflösung.

Alle oben genannten Parameter sind optional, außer remoteserver.

Die Verwendung einer Konfigurationsdatei

Obwohl viele mit der Datei vertraut sind sshd_config, gibt es auch eine Client-Konfigurationsdatei für den Befehl ssh. Der Standardwert ~/ .ssh / config, kann jedoch als Parameter für die Option definiert werden. -F.

Host *
     Port 2222

Host remoteserver
     HostName remoteserver.thematrix.io
     User neo
     Port 2112
     IdentityFile /home/test/.ssh/remoteserver.private_key

Im obigen Beispiel der ssh-Konfigurationsdatei gibt es zwei Host-Einträge. Der erste bezeichnet alle Hosts, für alle gilt der Konfigurationsparameter Port 2222. Der zweite besagt, dass für den Host remoteserver ein anderer Benutzername, Port, FQDN und IdentityFile verwendet werden sollen.

Die Konfigurationsdatei kann viel Zeit beim Eingeben von Zeichen sparen, indem sie eine fortgeschrittene Konfiguration beim Verbinden mit bestimmten Hosts automatisch anwendet.

Dateien über SSH mit SCP kopieren

Der SSH-Client wird mit zwei weiteren sehr nützlichen Werkzeugen zum Kopieren von Dateien geliefert. verschlüsseltem SSH-Verbindung. Unten sehen Sie ein Beispiel für die Standardverwendung der Befehle scp und sftp. Beachten Sie, dass viele Optionen für SSH auch in diesen Befehlen angewendet werden.

localhost:~$ scp mypic.png neo@remoteserver:/media/data/mypic_2.png

In diesem Beispiel wird die Datei mypic.png auf remoteserver in den Ordner /media/data kopiert und in mypic_2.png.

umbenannt. Vergessen Sie nicht den Unterschied beim Portparameter. Viele, die scp aus der Eingabeaufforderung heraus starten, laufen hier ins Schleudern. Hier ist der Portparameter -P, und nicht -p, wie beim SSH-Client! Sie werden es vergessen, aber machen Sie sich keine Sorgen, das passiert jedem.

Für diejenigen, die mit der Konsole vertraut sind, ftp, ähneln viele der Befehle sftp. Sie können push, put und ls, wie es Ihnen beliebt.

sftp neo@remoteserver

Praktische Beispiele

In vielen dieser Beispiele kann das Ergebnis auf unterschiedliche Weise erreicht werden. Wie in all unseren Tutorials und Beispielen bevorzugen wir praktische Beispiele, die einfach ihren Zweck erfüllen.

1. SSH Socks-Proxy

Die SSH-Proxy-Funktion ist aus gutem Grund die Nummer 1. Sie ist leistungsfähiger, als viele denken, und ermöglicht Ihnen den Zugriff auf jede System, auf das der Remote-Server Zugriff hat, indem Sie nahezu jede Anwendung verwenden. Der SSH-Client kann den Datenverkehr mit einem einfachen Befehl durch einen SOCKS-Proxy tunneln. Es ist wichtig zu verstehen, dass der Datenverkehr zu den Remote-Systemen vom Remote-Server ausgeht, was in den Webserver-Logs vermerkt wird.

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 starten wir einen SOCKS-Proxy auf TCP-Port 8888, der zweite Befehl überprüft, ob der Port im Listen-Modus aktiv ist. 127.0.0.1 zeigt an, dass der Dienst nur auf localhost läuft. Wir können einen etwas anderen Befehl verwenden, um auf allen Interfaces, einschließlich Ethernet oder WLAN, zu hören, was es anderen Anwendungen (Webbrowser usw.) in unserem Netzwerk ermöglicht, über den SSH-SOCKS-Proxy auf den Proxy-Dienst zuzugreifen.

localhost:~$ ssh -D 0.0.0.0:8888 user@remoteserver

Jetzt können wir den Browser so konfigurieren, dass er eine Verbindung zum SOCKS-Proxy herstellt. Wählen Sie in Firefox Einstellungen | Allgemein | Netzwerkeinstellungen. Geben Sie die IP-Adresse und den Port für die Verbindung ein.

Praktische Tipps, Beispiele und SSH-Tunnel

Bitte beachten Sie die Option am Ende des Formulars, um sicherzustellen, dass DNS-Anfragen des Browsers ebenfalls über den SOCKS-Proxy geleitet werden. Wenn Sie einen Proxy-Server verwenden, um den Webverkehr im lokalen Netzwerk zu verschlüsseln, möchten Sie wahrscheinlich diese Option wählen, damit die DNS-Anfragen über die SSH-Verbindung tunneln.

Aktivierung des SOCKS-Proxys in Chrome

Das Starten von Chrome mit bestimmten Befehlszeilenparametern aktiviert den SOCKS-Proxy sowie das Tunneln von DNS-Anfragen aus dem Browser. Vertrauen Sie, aber überprüfen Sie. Verwenden Sie tcpdump um sicherzustellen, dass die DNS-Anfragen nicht mehr sichtbar sind.

localhost:~$ google-chrome --proxy-server="socks5://192.168.1.10:8888"

Verwendung anderer Anwendungen mit Proxy

Bitte beachten Sie, dass viele andere Anwendungen ebenfalls SOCKS-Proxys verwenden können. Der Webbrowser ist nur die bekannteste davon. Einige Anwendungen verfügen über Konfigurationsoptionen zur Aktivierung des Proxy-Servers. Andere benötigen etwas Unterstützung durch ein Hilfsprogramm. Zum Beispiel proxychains ermöglicht es, Microsoft RDP und andere über den SOCKS-Proxy zu starten.

localhost:~$ proxychains rdesktop $RemoteWindowsServer

Die Konfigurationsparameter des SOCKS-Proxys werden in der Konfigurationsdatei von proxychains festgelegt.

Tipp: Verwenden Sie einen Remote-Desktop von Linux auf Windows? Probieren Sie den Client FreeRDP. Dies ist eine modernere Implementierung als rdesktop, mit einer deutlich flüssigeren Interaktion.

Verwendung von SSH über Socks-Proxy

Sie sitzen in einem Café oder Hotel und müssen ein ziemlich unzuverlässiges WLAN nutzen. Vom Laptop aus starten wir lokal einen SSH-Proxy und richten einen SSH-Tunnel in unser Heimnetz zu einem lokalen Raspberry Pi ein. Mit dem Browser oder anderen Apps, die für den Socks-Proxy konfiguriert sind, erhalten wir Zugriff auf alle Netzwerkdienste in unserem Heimnetz oder fahren über die Heimverbindung ins Internet. Alles zwischen Ihrem Laptop und dem Heimserver (über WLAN und das Internet bis nach Hause) ist im SSH-Tunnel verschlüsselt.

2. SSH-Tunnel (Portweiterleitung)

In der einfachsten Form öffnet ein SSH-Tunnel einfach einen Port in Ihrem lokalen System, der sich mit einem anderen Port am anderen Ende des Tunnels verbindet.

localhost:~$ ssh -L 9999:127.0.0.1:80 user@remoteserver

Lassen Sie uns den Parameter näher betrachten -L. Es kann als lokale Hörseite dargestellt werden. Im obigen Beispiel wird der Port 9999 auf der Seite localhost abgehört und über Port 80 an den remoteserver weitergeleitet. Beachten Sie, dass 127.0.0.1 sich auf localhost auf dem Remote-Server bezieht!

Lassen Sie uns eine Stufe höher gehen. Im nächsten Beispiel werden die abgehörten Ports mit anderen Knoten im lokalen Netzwerk verbunden.

localhost:~$ ssh -L 0.0.0.0:9999:127.0.0.1:80 user@remoteserver

In diesen Beispielen verbinden wir uns mit einem Port auf dem Webserver, das kann aber auch ein Proxy-Server oder ein anderer TCP-Dienst sein.

3. SSH-Tunnel zu einem externen Host

Wir können die gleichen Parameter verwenden, um den Tunnel von einem entfernten Server zu einem anderen Dienst auf einem dritten System herzustellen.

localhost:~$ ssh -L 0.0.0.0:9999:10.10.10.10:80 user@remoteserver

In diesem Beispiel leiten wir den Tunnel vom remoteserver zu dem Webserver weiter, der auf 10.10.10.10 läuft. Der Datenverkehr vom remoteserver zu 10.10.10.10 ist nicht mehr im SSH-Tunnel.Der Webserver auf 10.10.10.10 wird den remoteserver als Quelle für Webanfragen betrachten.

4. Umgekehrter SSH-Tunnel

Hier richten wir einen abhörenden Port auf dem entfernten Server ein, der sich zurück mit dem lokalen Port auf unserem localhost (oder einem anderen System) verbindet.

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 remoteserver zu Port 902 auf unserem lokalen Client hergestellt.

5. Rückwärtsproxy SSH

In diesem Fall richten wir einen Socks-Proxy über unsere SSH-Verbindung ein, wobei der Proxy jedoch am entfernten Server-Ende lauscht. Verbindungen zu diesem entfernten Proxy erscheinen jetzt aus dem Tunnel wie Traffic von unserem localhost.

localhost:~$ ssh -v -R 0.0.0.0:1999 192.168.1.100 user@remoteserver

Fehlerbehebung bei entfernten SSH-Tunneln

Wenn Sie Probleme mit den entfernten SSH-Optionen haben, überprüfen Sie mit netstat, welche anderen Schnittstellen an den Listening-Port angeschlossen sind. Obwohl wir in den Beispielen 0.0.0.0 angegeben haben, wird der Listener nur an localhost (127.0.0.1) gebunden, wenn der Wert GatewayPorts in sshd_config auf den Wert neingesetzt ist.

Sicherheitswarnung

Bitte beachten Sie, dass durch das Öffnen von Tunneln und Socks-Proxys interne Netzwerkressourcen für unsichere Netzwerke (wie das Internet!) zugänglich werden können. Dies kann ein ernsthaftes Sicherheitsrisiko darstellen, stellen Sie daher sicher, dass Sie verstehen, was der Listener ist und auf was er Zugriff hat.

6. VPN über SSH einrichten

Ein allgemeiner Begriff unter Spezialisten für Angriffsmethoden (Penetrationstester und andere) ist «Netzwerkstützpunkt». Nachdem die Verbindung zu einem System hergestellt ist, fungiert dieses System als Gateway für weiteren Zugriff auf das Netzwerk. Ein Stützpunkt, der es ermöglicht, sich weiter zu bewegen.

Für einen solchen Stützpunkt können wir SSH-Proxy verwenden und proxychains, jedoch gibt es einige Einschränkungen. Zum Beispiel können wir nicht direkt mit Sockets arbeiten, weshalb es uns nicht möglich ist, Ports innerhalb des Netzwerks über Nmap SYN.

Mit dieser fortschrittlicheren VPN-Variante wird die Verbindung auf Ebene 3gesenkt. Dann können wir den Datenverkehr einfach über den Tunnel leiten, indem wir die Standard-Netzwerk-Routing verwenden.

Die Methode verwendet ssh, iptables, tun-Schnittstellen und Routing.

Zuerst müssen diese Parameter in sshd_configdefiniert werden. Da wir Änderungen an den Schnittstellen sowohl auf der entfernten als auch auf der Client-Seite vornehmen, benötigen wir Root-Rechte auf beiden Seiten..

PermitRootLogin yes
PermitTunnel yes

Dann stellen wir die ssh-Verbindung her, indem wir das Argument verwenden, das die Initialisierung von tun-Geräten anfordert.

localhost:~# ssh -v -w any root@remoteserver

Jetzt sollte bei der Anzeige der Schnittstellen ein tun-Gerät vorhanden sein (# ip a). Der nächste Schritt besteht darin, IP-Adressen zu den Tunnel-Schnittstellen hinzuzufügen.

SSH-Client-Seite:

localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up

SSH-Server-Seite:

remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up

Jetzt haben wir eine direkte Route zu einem anderen Host (route -n und ping 10.10.10.10).

Wir können jedes Subnetz über den Host auf der anderen Seite routen.

localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0

Auf der entfernten Seite muss ip_forward und iptables.

remoteserver:~# echo 1 > /proc/sys/net/ipv4/ip_forward
remoteserver:~# iptables -t nat -A POSTROUTING -s 10.10.10.2 -o enp7s0 -j MASQUERADE

Boom! VPN über SSH-Tunnel auf Netzwerkebene 3. Das ist schon ein Sieg.

Wenn Probleme auftreten, verwenden Sie tcpdump und ping, um die Ursache zu ermitteln. Da wir auf Ebene 3 arbeiten, werden unsere ICMP-Pakete durch diesen Tunnel geleitet.

7. SSH-Schlüssel kopieren (ssh-copy-id)

Es gibt mehrere Methoden, aber dieser Befehl spart Zeit, um Dateien nicht manuell zu kopieren. Er kopiert einfach ~/.ssh/id_rsa.pub (oder den Standard-Schlüssel) von Ihrem System nach ~/.ssh/authorized_keys auf dem Remote-Server.

localhost:~$ ssh-copy-id user@remoteserver

8. Remote-Befehlsausführung (nicht-interaktiv)

Befehl ssh Sie können mit anderen Teams für eine benutzerfreundliche Schnittstelle verbinden. Fügen Sie einfach das Team, das 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 grep wird auf dem lokalen System ausgeführt, nachdem das Protokoll über den SSH-Kanal heruntergeladen wurde. Wenn die Datei groß ist, ist es einfacher, sie grep auf der Remote-Seite auszuführen, indem Sie beide Befehle einfach in doppelte Anführungszeichen setzen.

Ein weiteres Beispiel erfüllt die gleiche Funktion wie ssh-copy-id aus Beispiel 7.

localhost:~$ cat ~/.ssh/id_rsa.pub | ssh remoteserver 'cat >> .ssh/authorized_keys'

9. Remote-Paketabfang und -anzeigen in Wireshark

Ich habe eines unserer Beispiele für tcpdump. Verwenden Sie es für den Remote-Paketabfang mit der Ausgabe direkt in die GUI von lokalem Wireshark.

:~$ 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 den Ordner mit Hilfe von bzip2 komprimiert (das ist die Option -j im Befehl ,), und dann wird der Stream bzip2 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. GUI-Anwendungen über SSH X11 weiterleiten

Wenn auf dem Client und dem Remote-Server "X11" installiert ist, können Sie GUI-Befehle remote ausführen, und das Fenster wird auf Ihrem lokalen Desktop angezeigt. Diese Funktion gibt es schon lange, aber sie ist nach wie vor sehr nützlich. Starten Sie einen Remote-Webbrowser oder sogar die Konsole von VMWare Workstation, so wie ich es in diesem Beispiel mache.

localhost:~$ ssh -X remoteserver vmware

Es wird eine Zeile benötigt X11Forwarding yes in der Datei sshd_config.

12. Remote-Dateikopieren mit rsync und SSH

rsync ist viel praktischer scp, wenn eine regelmäßige Sicherung eines Verzeichnisses, einer großen Anzahl von Dateien oder sehr großen Dateien erforderlich ist. Hier gibt es eine Funktion zur Wiederherstellung nach Übertragungsfehlern und zum Kopieren nur von geänderten Dateien, was den Datenverkehr und die Zeit spart.

In diesem Beispiel wird die Komprimierung verwendet gzip (-z) und der Archivmodus (-a), der ein rekursives Kopieren einschließt.

:~$ rsync -az /home/testuser/data remoteserver:backup/

13. SSH über das Tor-Netzwerk

Das anonyme Tor-Netzwerk kann SSH-Verkehr tunneln mit dem Befehl torsocks. Der folgende Befehl leitet den SSH-Proxy über Tor.

localhost:~$ torsocks ssh myuntracableuser@remoteserver

Torsocks wird den Proxy-Port 9050 auf localhost verwenden. Wie immer bei der Nutzung von Tor ist es wichtig, den tunnelten Datenverkehr und andere Aspekte der Betriebssicherheit (opsec) gründlich zu überprüfen. Wohin gehen Ihre DNS-Anfragen?

14. SSH zu einer EC2-Instanz

Um sich mit der EC2-Instanz zu verbinden, benötigen Sie einen privaten Schlüssel. Laden Sie ihn (Dateiendung .pem) aus der Amazon EC2 Konsole herunter und ändern Sie die Berechtigungen (chmod 400 my-ec2-ssh-key.pem). Bewahren Sie den Schlüssel an einem sicheren Ort auf oder legen Sie ihn in Ihren Ordner ~/.ssh/.

localhost:~$ ssh -i ~/.ssh/my-ec2-key.pem ubuntu@my-ec2-public

Parameter -i gibt einfach an, dass der ssh-Client diesen Schlüssel verwenden soll. Die Datei ~/ .ssh / config ist perfekt für die automatische Konfiguration des Schlüssels beim Verbinden mit dem 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 Liebhaber vim wird dieser Tipp Ihnen etwas Zeit sparen. Mit Hilfe von vim können Dateien über scp mit einem einzigen Befehl bearbeitet werden. Diese Methode erstellt einfach die Datei lokal in /tmp, und kopiert sie zurück, sobald wir sie aus vim.

localhost:~$ vim scp://user@remoteserver//etc/hosts

Hinweis: Das Format unterscheidet sich etwas von dem gewohnten scp. Nach dem Host folgt ein doppelter //. Dies ist ein Link zum absoluten Pfad. Ein Schrägstrich bedeutet einen Pfad relativ zum Home-Verzeichnis. users.

**Warnung** (netrw) kann die Methode nicht bestimmen (Format: Protokoll://[Benutzer@]Hostname[:Port]/[Pfad]).

Wenn Sie diesen Fehler sehen, überprüfen Sie das Format des Befehls sorgfältig. Dies deutet normalerweise auf einen Syntaxfehler hin.

16. Montage von remote SSH als lokales Verzeichnis mit SSHFS.

Mit Hilfe von sshfs — Client für das Dateisystem. ssh — Wir können ein lokales Verzeichnis mit einem entfernten Speicherort verbinden, wobei alle Dateivorgänge in einer verschlüsselten Sitzung ablaufen. ssh.

localhost:~$ apt install sshfs

Auf Ubuntu und Debian installieren wir das Paket sshfs, und montieren dann einfach den entfernten Speicherort in unser System.

localhost:~$ sshfs user@remoteserver:/media/data ~/data/

17. Multiplexing von SSH mit ControlPath.

Standardmäßig, wenn eine bestehende Verbindung zu einem entfernten Server besteht, ssh stellt eine zweite Verbindung über ssh oder scp eine neue Sitzung mit zusätzlicher Authentifizierung her. Die Option ControlPath ermöglicht die Verwendung der bestehenden Sitzung für alle nachfolgenden Verbindungen. Dies beschleunigt den Prozess erheblich: Der Effekt ist selbst im lokalen Netzwerk spürbar, geschweige denn bei der Verbindung zu entfernten Ressourcen.

Host remoteserver
        HostName remoteserver.example.org
        ControlMaster auto
        ControlPath ~/.ssh/control/%r@%h:%p
        ControlPersist 10m

ControlPath gibt den Socket für die Überprüfung neuer Verbindungen auf aktive Sitzungen an. ssh. Die letzte Option bedeutet, dass die bestehende Sitzung auch nach dem Verlassen der Konsole 10 Minuten lang geöffnet bleibt, sodass Sie in dieser Zeit mit dem vorhandenen Socket wieder verbinden können. Für weitere Informationen siehe die Hilfe. ssh_config man.

18. Streamen von Videos über SSH mit VLC und SFTP

Selbst erfahrene Benutzer ssh und vlc (Video Lan Client) wissen nicht immer von dieser praktischen Option, wenn sie dringend ein Video über das Netzwerk ansehen möchten. In den Einstellungen Datei | Netzwerkstream öffnen Programme vlc kann die Adresse als sftp://eingefügt werden. Wenn ein Passwort erforderlich ist, erscheint eine Nachfrage.

sftp://remoteserver//media/uploads/myvideo.mkv

19. Zwei-Faktor-Authentifizierung

Die gleiche Zwei-Faktor-Authentifizierung wie bei Ihrem Bankkonto oder Google-Konto gilt auch für den SSH-Dienst.

Natürlich ssh verfügt es ursprünglich über eine Zwei-Faktor-Authentifizierung, die aus einem Passwort und einem SSH-Schlüssel besteht. Der Vorteil eines Hardware-Tokens oder der Google Authenticator-App liegt darin, dass es sich in der Regel um ein anderes physisches Gerät handelt.

Siehe unser 8-minütiges Anleitung zu der Verwendung von Google Authenticator und SSH.

20. Sprünge zwischen Hosts mit ssh und -J

Wenn Sie aufgrund von Netzwerksegmentierung mehrere SSH-Hosts durchqueren müssen, um zum Zielnetz zu gelangen, wird Ihnen der Shortcut -J Zeit sparen.

localhost:~$ ssh -J host1,host2,host3 user@host4.internal

Hier ist es wichtig zu verstehen, dass dies nicht mit dem Befehl ssh host1, dann user@host1:~$ ssh host2 usw. identisch ist. Die Option -J nutzt cleveres Forwarding, damit localhost eine Verbindung zur nächsten Instanz in der Kette aufbaut. Im obigen Beispiel authentifiziert sich unser localhost auf host4. Das bedeutet, dass unsere localhost-Schlüssel verwendet werden und die Sitzung von localhost zu host4 vollständig verschlüsselt ist.

Für eine solche Funktion in ssh_config geben Sie die Konfigurationsoption ProxyJumpan. Wenn Sie regelmäßig über mehrere Hosts springen müssen, wird die Automatisierung über die Konfiguration Ihnen viel Zeit sparen.

21. Blockierung von SSH-Brute-Force-Versuchen mit iptables

Jeder, der einen SSH-Dienst verwaltet und die Protokolle überprüft hat, weiß um die Menge von Brute-Force-Versuchen, die jede Stunde und jeden Tag stattfinden. Ein schneller Weg, um das Rauschen in den Protokollen zu verringern, besteht darin, SSH auf einen nicht standardmäßigen Port zu verlagern. Nehmen Sie Änderungen in der Datei vor sshd_config mit der Konfigurationsoption Port##.

Mit iptables kann man ebenfalls einfach Verbindungsversuche zu einem Port blockieren, sobald ein bestimmter Schwellenwert erreicht ist. Eine einfache Möglichkeit, dies zu tun, ist die Verwendung von OSSEC, da es nicht nur SSH blockiert, sondern auch eine Vielzahl anderer Maßnahmen zur Erkennung von Eindringlingen basierend auf dem Hostnamen (HIDS) durchführt.

22. SSH Escape zur Änderung der Portweiterleitung

Und unser letztes Beispiel ssh dient dazu, die Portweiterleitung während einer bestehenden Sitzung in Echtzeit zu ändern. sshStellen Sie sich folgendes Szenario vor: Sie sind tief im Netzwerk; möglicherweise sind Sie durch eine Handvoll Hosts gesprungen und benötigen einen lokalen Port auf Ihrer Arbeitsstation, der auf Microsoft SMB eines alten Windows 2003-Systems umgeleitet wird (wer erinnert sich an ms08-67?).

Drücken Sie enter, versuchen Sie, in die Konsole einzugeben ~C. Dies ist eine Steuersequenz in der Sitzung, die es ermöglicht, Änderungen an der bestehenden Verbindung vorzunehmen.

localhost:~$ ~C
ssh> -h
Befehle:
      -L[bind_address:]port:host:hostport    Anfrage nach lokaler Weiterleitung
      -R[bind_address:]port:host:hostport    Anfrage nach remote Weiterleitung
      -D[bind_address:]port                  Anfrage nach dynamischer Weiterleitung
      -KL[bind_address:]port                 Lokale Weiterleitung abbrechen
      -KR[bind_address:]port                 Remote Weiterleitung abbrechen
      -KD[bind_address:]port                 Dynamische Weiterleitung abbrechen
ssh> -L 1445:remote-win2k3:445
Portweiterleitung.

Hier können Sie sehen, dass wir unseren lokalen Port 1445 auf einen Windows 2003-Host weitergeleitet haben, den wir im internen Netzwerk gefunden haben. Starten Sie einfach msfconsole, und Sie können fortfahren (vorausgesetzt, Sie planen, diesen Host zu nutzen).

Abschluss

Diese Beispiele, Tipps und Befehle ssh sollten einen Ausgangspunkt bieten; weitere Informationen zu jedem der Befehle und Möglichkeiten finden Sie in den Hilfeseiten (man ssh, man ssh_config, man sshd_config).

Ich war schon immer von der Möglichkeit fasziniert, auf Systeme zuzugreifen und Befehle von überall auf der Welt auszuführen. Indem Sie Ihre Fähigkeiten im Umgang mit Tools wie ssh verbessern, werden Sie in jedem Spiel, das Sie spielen, effektiver.

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster