Est-il possible de créer un pare-feu qui autorise uniquement le trafic de serveur Web légitime sur le port 443 et pas sur aucun autre service?

19

J'ai toujours utilisé l'astuce simple pour contourner la plupart des pare-feu, ce qui m'a empêché d'utiliser des ports. J'ai simplement ouvert ssh sur l'un de mes serveurs sur le port 443 et tunnelé tout le trafic par là.

Cependant, je suis maintenant sur un réseau qui a un pare-feu que je n'avais jamais vu auparavant et je ne savais même pas que c'était possible.

Sur ce réseau, vous ne pouvez utiliser le port 443 que pour le trafic de serveur Web légitime. Si j'ouvre ssh, ou quoi que ce soit d'autre sur le port 443 et que j'essaie de me connecter à partir de ce réseau, il est immédiatement tué. Si je démarre apache sur ce serveur, cela fonctionne.

Comment est-ce possible? Existe-t-il des pare-feu super sophistiqués qui sont même capables d'analyser le trafic crypté pour vérifier qu'il s'agit d'un trafic https légitime? Comment?

Petr
la source
4
Son équipement SPI, plus haut de gamme, peut effectuer des inspections plus avancées et interrompre les connexions indésirables.
Linef4ult
Vous pouvez créer une liste blanche et autoriser uniquement ce trafic, le problème est que le trafic de serveur Web légitime est susceptible de changer, les adresses IP peuvent être réaffectées, ce qui pourrait être Microsoft aujourd'hui pourrait être Google demain. Il vaut mieux utiliser un tunnel sécurisé pour communiquer avec vos serveurs et créer une liste blanche de clients autorisés, puis déterminez la procédure pour ajouter des clients supplémentaires dans le futur (car cette liste va changer).
Ramhound
Vous pouvez utiliser par exemple Obfsproxy pour masquer le trafic SSH en tant que trafic HTTP (S) inoffensif.
Michael

Réponses:

26

Oui, et ils n'ont pas besoin de magie ici, juste une correspondance triviale sur le contenu du paquet TCP. Même si SSH et TLS (SSL) chiffrent leurs charges utiles , les en - têtes de protocole eux - mêmes sont toujours distincts et très différents l'un de l'autre. Par exemple, une connexion SSHv2 commence toujours par l'envoi du client SSH-2.0-(client name and version). De même, même si votre pare-feu ne peut pas vraiment savoir si la connexion TLS contient HTTP à l'intérieur, il peut reconnaître TLS lui-même .

Une telle inspection des couches au-dessus de TCP relève généralement de «l'inspection approfondie des paquets», une caractéristique relativement courante.

Une façon évidente de contourner cela est de tunneler SSH dans TLS - par exemple, en utilisant stunnel, haproxy ou sniproxy. (En plus du tunnelage simple, où le port 443 est dédié à SSH sur TLS, ils peuvent également multiplexer SSH / HTTP / d'autres protocoles sur le même port en fonction de SNI et ALPN.)

Bien que cela ne vienne pas toujours à l'encontre d'une analyse du trafic vraiment sophistiquée, il contournerait tout de même la plupart des filtres qui vérifient simplement "cela ressemble-t-il à un en-tête TLS".


Et puis il y a le genre ennuyeux de pare-feu - ceux qui interceptent TLS pour décrypter et rechiffrer tout le trafic. Ceux-ci peuvent réellement voir à l'intérieur de TLS et peuvent transmettre des requêtes HTTP tout en bloquant tout le reste. (Notez que certains programmes antivirus font également la même chose.) Vous pouvez reconnaître ce type en consultant les certificats du serveur; tous les certificats générés par proxy se ressemblent et ne passent souvent pas la validation, tandis que les certificats réels sont émis par différentes autorités de certification différentes.

grawity
la source
1
SSH fait donc sa propre sécurité au niveau de l'application, plutôt que d'être simplement un autre protocole sur TLS (qui par défaut, il n'utilise pas)?
Medinoc
2
@Medinoc: Oui, il implémente des fonctionnalités similaires (dans le SSHv2 « transport » et « authentification » couches ) et n'a pas besoin TLS pour quoi que ce soit.
grawity
Existe-t-il un moyen fiable de reconnaître ces pare-feu renifleurs? Je n'aime pas l'idée que quelqu'un intercepte mes mots de passe lors de l'utilisation de https. Je ne savais même pas que c'était possible jusqu'à présent.
Petr
2
POST / HTTP / 1.0 base64garbage HTTP / 200 200 OK base64garbage crée un protocole de transport
Joshua
3
@Petr Prolongeant les remarques de grawity, s'il s'agit d'un ordinateur appartenant à l'employeur, les certificats ont probablement été installés avant de vous les remettre; et le pare-feu MITM sera configuré de sorte que si vous n'utilisez pas leur certificat, aucun trafic https ne sera autorisé afin que vos choix soient conformes à la politique ou n'aient pas de https. OTOH dans ce cas, vérifier le certificat dira probablement quelque chose comme "vérifié par le nom de l'employeur" et quelque chose de similaire dans le nom de l'AC si vous explorez plus profondément. Par exemple, sur mon ordinateur de travail, il s'agit de bluecoat.companyname.com (où bluecoat est la marque du pare-feu utilisé).
Dan Neely