Praktische Tipps, Beispiele und SSH-Tunnel


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


  1. SSH Socken Proxy
  2. SSH-Tunnel (Port Forwarding)
  3. SSH-Tunnel zum dritten Host
  4. SSH-Reverse-Tunnel
  5. SSH-Reverse-Proxy
  6. VPN über SSH installieren
  7. SSH-Schlüssel kopieren (ssh-copy-id)
  8. Remote-Befehlsausführung (nicht interaktiv)
  9. Remote-Paketerfassung und -anzeige in Wireshark
  10. Kopieren eines lokalen Ordners auf einen Remote-Server über SSH
  11. Remote-SSH X11-Weiterleitungs-GUI-Anwendungen
  12. Remote-Dateikopie mit rsync und SSH
  13. SSH über das Tor-Netzwerk
  14. SSH zu EC2-Instanz
  15. Bearbeiten von Textdateien mit VIM über ssh / scp
  16. Mounten von Remote-SSH als lokaler Ordner mit SSHFS
  17. SSH-Multiplexing mit ControlPath
  18. SSH-Video-Streaming mit VLC und SFTP
  19. Zwei-Faktor-Authentifizierung
  20. Host Jumping mit SSH und -J
  21. Blockieren von SSH-Brute-Force-Versuchen mit iptables
  22. 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:~# ssh -v -w any root@remoteserver 

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:~# 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 und ping 10.10.10.10 ).

Sie 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 Remote-Seite müssen Sie ip_forward und iptables ip_forward .

 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 . 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 sshist 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 Sie

durch Klicken enterin 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 msfconsolees jetzt einfach aus und Sie können fortfahren (vorausgesetzt, Sie planen, diesen Host zu verwenden).

Fertigstellung


Diese Beispiele, Tipps und Befehle sshsollten 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 sshIhnen wird in jedem Spiel, das Sie spielen, effektiver.

Source: https://habr.com/ru/post/de435546/


All Articles