Websocket 对防火墙的影响

信息安全 Web应用程序 网页浏览器 防火墙 html-5 网络套接字
2021-09-01 03:59:35

(我在这里阅读了几个关于 websocket 的问题,但显然没有 websocket 标签)

如果我理解正确,websockets 正在使用端口 80 上的 TCP 流量。

严格的防火墙规则意味着什么(如果有的话)?例如,如果我的防火墙只接受相关和已建立的流量和传入的“状态为 NEW 的 TCP 数据包”(其他由相关和已建立的数据包处理),那仍然允许 websocket 流量通过吗?

另外,当用户连接到网站时,websocket 流量是已经建立的流量的一部分吗?

请注意,这不是关于 iptables 的问题,以下示例应仅用于说明我的上述目的。说我有这样的事情:

a) iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
b) iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
c) iptables -I OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

websocket 将根据哪些规则进行匹配?只有 b) 和 c) 还是 websocket 创建启动它自己的 TCP 连接?(来自客户?)

基本上我认为我的问题归结为:是否需要进行任何特定的防火墙设置才能允许 websockets?

此外,如果发现一个主要的 websocket 安全问题,或者网站是否决定不使用 websocket,是否可以在防火墙级别阻止?

1个回答

根据我对 WebSockets 协议的了解,虽然它允许双向消息传递,但在 TCP 级别,连接由客户端发起,因此大多数防火墙配置(例如允许标准 Web 浏览的那些)将允许 WebSockets 通信而无需进一步配置. 事实上,查看Wikipedia 文章,这被吹捧为该协议的好处之一。

不利的一面是,如果防火墙仅在 IP 地址/ TCP 端口级别工作,则无法阻止它,它需要了解协议的更多语义才能了解它何时被使用。此外,如果需要通过 SSL 阻止 Websockets 连接,则代理设备将需要能够拦截和解密 SSL 连接。