Praktische Tipps, Beispiele und SSH-Tunnel

Praktische Tipps, Beispiele und SSH-Tunnel
Praxisbeispiele SSHDas wird Ihre Fähigkeiten als Remote-Systemadministrator auf ein neues Niveau heben. Befehle und Tipps helfen nicht nur bei der Verwendung SSH, sondern auch intelligenter im Netzwerk navigieren.

Ein paar Tricks kennen ssh Nützlich für jeden Systemadministrator, Netzwerktechniker oder Sicherheitsexperten.

Praktische SSH-Beispiele

  1. SSH-Socks-Proxy
  2. SSH-Tunnel (Portweiterleitung)
  3. SSH-Tunnel zum dritten Host
  4. Reverse-SSH-Tunnel
  5. SSH-Reverse-Proxy
  6. Installation eines VPN über SSH
  7. SSH-Schlüssel kopieren (ssh-copy-id)
  8. Remote-Befehlsausführung (nicht interaktiv)
  9. Remote-Paketerfassung und -anzeige mit Wireshark
  10. Kopieren eines lokalen Ordners auf einen Remote-Server über SSH
  11. Remote-GUI-Anwendungen mit SSH X11-Weiterleitung
  12. Fernkopieren von Dateien mit rsync und SSH
  13. SSH über das Tor-Netzwerk
  14. SSH zur EC2-Instanz
  15. Bearbeiten von Textdateien mit VIM über ssh/scp
  16. Mounten eines Remote-SSH als lokalen Ordner mit SSHFS
  17. Multiplexing von SSH mit ControlPath
  18. Streamen Sie Videos über SSH mit VLC und SFTP
  19. Zwei-Faktor-Authentifizierung
  20. Host-Hopping mit SSH und -J
  21. Blockieren von SSH-Brute-Force-Versuchen mit iptables
  22. SSH Escape, um die Portweiterleitung zu ändern

Grundlagen zuerst

Parsen der SSH-Befehlszeile

Im folgenden Beispiel werden häufig verwendete Optionen verwendet, wenn eine Verbindung zu einem Remote-Server hergestellt wird SSH.

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

  • -v: Die Debug-Ausgabe ist besonders nützlich bei der Analyse von Authentifizierungsproblemen. Kann mehrfach verwendet werden, um zusätzliche Informationen anzuzeigen.
  • - p 22: Anschlussport an einen Remote-SSH-Server. 22 muss nicht angegeben werden, da dies der Standardwert ist. Wenn sich das Protokoll jedoch auf einem anderen Port befindet, geben wir es mithilfe des Parameters an -p. Der Listening-Port ist in der Datei angegeben sshd_config im Format Port 2222.
  • -C: Komprimierung für die Verbindung. Wenn Sie einen langsamen Kanal haben oder viel Text sehen, kann dies die Verbindung beschleunigen.
  • neo@: Die Zeile vor dem @-Zeichen gibt den Benutzernamen für die Authentifizierung beim Remote-Server an. Wenn Sie es nicht angeben, wird standardmäßig der Benutzername des Kontos verwendet, bei dem Sie gerade angemeldet sind (~$ whoami). Mit dem Parameter kann auch der Benutzer angegeben werden -l.
  • remoteserver: Name des Hosts, zu dem eine Verbindung hergestellt werden soll ssh, es 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 den Befehlszeilenparameter hinzufügen -4 oder -6 für die richtige Auflösung.

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

Verwendung einer Konfigurationsdatei

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

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, für alle wird der Konfigurationsparameter Port 2222 angewendet. Der zweite sagt das für den Host Remoteserver Sie sollten einen anderen Benutzernamen, Port, FQDN und eine andere Identitätsdatei verwenden.

Eine Konfigurationsdatei kann viel Zeit beim Eingeben von Zeichen sparen, indem sie die automatische Anwendung erweiterter Konfigurationen beim Herstellen einer Verbindung zu bestimmten Hosts ermöglicht.

Kopieren von Dateien über SSH mit SCP

