Iptables:过滤通过 ssl 加密的字符串

Iptables:过滤通过 ssl 加密的字符串

我需要使用特定字符串 (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,然后开发一种有效的整数分解算法;
  • 扔一个巨大的数据中心强制执行每个加密块(即使在最好的情况下,我也为用户的延迟感到遗憾);
  • 尝试分析流量的“形状”(流量形状分析——谷歌搜索)以确定是否是您可能想要阻止的东西;或者-- 我喜欢的解决方案:

相关内容