Ich habe immer den einfachen Trick verwendet, um die meisten Firewalls zu umgehen, wodurch ich keine Ports verwenden konnte. Ich habe einfach ssh auf einem meiner Server auf Port 443 geöffnet und den gesamten Datenverkehr durch diesen getunnelt.
Allerdings bin ich jetzt in einem Netzwerk, das eine Firewall hat, die ich noch nie gesehen habe, und ich wusste nicht einmal, dass es möglich ist.
In diesem Netzwerk können Sie den 443-Port nur für legitimen Webserver-Datenverkehr verwenden. Wenn ich ssh oder irgendetwas anderes auf Port 443 öffne und versuche, von diesem Netzwerk aus eine Verbindung herzustellen, wird es sofort beendet. Wenn ich Apache auf diesem Server starte, funktioniert es.
Wie ist das überhaupt möglich? Gibt es einige hochentwickelte Firewalls, die sogar verschlüsselten Datenverkehr analysieren können, um sicherzustellen, dass es sich um legitimen https-Datenverkehr handelt? Wie?
quelle
Antworten:
Ja, und sie brauchen hier keine Magie, nur triviale Übereinstimmungen in Bezug auf den TCP-Paketinhalt. Obwohl SSH und TLS (SSL) ihre Nutzdaten verschlüsseln , sind die Protokollheader selbst immer noch unterscheidbar und sehr unterschiedlich voneinander. Beispielsweise beginnt eine SSHv2-Verbindung immer mit dem Senden des Clients
SSH-2.0-(client name and version)
. In ähnlicher Weise , obwohl Ihre Firewall kann wirklich wissen , ob die TLS - Verbindung überträgt HTTP nach innen, kann es erkennen TLS selbst .Eine solche Überprüfung von Schichten über TCP fällt im Allgemeinen unter "Deep Packet Inspection", ein relativ häufiges Merkmal.
Eine naheliegende Möglichkeit, dies zu umgehen, besteht darin, SSH in TLS zu tunneln - beispielsweise mithilfe von Stunnel, Haproxy oder Sniproxy. (Zusätzlich zum einfachen Tunneln, bei dem Port 443 für SSH-over-TLS reserviert ist, können sie auch SSH / HTTP / andere Protokolle auf der Basis von SNI und ALPN über denselben Port multiplexen.)
Dies würde zwar nicht immer eine wirklich ausgefeilte Verkehrsanalyse zunichte machen, aber dennoch die meisten Filter umgehen, bei denen lediglich geprüft wird, ob dies wie ein TLS-Header aussieht.
Und dann gibt es noch die nervigen Firewalls, die TLS abfangen , um den gesamten Datenverkehr zu entschlüsseln und neu zu verschlüsseln. Diese können tatsächlich in TLS sehen und HTTP-Anforderungen weiterleiten, während alle anderen blockiert werden. (Beachten Sie, dass einige Antivirenprogramme dasselbe tun.) Sie können diese Art erkennen, indem Sie sich die Serverzertifikate ansehen. Alle vom Proxy generierten Zertifikate sehen gleich aus und bestehen die Validierung häufig nicht, während echte Zertifikate von verschiedenen Zertifizierungsstellen ausgestellt werden.
quelle