Der SSH-Client verfügt über zwei weitere sehr praktische Tools zum Kopieren von Dateien verschlüsselte SSH-Verbindung. Nachfolgend finden Sie ein Beispiel für eine typische Verwendung der Befehle scp und sftp. Beachten Sie, dass viele der SSH-Optionen auch für diese Befehle gelten.

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

In diesem Beispiel die Datei mypic.png kopiert nach Remoteserver zum Ordner /media/data und umbenannt in mypic_2.png.

Vergessen Sie nicht den Unterschied im Port-Parameter. Darauf stoßen viele, die starten scp über die Befehlszeile. Hier ist der Port-Parameter -PUnd nicht -p, wie in einem SSH-Client! Du wirst es vergessen, aber keine Sorge, jeder vergisst es.

Für diejenigen, die mit der Konsole vertraut sind ftp, viele der Befehle sind ähnlich sftp. Du kannst tun drücken, setzen и lswie es Dein Herz begehrt.

sftp neo@remoteserver

Praxisbeispiele

In vielen dieser Beispiele kann das Ergebnis durch unterschiedliche Methoden erreicht werden. Wie in allen unseren Lehrbücher und Beispiele werden praktische Beispiele bevorzugt, die einfach funktionieren.

1. SSH-Socks-Proxy

Die SSH-Proxy-Funktion ist aus gutem Grund die Nummer 1. Es ist leistungsfähiger als die meisten Leute denken und ermöglicht Ihnen den Zugriff auf jedes System, auf das ein Remote-Server Zugriff hat, und das mit nahezu jeder Anwendung. Ein SSH-Client kann mit einem einfachen Befehl Datenverkehr über einen 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 starten wir einen Socks-Proxy auf TCP-Port 8888, der zweite Befehl prüft, ob der Port im Listening-Modus 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 den 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 Socks-Proxy herstellt. In Firefox auswählen Einstellungen | Haupt | Netzwerkeinstellungen. Geben Sie die IP-Adresse und den Port für die Verbindung an.

Praktische Tipps, Beispiele und SSH-Tunnel

Achten Sie auf die Option am Ende des Formulars, damit die DNS-Anfragen des Browsers auch über den SOCKS-Proxy laufen. Wenn Sie einen Proxyserver verwenden, um den Webverkehr in Ihrem lokalen Netzwerk zu verschlüsseln, möchten Sie wahrscheinlich diese Option auswählen, damit DNS-Abfragen über die SSH-Verbindung getunnelt werden.

Socken-Proxy in Chrome aktivieren

Wenn Sie Chrome mit bestimmten Befehlszeilenoptionen ausführen, wird der Socks-Proxy aktiviert und DNS-Anfragen vom Browser getunnelt. Vertrauen, aber prüfen. Verwenden tcpdump um zu überprüfen, ob DNS-Anfragen nicht mehr sichtbar sind.

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

Verwendung anderer Anwendungen mit einem Proxy

Beachten Sie, dass auch viele andere Anwendungen Socks-Proxys verwenden können. Der Webbrowser ist einfach der beliebteste von allen. Einige Anwendungen verfügen über Konfigurationsoptionen zum Aktivieren eines Proxyservers. Andere brauchen ein wenig Hilfe mit einem Hilfsprogramm. Zum Beispiel, Proxy-Ketten ermöglicht die Ausführung über den Socks-Proxy von Microsoft RDP usw.

localhost:~$ proxychains rdesktop $RemoteWindowsServer

Die Socks-Proxy-Konfigurationsparameter werden in der Proxychains-Konfigurationsdatei festgelegt.

Hinweis: Wenn Sie einen Remotedesktop von Linux zu Windows verwenden? Versuchen Sie es mit Client FreiRDP. Dies ist eine modernere Implementierung als rdesktop, mit viel reibungsloserer Interaktion.

Option zur Verwendung von SSH über den Socks-Proxy

