IPTABLE 阻止通过 HTTPS 访问 URI?

IPTABLE 阻止通过 HTTPS 访问 URI?

我正在做一个项目,其中一项测试需要网站的某些部分无法访问,以查看网站如何反应以及出现错误时提供哪些消息描述。

我的网站在端口 7002 上使用 HTTPS。无法访问的部分将定义为测试

iptables -A OUTPUT -p tcp -m string --string "test" --destination-port 7002 --algo kmp -j REJECT --reject-with tcp-reset

这应该可以。我的问题是 HTTPS 会加密所有内容,使服务器无法看到网络设备何时请求测试 URI,因此它永远不会被激活

下面这行代码有效,但是会导致整个网站瘫痪,也就是说错误消息表明整个网站瘫痪:

iptables -D INPUT -p tcp --destination-port 7002 -j DROP

有没有什么办法可以-m string --string "test"通过 HTTPS 来实现?

答案1

有什么方法可以让 -m string --string "test" 通过 HTTPS 工作吗?

不,这有点重点HTTPS。防火墙可能能够匹配域名(由于 SNI),但它永远不会看到路径。

然而,同一域内的不同路径有不同的可达性其实没什么意义,因为路径只是传输已成功到达服务器(TCP 和 TLS 握手成功完成)。

我认为,如果网站被阻止的部分确实位于不同的域(或端口)上,或者如果您让它返回 HTTP 级别的失败代码(例如 50x)而不是悄悄地丢弃请求,那么您的测试会更加现实。

例如,您可以设置 Apache 或 Nginx 来假装它是 API 服务器,然后您可以将其配置为对某些 URL 返回错误 503,但将其他所有内容反向代理到真实服务器。

相关内容