我需要使用特定字符串 (matchword) 过滤 (发送到 BANRULES 集) 传入的 http/https 数据包。当未使用 SSL (端口 80) 时,我可以轻松完成此操作:
iptables -A INPUT -p tcp -m tcp --dport 80 -m string --string "matchword" --algo bm --to 65535 -j BANRULES
但是当使用 ssl (端口 443) 时,它不起作用(因为数据包加密):
iptables -A INPUT -p tcp -m tcp --dport 443 -m string --string "matchword" --algo bm --to 65535 -j BANRULES
我该怎么做?谢谢。
答案1
@DanFarrell 部分正确,因为您需要密钥来解密它 - 但是如果您有密钥(即您拥有被禁止的网络服务器 - 这暗示着您说数据包正在传入)它可以被解密 - 但可能不是通过 iptables。
您可能能够设置反向代理(或者取决于您的网络,甚至将 SSL 处理卸载到基于 iptables 的防火墙) - 它可能需要运行 Squid 之类的程序(或带有 mod_proxy 或同等功能的 Web 服务器)。 这里是一个使用 squid 执行此操作的示例。
答案2
做不到。您无法解密 HTTPS 流量;您需要密钥才能解密。这就是 HTTPS 的全部意义所在 - TLS 层可防止在服务器和客户端之间的路径点进行监听。