
Praktische Beispiele , 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
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 Dateisshd_configim FormatPort 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-4oder-6fü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_keyIm 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.pngIn 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@remoteserverPraktische Beispiele
In vielen dieser Beispiele kann das Ergebnis auf unterschiedliche Weise erreicht werden. Wie in all unseren 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/sshHier 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@remoteserverJetzt 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.

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 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 ermöglicht es, Microsoft RDP und andere über den SOCKS-Proxy zu starten.
localhost:~$ proxychains rdesktop $RemoteWindowsServerDie 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 . 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@remoteserverIn 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@remoteserverIn 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@remoteserverIn 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@remoteserverFehlerbehebung 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 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 yesDann 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 upSSH-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 MASQUERADEBoom! VPN über SSH-Tunnel auf Netzwerkebene 3. Das ist schon ein Sieg.
Wenn Probleme auftreten, verwenden Sie 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 . 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@remoteserverwird 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 .
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 , 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