Sie sitzen in einem Café oder Hotel – und sind gezwungen, eher unzuverlässiges WLAN zu nutzen. Vom Laptop aus starten wir lokal einen SSH-Proxy und richten einen SSH-Tunnel zum Heimnetzwerk auf dem lokalen Rasberry Pi ein. Mit einem Browser oder anderen für einen Socks-Proxy konfigurierten Anwendungen können wir auf alle Netzwerkdienste in unserem Heimnetzwerk zugreifen oder über unsere Heimverbindung online gehen. Alles zwischen Ihrem Laptop und Ihrem Heimserver (über WLAN und Internet zu Ihnen nach Hause) wird in einem 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 den Parameter analysieren -L. Man kann es sich als die lokale Zuhörerseite vorstellen. Im obigen Beispiel überwacht Port 9999 also die Seite des lokalen Hosts und leitet ihn über Port 80 an den Remoteserver weiter. Beachten Sie, dass 127.0.0.1 sich auf localhost auf dem Remote-Server bezieht!

Lass uns die Treppe hinaufgehen. Das folgende Beispiel bindet Überwachungsports an andere Hosts 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 zu einem Port auf dem Webserver her, dies könnte jedoch ein Proxyserver oder ein anderer TCP-Dienst sein.

3. SSH-Tunnel zum Drittanbieter-Host

Wir können dieselben Optionen verwenden, um einen Tunnel von einem Remote-Server zu einem anderen Dienst zu erstellen, 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 einen Tunnel vom Remoteserver an einen Webserver weiter, der unter 10.10.10.10 läuft. Datenverkehr vom Remoteserver zum 10.10.10.10 nicht mehr im SSH-Tunnel. Der Webserver unter 10.10.10.10 betrachtet den Remoteserver als Quelle der Webanfragen.

4. Reverse-SSH-Tunnel

Hier richten wir einen Überwachungsport auf dem Remote-Server ein, der eine Verbindung zu einem 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

Diese SSH-Sitzung stellt eine Verbindung von Port 1999 auf dem Remoteserver zu Port 902 auf unserem lokalen Client her.

5. SSH-Reverse-Proxy

In diesem Fall richten wir einen Socks-Proxy für unsere SSH-Verbindung ein, der Proxy lauscht jedoch am entfernten Ende des Servers. Verbindungen zu diesem Remote-Proxy verlassen nun den Tunnel als Datenverkehr von unserem lokalen Host.

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

Fehlerbehebung bei Remote-SSH-Tunneln

Wenn Sie Probleme haben, die SSH-Remote-Optionen zum Laufen zu bringen, wenden Sie sich an netstat, mit welchen anderen Schnittstellen der Listening-Port verbunden ist. Wir haben zwar in den Beispielen 0.0.0.0 angegeben, aber wenn der Wert GatewayPorts в sshd_config einstellen nicht, dann wird der Listener nur an localhost (127.0.0.1) gebunden.

Sicherheitswarnung

Bitte beachten Sie, dass beim Öffnen von Tunneln und Sock-Proxys interne Netzwerkressourcen möglicherweise für unzuverlässige Netzwerke (z. B. das Internet!) verfügbar sind. Dies kann ein ernstes Sicherheitsrisiko darstellen. Stellen Sie daher sicher, dass Sie verstehen, was ein Listener ist und worauf er Zugriff hat.

6. Installieren Sie VPN über SSH

Ein unter Angreifern (Pentester etc.) gebräuchlicher Begriff ist „Netzwerkdrehpunkt“. Sobald eine Verbindung zu einem System hergestellt ist, wird dieses System zum Gateway für den weiteren Zugriff auf das Netzwerk. Ein Drehpunkt, der es Ihnen ermöglicht, sich in der Breite zu bewegen.

Für einen solchen Halt können wir einen SSH-Proxy verwenden und Proxy-KettenEs gibt jedoch einige Einschränkungen. Beispielsweise wird es nicht möglich sein, direkt mit Sockets zu arbeiten, sodass wir keine Ports innerhalb des Netzwerks scannen können Nmap SYN.

Bei Verwendung dieser erweiterten VPN-Option bricht die Verbindung ab Stufe 3. Anschließend können wir den Datenverkehr mithilfe von Standard-Netzwerkrouting einfach durch den Tunnel leiten.

