我需要使用特定字符串 (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
如果 SSL 是使用您无权访问的密钥进行端到端加密的,并且其中一端不是您要从中过滤的框,则没有(有效的)方法使用 SSL 执行此操作。这就是加密的意义。
你可以尝试对连接的一端发起中间人攻击,但:
- 这可能是或可能不是违法的,取决于具体情况;
- 如果 HTTPS 会话使用 HSTS 和 OCSP 装订,客户端可能会意识到 MITM;
- 如果无法直接控制客户端或服务器(管理/根访问权限),那么成功实施中间人攻击将非常困难。
如何过滤 SSL? 嗯,您有几种选择:
- 获取对客户端、服务器或两者的合法管理/根访问权限,并将其配置为接受您在路由器盒上拥有私钥的证书;
- 做一些非法和/或道德上应受谴责的事情,例如对毫无戒心的用户进行 MITM 攻击;
- 证明P = NP,然后开发一种有效的整数分解算法;
- 扔一个巨大的数据中心强制执行每个加密块(即使在最好的情况下,我也为用户的延迟感到遗憾);
- 尝试分析流量的“形状”(流量形状分析——谷歌搜索)以确定是否是您可能想要阻止的东西;或者-- 我喜欢的解决方案:
- 不。