是否可以创建仅允许端口443上的合法Web服务器流量通过而不允许任何其他服务的防火墙?


19

我一直使用简单的技巧绕过大多数防火墙,这使我无法使用任何端口。我只是在端口443上的一台服务器上打开了ssh,并通过该通道传送了所有流量。

但是,我现在所在的网络上有我从未见过的防火墙,我什至不知道它是可能的。

在此网络上,您只能将443端口用于合法的Web服务器流量。如果我打开ssh或端口443上的其他任何端口,然后尝试从此网络连接到那里,它将立即被杀死。如果我在该服务器上启动apache,它将起作用。

这怎么可能?是否存在一些甚至可以分析加密流量以确认其为合法https流量的超高级防火墙?怎么样?


4
高端设备称为SPI,可以进行更高级的检查并终止不需要的连接。
Linef4ult

您可以创建一个白名单,仅允许该流量,问题在于合法Web服务器流量可能会发生变化,因为IP地址可以重新分配,所以今天的Microsoft或明天的Google。最好使用安全隧道与服务器通信,并创建允许的客户端白名单,然后确定在以后添加其他客户端的过程(因为该列表将更改)。
Ramhound

您可以使用例如Obfsproxy将SSH流量混淆为无害的HTTP(S)流量。
迈克尔

Answers:


26

是的,这里不需要任何魔术,只需对TCP数据包内容进行简单匹配即可。即使SSH和TLS(SSL)加密了它们的有效负载,协议标头本身仍然是可区分的并且彼此之间非常不同。例如,SSHv2连接始终从客户端发送开始SSH-2.0-(client name and version)。同样,即使您的防火墙无法真正知道TLS连接内部是否带有HTTP,它也可以识别TLS本身

TCP之上的此类层检查通常属于“深度数据包检查”,这是一个相对常见的功能。

一种明显的绕​​过此方法的方法是 TLS 内建立SSH隧道-例如,使用tunnel,haproxy或sniproxy。(除了普通隧道(端口443专用于SSH-over-TLS)之外,它们还可以基于SNI和ALPN在同一端口上复用SSH / HTTP /其他协议。)

尽管这并不总是会打败真正复杂的流量分析,但它仍会绕过大多数过滤器,这些过滤器仅检查“看起来像TLS标头”。


然后是恼人的防火墙- 拦截TLS来解密和重新加密所有流量的防火墙。这些实际上可以在TLS内部看到,并且可以在阻止其他所有内容的同时传递HTTP请求。(请注意,某些防病毒程序也具有相同的作用。)您可以通过查看服务器证书来识别这种情况。所有代理生成的证书看起来都是相同的,并且通常不会通过验证,而真实证书是由各种不同的CA颁发的。


1
那么SSH是否具有自己的应用程序级别的安全性,而不仅仅是基于TLS的另一种协议(默认情况下,它不使用)?
Medinoc

2
@Medinoc:是的,它实现了类似的功能(在SSHv2的“传输”和“身份验证” 层中),不需要TLS。
grawity

有没有可靠的方法来识别这些嗅探防火墙?我不喜欢有人在使用https时拦截我的密码的想法。直到现在我什至不知道有可能。
彼得

2
POST / HTTP / 1.0 base64garbage HTTP / 200 200 OK base64garbage制定了传输协议
Joshua

3
@Petr扩展了grawity的言论,如果它是雇主拥有的计算机,则可能在证书颁发给您之前已经安装了证书;并且将配置MITM防火墙,以便如果您不使用其证书,则不会允许https流量,因此您的选择符合政策或没有https。在这种情况下,OTOH检查证书可能会说“通过雇主名称验证”之类的字眼,而如果您进行更深入的研究,则在CA名称中也有类似的字眼。例如,在我的工作计算机上,它是bluecoat.companyname.com(其中bluecoat是所使用的防火墙的品牌)。
丹·尼利
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.