Die Methode verwendet ssh, iptables, tun interfaces und Routing.

Zuerst müssen Sie diese Parameter einstellen sshd_config. Da wir Änderungen an den Schnittstellen sowohl des Remote- als auch des Client-Systems vornehmen, haben wir benötigen Root-Rechte auf beiden Seiten.

PermitRootLogin yes
PermitTunnel yes

Anschließend stellen wir mithilfe des Parameters, der die Initialisierung von Tun-Geräten anfordert, eine SSH-Verbindung her.

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

Wir sollten jetzt ein Tun-Gerät haben, wenn wir Schnittstellen anzeigen (# ip a). Im nächsten Schritt werden IP-Adressen zu den Tunnelschnittstellen hinzugefügt.

SSH-Clientseite:

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

SSH-Serverseite:

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 и ping 10.10.10.10).

Es ist möglich, jedes Subnetz über den Host auf der anderen Seite zu routen.

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

Aktivieren Sie auf der Remote-Seite ip_forward и 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 Netzwerkschicht 3. Das ist schon ein Sieg.

Wenn es Probleme gibt, verwenden Sie tcpdump и pingum die Ursache zu ermitteln. Da wir auf Layer 3 spielen, werden unsere ICMP-Pakete durch diesen Tunnel geleitet.

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

Dafür gibt es mehrere Möglichkeiten, aber dieser Befehl spart Zeit, da die Dateien nicht manuell kopiert werden müssen. Es kopiert einfach ~/.ssh/id_rsa.pub (oder den Standardschlüssel) von Ihrem System nach ~/.ssh/authorized_keys auf einem Remote-Server.

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

8. Remote-Befehlsausführung (nicht interaktiv)

Team ssh kann für die übliche benutzerfreundliche Oberfläche mit anderen Befehlen 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 grep wird auf dem lokalen System ausgeführt, nachdem das Protokoll über den SSH-Kanal heruntergeladen wurde. Wenn die Datei groß ist, ist die Ausführung bequemer grep auf der Remote-Seite, indem Sie einfach beide Befehle in doppelte Anführungszeichen setzen.

Ein anderes Beispiel führt die gleiche Funktion aus wie ssh-copy-id aus Beispiel 7.

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

9. Remote-Paketerfassung und Wireshark-Ansicht

Ich habe eines von uns genommen tcpdump-Beispiele. Verwenden Sie es, um Pakete aus der Ferne zu erfassen und das Ergebnis direkt an die GUI Ihres lokalen Wireshark zurückzugeben.

:~$ 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 netter Trick, mit dem man einen Ordner komprimieren kann bzip2 (Dies ist die Option -j im Befehl tar) und ruft dann den Stream ab bzip2 Auf der anderen Seite wird ein doppelter Ordner auf dem Remote-Server erstellt.

localhost:~$ tar -cvj /datafolder | ssh remoteserver "tar -xj -C /datafolder"

11. Remote-GUI-Anwendungen mit SSH-X11-Weiterleitung

Wenn sowohl auf dem Client als auch auf dem Remote-Server „x“ installiert ist, können Sie einen GUI-Befehl remote über ein Fenster auf Ihrem lokalen Desktop ausführen. Diese Funktion gibt es schon seit langem, ist aber immer noch sehr nützlich. Starten Sie einen Remote-Webbrowser oder sogar eine VMWawre Workstation-Konsole, wie ich es in diesem Beispiel tue.

localhost:~$ ssh -X remoteserver vmware

Zeichenfolge erforderlich X11Forwarding yes im Ordner sshd_config.

12. Remote-Kopieren von Dateien mit rsync und SSH

rsync viel bequemer scpwenn Sie eine regelmäßige Sicherung eines Verzeichnisses, einer großen Anzahl von Dateien oder sehr großer Dateien benötigen. Es gibt eine Funktion zur Wiederherstellung nach einem Übertragungsfehler und zum Kopieren nur geänderter Dateien, was Datenverkehr und Zeit spart.

In diesem Beispiel wird Komprimierung verwendet gzip (-z) und Archivmodus (-a), der rekursives Kopieren ermöglicht.

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

