Die meisten Sicherheitslösungen sind nur auf den Schutz von Servern im
Unternehmen gegen Clients von außen ausgelegt.
Dreht der Angreifer den Spieß um und stellt den Server ins Internet,
während ein Client im Intranet agiert, funktionieren die gängigen
Erkennungsmethoden nicht. Die IP-Adresse, die beim kompromittierten Server eingeht, ist eine
offiziell beim Unternehmen bekannte Intranet-Adresse eines
Mitarbeiter-PCs. Das ist nicht weiter verdächtig.
Eine Sperre für abgehende Verbindungen via SSH-Port 22 kann der
Angreifer umgehen, indem er seinen SSH-Server auf einem anderen, frei
wählbaren Port, betreibt. Im Zweifel wählt er einfach Port 80, muss dann
aber einen HTTP-Zugang auf einen anderen Port verlegen, beispielsweise
Port 81. In diesem Fall muss der Angreifer von außen der URL den Zusatz ":81"
hinzufügen.
Verhindern kann man dies nur durch Auswertung des
SSH-Handshake-Protokolls auf allen TCP-Ports. Das ist extrem
ressourcenaufwendig und führt zwangsläufig dazu, dass kein Mitarbeiter
SSH nutzen kann. Dies lässt sich wiederum dadurch unterlaufen, dass der
Angreifer selbstprogrammierte Portforwarder auf einem öffentlichen
Server implementiert.
Nicht einmal
IP-Sec
bringt einen wirksamen Schutz gegen Portforwarding. Da der
missbräuchlich genutzte Rechner die TCP-Verbindung zum kompromittierten
Server aufbaut, verfügt er als offizieller Arbeitsplatzrechner auch über
die nötigen
X.509-Zertifikate.
Neueste Kommentare
4 Kommentare zu Gefahr durch SSH: Portforwarding außer Kontrolle
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.
Sinnloser Beispiel
An sich ein nettes Artikel, aber beim Beispiel-Scenario haben sich die Redakteure doch arg viel aus den Fingern gesaugt.
Warum sollte ein Mitarbeiter auf seinem privat angemieteten Gameserver ausgerechnet den offiziellen HTTP-Port auf den HTTP-Port eines internen Rechners legen? Was soll die Motivation dahinter sein?
Port 22 zu sich auf einen intern Rechner könnte ich noch verstehen (wegen Filetransfer), aber Port 80?
Tunneln ist Tunneln, egal ob mit SSH oder TLS
> … lässt sich jeder TCP-basierte Dienst durch eine SSH-Verbindung tunneln.
Klar, und das ist es auch – nicht nur für ssh!
> Um bestehende Client-Software für die getunnelten Dienste nutzen zu können, bietet SSH Portforwarding an.
> Damit unterscheidet es sich von SSL/TLS, das voraussetzt,
> dass der Client SSL beziehungsweise TLS beherrscht.
Aha? Und was ist mit stunnel? Was mit OpenVPN?
> Über so genannte Gateway-Ports bietet SSH den Clients Zugang zu ihren Servern in gewohnter Weise,
Nunja, das ist default nicht aktviert, ist in der sshd_config auch nicht einfach enthalten.
> Das schafft … die Möglichkeit, einen Intranet-Zugang zu einem Server unbemerkt ins Internet zu verlegen.
Eben
> Zugang zur Datei sshd_config hat nur der Benutzer root.
> Scheinbar eine einfache Aufgabe für den Praktikanten der Security-Abteilung
Tja, wo das Problem wohl liegt?
AW: Tunneln ist Tunneln, egal ob mit SSH oder TLS
Da kann ich nur zustimmen.
Wer seinem Praktikanten in der IT-Abteilung root-Rechte einräumt, sollte sich mal Gedanken bezüglich eines neuen Jobs machen.
Und Voraussetzung für die Installation des Tunnels ist nun mal, dass ein internes System ihn etabliert.
AW: AW: Tunneln ist Tunneln, egal ob mit SSH oder TLS
Vielen Dank für die vielen Beiträge. Beim Tunneln hat SSH jedoch tatsächlich eine Besonderheit, da es, anders als stunnel, drei Rechner einbezieht und nicht nur zwei.
Über den Rechner, von dem der Tunnel aufgebaut wird, kann von einem beliebigen SSH-Server mit unsicheren Portforwading-Einstellungen ein Tunnel zu einem dritten Rechner geschaffen werden.
Sind der Mitarbeiter-Client-PC und ein SSH-Server "irgendwo im Internet" unter der Kontrolle eines Angreifers oder Datendiebs, so kann Zugriff von außen auf einen beliebigen Intranet-Server geschaffen werden, unabhängig davon, ob ein Praktikant nun Root-Rechte auf einen Firmen-SSH-Server hat oder nicht.
Startet man stunnel auf einem Mitarbeiter-PC, so ist zwingend erforderlich, dass von außen Zugang zu diesem PC möglich ist, was durch NAT und Firewall verhindert wird.
stunnel auf einem Internet-Rechner kann wiederum nicht auf einen Intranet-Server zugreifen.
Interessant sind VPN-Server, wie OpenVPN. Die können auf einem Mitarbeiter-PC alleine nichts ausrichten. Kombiniert man jedoch SSH und OpenVPN, so kann leicht ein VPN-Zugang von außen zum gesamten Intranet geschaffen werden.
Mit freundlichen Grüßen
Christoph Hochstätter
Autor