Iptables 规则用于阻止特定字符串的 IP 范围(有时有效)

Iptables 规则用于阻止特定字符串的 IP 范围(有时有效)

经过两周的搜索和阅读,我最终得到了这个 iptable 规则,它可以阻止 youtube(作为字符串)进入我办公室网络中的 IP 范围。

iptables -A FORWARD -t filter -m iprange --src-range 10.217.76.60-10.217.76.70 -m string --algo bm --string "youtube.com" -j DROP #block

如您所见,介于 .60 和 .70 之间的计算机(10 台计算机)无法浏览 YouTube,而例如 .75 可以。该规则只对某些客户端有效几分钟。2 或 3 分钟后,某些客户端可以正常浏览 YouTube。如果我关闭这些客户端的浏览器,刷新 iptables 规则并再次运行它们,所有客户端都无法连接到 YouTube,但这又会持续 2-3 分钟,并且对某些客户端(我说的是 ip 范围客户端)有效。

有谁又遇到过这种情况吗?!这与我使用的服务器(ubuntu 11.04)、缓存或其他东西有关吗?

我还安装了 squid3,在那里我阻止了 youtube 和 facebook 的 http,所以我认为设置 iptables 我可以将 youtube 切断为 https。(但有些客户端确实需要 youtube 才能工作,所以我想切断歌曲收听和无用的网络流量)。

编辑: 经过长时间的尝试: iptables -I FORWARD -t filter -s 10.217.76.80/28 -m string --algo bm --string "youtube.com" -j DROP #from .80 to .95 (15 ip) 我得到了一个更好的解决方案......只是一段时间。一段时间后,一些客户端开始再次浏览(规则不起作用),而其他客户端仍然没有(规则起作用)。我理解(正如 MADHatter 所说)这是 Youtube 的事情,有很多服务器,但我不明白的是,当使用这样的规则时, iptables -I FORWARD -m string --algo bm --string "youtube.com" -j REJECT 所有客户端的所有流量都会被永久拒绝,而不仅仅是一段时间,我唯一想要的是对某个 IP 范围的用户(例如从 .10 到 .240)使用上述规则,并让所有其他人自由浏览 Youtube。你认为有规则吗?我尝试过的其他所有类似方法都只在随机时间段内有效。

答案1

你说 ”我可以把 youtube 剪成 https“。这行不通;HTTPS 连接上的 URL 是在加密的掩护下交换的。防火墙可能在数据流中,但它看不到此对话,因为到那时,它的工作就简化为将加密数据包从一个接口传送到另一个接口。

是的,客户可以尝试去http://youtube.com,您可以取消同步该特定http连接。但是该 URL 现在会直接将他们重定向到网站https://;您的客户迟早会意识到他们可以通过 SSL 访问 youtube,而您无法看到他们在做什么。

传统的正确方法是强制使用网络代理来控制可以访问的 URL,但对于 HTTPS 内容,你仍然有问题。你可以使用中间人,但除非你有一个代理可以重新加密和重新签名每个 HTTPS 请求(并且你的每个客户端都安装并信任你的代理的 CA 证书),否则这将导致你的用户浏览体验非常不满意任何HTTPS 内容。

总结:youtube 已决定强制要求其网站使用 HTTPS 连接,因此无需一些高度复杂的代理(noddyiptables规则就是不是)你无法阻止你的用户去那里。

相关内容