13. SSH über das Tor-Netzwerk

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

localhost:~$ torsocks ssh myuntracableuser@remoteserver

Torsocks verwendet Port 9050 auf localhost für den Proxy. Wie immer müssen Sie bei der Verwendung von Tor sorgfältig prüfen, welcher Datenverkehr getunnelt wird und welche anderen Betriebssicherheitsprobleme (Opsec) vorliegen. Wohin gehen Ihre DNS-Anfragen?

14. SSH zur EC2-Instanz

Für die Verbindung mit einer EC2-Instanz ist ein privater Schlüssel erforderlich. Laden Sie es (.pem-Erweiterung) aus dem Amazon EC2-Kontrollfeld 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 weist den SSH-Client einfach an, diesen Schlüssel zu verwenden. Datei ~/.ssh/config Ideal für die automatische Konfiguration der Schlüsselnutzung beim Herstellen einer Verbindung zu einem EC2-Host.

Host my-ec2-public
   Hostname ec2???.compute-1.amazonaws.com
   User ubuntu
   IdentityFile ~/.ssh/my-ec2-key.pem

15. Bearbeiten Sie Textdateien mit VIM über ssh/scp

Für alle Liebhaber vim Mit diesem Tipp sparen Sie Zeit. Mit Hilfe vim Dateien werden über scp mit einem Befehl bearbeitet. Diese Methode erstellt die Datei einfach lokal in /tmpund kopiert es dann zurück, sobald wir es gespeichert haben vim.

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

Hinweis: Das Format unterscheidet sich geringfügig vom Üblichen scp. Nach dem Gastgeber gibt es ein Double //. Dies ist eine absolute Pfadreferenz. Ein einzelner Schrägstrich bedeutet, dass der Pfad relativ zum Home-Ordner ist users.

