Siempre usé el simple truco para evitar la mayoría de los firewalls que me impedían usar cualquier puerto. Simplemente abrí ssh en uno de mis servidores en el puerto 443 y canalicé todo el tráfico a través de allí.
Sin embargo, ahora estoy en una red que tiene un firewall que nunca antes había visto y ni siquiera sabía que era posible.
En esta red, puede usar el puerto 443 solo para el tráfico legítimo del servidor web. Si abro ssh, o cualquier otra cosa en el puerto 443 e intento conectarme desde esta red, se mata inmediatamente. Si inicio apache en ese servidor, funciona.
Como es esto posible? ¿Hay algunos firewalls súper sofisticados que incluso sean capaces de analizar el tráfico encriptado para verificar que sea tráfico https legítimo? ¿Cómo?
fuente
Respuestas:
Sí, y no necesitan ninguna magia aquí, solo coincidencias triviales en el contenido del paquete TCP. A pesar de que SSH y TLS (SSL) cifran sus cargas útiles , los encabezados de protocolo en sí mismos son distinguibles y muy diferentes entre sí. Por ejemplo, una conexión SSHv2 siempre comienza con el envío del cliente
SSH-2.0-(client name and version)
. Del mismo modo, aunque su firewall realmente no puede saber si la conexión TLS lleva HTTP dentro, puede reconocer TLS por sí mismo .Dicha inspección de capas por encima de TCP generalmente se encuentra en "Inspección profunda de paquetes", una característica relativamente común.
Una forma obvia de evitar esto es hacer un túnel SSH dentro de TLS, por ejemplo, usando stunnel, haproxy o sniproxy. (Además del túnel simple, donde el puerto 443 está dedicado a SSH-over-TLS, también pueden multiplexar SSH / HTTP / otros protocolos sobre el mismo puerto basado en SNI y ALPN).
Si bien esto no siempre anularía el análisis de tráfico realmente sofisticado, aún pasaría por alto la mayoría de los filtros que simplemente comprueban "esto parece un encabezado TLS".
Y luego está el tipo de firewalls molestos: los que interceptan TLS para descifrar y volver a cifrar todo el tráfico. En realidad, pueden ver dentro de TLS y pueden pasar solicitudes HTTP mientras bloquean todo lo demás. (Tenga en cuenta que algunos programas antivirus también hacen lo mismo). Puede reconocer este tipo mirando los certificados del servidor; Todos los certificados generados por proxy tienen el mismo aspecto y, a menudo, no pasan la validación, mientras que los certificados reales son emitidos por varias CA diferentes.
fuente