¿Es posible crear un firewall que solo permita el tráfico legítimo del servidor web en el puerto 443 y no en ningún otro servicio?

19

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?

Petr
fuente
44
Se llama SPI, el equipo de gama alta puede hacer una inspección más avanzada y terminar las conexiones no deseadas.
Linef4ult
Puede crear una lista blanca y solo permitir ese tráfico, el problema es que el tráfico legítimo del servidor web está sujeto a cambios, las direcciones IP pueden reasignarse, por lo que lo que podría ser Microsoft hoy podría ser Google mañana. Es mejor usar un túnel seguro para comunicarse con sus servidores y crear una lista blanca de clientes que están permitidos, luego determinar el procedimiento para agregar clientes adicionales en el futuro (porque esa lista cambiará).
Ramhound
Puede utilizar, por ejemplo, Obfsproxy para ofuscar el tráfico SSH como tráfico HTTP (S) inofensivo.
Michael

Respuestas:

26

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.

Gravedad
fuente
1
Entonces, ¿SSH tiene su propia seguridad de nivel de aplicación, en lugar de ser solo otro protocolo sobre TLS (que por defecto no usa)?
Medinoc
2
@Medinoc: Sí, implementa características similares (en las capas de "transporte" y "autenticación" SSHv2 ) y no necesita TLS para nada.
Grawity
¿Hay alguna forma confiable de reconocer estos firewalls de rastreo? No me gusta la idea de que alguien intercepte mis contraseñas mientras uso https. Ni siquiera sabía que era posible hasta ahora.
Petr
2
POST / HTTP / 1.0 base64garbage HTTP / 200200 OK base64garbage crea un protocolo de transporte
Joshua
3
@Petr Extendiendo los comentarios de Grawity, si se trata de una computadora propiedad de un empleador, los certificados probablemente se instalaron antes de dárselo; y el cortafuegos MITM se configurará de modo que si no está utilizando su certificado, no se permitirá el tráfico https, de modo que sus opciones cumplan con la política o no tengan https. OTOH en ese caso, verificar el certificado probablemente dirá algo como "verificado por el nombre del empleador" y algo similar en el nombre de CA si profundiza. por ejemplo, en mi computadora de trabajo es bluecoat.companyname.com (donde bluecoat es la marca del firewall que se está usando).
Dan Neely