**warning** (netrw) cannot determine method (format: protocol://[user@]hostname[:port]/[path])

Wenn dieser Fehler auftritt, überprüfen Sie das Befehlsformat noch einmal. Dies bedeutet normalerweise einen Syntaxfehler.

16. Mounten Sie Remote-SSH als lokalen Ordner mit SSHFS

Durch sshfs - Dateisystem-Client ssh – Wir können ein lokales Verzeichnis mit allen Dateiinteraktionen in einer verschlüsselten Sitzung an einem entfernten Standort bereitstellen ssh.

localhost:~$ apt install sshfs

Installieren Sie das Paket auf Ubuntu und Debian sshfs, und mounten Sie dann einfach den Remote-Standort in unserem System.

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

17. Multiplexing von SSH mit ControlPath

Standardmäßig, wenn eine Verbindung zu einem Remote-Server besteht ssh zweite Verbindung mit ssh oder scp baut eine neue Sitzung mit zusätzlicher Authentifizierung auf. Möglichkeit ControlPath ermöglicht es Ihnen, eine bestehende Sitzung für alle nachfolgenden Verbindungen zu verwenden. Dadurch wird der Prozess erheblich beschleunigt: Der Effekt macht sich sogar im lokalen Netzwerk und umso mehr bemerkbar, wenn eine Verbindung zu Remote-Ressourcen besteht.

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

ControlPath gibt den Socket für neue Verbindungen an, um nach einer aktiven Sitzung zu suchen ssh. Die letzte Option bedeutet, dass die bestehende Sitzung auch nach dem Abmelden von der Konsole 10 Minuten lang geöffnet bleibt, sodass Sie während dieser Zeit die Verbindung zum vorhandenen Socket wiederherstellen können. Weitere Informationen finden Sie in der Hilfe. ssh_config man.

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

Sogar langjährige Benutzer ssh и vlc (Video Lan Client) kennen diese praktische Option nicht immer, wenn Sie wirklich Videos über das Netzwerk ansehen müssen. In den Einstellungen Datei | Öffnen Sie den Netzwerkstream Programm vlc Sie können den Ort als eingeben sftp://. Wenn ein Passwort erforderlich ist, werden Sie dazu aufgefordert.

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

19. Doppelfaktorauthentifizierung

Für den SSH-Dienst gilt die gleiche Zwei-Faktor-Authentifizierung wie bei Ihrem Bankkonto oder Google-Konto.

Natürlich ssh verfügt zunächst über eine Zwei-Faktor-Authentifizierung, also ein Passwort und einen SSH-Schlüssel. Der Vorteil eines Hardware-Tokens oder einer Google Authenticator-App besteht darin, dass es sich normalerweise um ein anderes physisches Gerät handelt.

Sehen Sie sich unseren 8-minütigen Leitfaden an mit Google Authenticator und SSH.

20. Hosts mit ssh und -J springen

Wenn die Netzwerksegmentierung erfordert, dass Sie mehrere SSH-Hosts durchlaufen müssen, um zu Ihrem endgültigen Zielnetzwerk zu gelangen, können Sie mit der Verknüpfung -J Zeit sparen.

localhost:~$ ssh -J host1,host2,host3 [email protected]

Hier geht es vor allem darum zu verstehen, dass dies nicht mit dem Befehl vergleichbar ist ssh host1Dann user@host1:~$ ssh host2 usw. Die Option -J nutzt geschickt die Weiterleitung, damit localhost eine Sitzung mit dem nächsten Host in der Kette aufbaut. Im obigen Beispiel authentifiziert sich unser Localhost also bei Host4. Das heißt, es werden unsere Localhost-Schlüssel verwendet und die Sitzung von Localhost zu Host4 ist vollständig verschlüsselt.

Für eine solche Gelegenheit ssh_config Geben Sie die Konfigurationsoption an ProxyJump. Wenn Sie regelmäßig mehrere Hosts durchlaufen müssen, spart die Automatisierung durch die Konfiguration viel Zeit.

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

Jeder, der einen SSH-Dienst verwaltet und sich die Protokolle angesehen hat, weiß, wie viele Brute-Force-Versuche es stündlich und jeden Tag gibt. Eine schnelle Möglichkeit, Protokollrauschen zu reduzieren, besteht darin, SSH auf einen nicht standardmäßigen Port zu verschieben. Nehmen Sie Änderungen an der Datei vor sshd_config Verwenden einer Konfigurationsoption Hafen##.

Mit iptables Sie können Verbindungsversuche zu einem Port auch einfach blockieren, wenn 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 Reihe anderer HIDS-Maßnahmen (Hostname-based Intrusion Detection) durchführt.

22. SSH Escape zum Ändern der Portweiterleitung

Und unser letztes Beispiel ssh Entwickelt, um die Portweiterleitung im Handumdrehen innerhalb einer bestehenden Sitzung zu ändern ssh. Stellen Sie sich ein solches Szenario vor. Sie sind tief im Netzwerk; bin vielleicht durch ein halbes Dutzend Hosts gesprungen und brauche einen lokalen Port auf der Workstation, der an den Microsoft SMB eines alten Windows 2003-Systems weitergeleitet wird (erinnert sich jemand an ms08-67?).

Klicken enter, versuchen Sie es in der Konsole einzugeben ~C. Dies ist eine Sitzungs-Escape-Sequenz, mit der Sie Änderungen an einer bestehenden 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 an einen Windows 2003-Host weitergeleitet haben, den wir im internen Netzwerk gefunden haben. Jetzt lauf einfach msfconsole, und Sie können loslegen (vorausgesetzt, Sie planen, diesen Host zu verwenden).

Abschluss

Diese Beispiele, Tipps und Befehle ssh sollte einen Ausgangspunkt geben; Weitere Informationen zu den einzelnen Befehlen und Funktionen finden Sie auf den Manpages (man ssh, man ssh_config, man sshd_config).

Die Möglichkeit, überall auf der Welt auf Systeme zuzugreifen und Befehle auszuführen, hat mich schon immer fasziniert. Entwickeln Sie Ihre Fähigkeiten mit Tools wie ssh Sie werden in jedem Spiel, das Sie spielen, effizienter.

Source: habr.com

Kommentar hinzufügen