#Block Torrent
iptables -A FORWARD -m string --algo bm --string "BitTorrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "BitTorrent protocol" -j DROP
iptables -A FORWARD -m string --algo bm --string "peer_id=" -j DROP
iptables -A FORWARD -m string --algo bm --string ".torrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "announce.php?passkey=" -j DROP
iptables -A FORWARD -m string --algo bm --string "torrent" -j DROP
iptables -A FORWARD -m string --algo bm --string "announce" -j DROP
iptables -A FORWARD -m string --algo bm --string "info_hash" -j DROP
行动规则,击中计数器增加得很好。
# iptables -vL -n
Chain FORWARD (policy ACCEPT 16403 packets, 6709K bytes)
pkts bytes target prot opt in out source destination
8 928 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 STRING match "BitTorrent" ALGO name bm TO 65535
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 STRING match "BitTorrent protocol" ALGO name bm TO 65535
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 STRING match "peer_id=" ALGO name bm TO 65535
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 STRING match ".torrent" ALGO name bm TO 65535
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 STRING match "announce.php?passkey=" ALGO name bm TO 65535
582 52262 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 STRING match "torrent" ALGO name bm TO 65535
10 1370 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 STRING match "announce" ALGO name bm TO 65535
31 4150 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 STRING match "info_hash" ALGO name bm TO 65535
基于端口的 P2P 阻塞几乎不是 100% 的解决方案。您可能要考虑的称为 L7 过滤(第 7 层过滤)。基本上,linux 有一个实现,它对所有数据包进行基于正则表达式的匹配,以确定什么是好的和什么是坏的。
http://l7-filter.sourceforge.net/
这可以帮助您阻止各种东西,包括Skype。
http://l7-filter.sourceforge.net/protocols
请注意:检查和过滤数据包的正则表达式匹配是资源密集型的,这使得任何系统都更容易受到 DDOS 攻击,首选方法是针对 iptables 中的协议。
唯一合适的技术解决方案是让所有流量通过代理,该代理将动态解密 SSL 流量,然后对通过的流量应用第 7 层过滤。
这样的产品非常昂贵,因为他们背后通常有一个庞大的工程师团队来更新对数据包进行分类所需的规则。
iptables
您可以使用前面提到的模块 sushipp2p
或来帮助自己l7-filter
,但它们不会捕获加密流量。无论如何,技术很少能解决社会问题,滥用公司/公共/任何网络来进行 p2p 是一个社会问题。尝试与您的用户交谈,让您的组织制定适当的政策并实施制裁。根据我的经验,这比与用户进行持续的技术军备竞赛要好得多。
有一个名为 IPP2P 的模块可以检测和阻止 P2P 协议:http ://www.ipp2p.org/
简单的解决方案是阻止所有传出端口,除了您要允许的端口。
或者,您可以找到可能用于常见 P2P 应用程序的端口列表并阻止这些端口。如果您不上传,Bittorrent 往往只允许非常有限的下载量,因此您还应该确保您不接受任何传入连接。
您可能会发现根据所使用的 TCP 端口在路由器上设置某种 IP 记帐很有用,然后找出使用最多的端口。IPTraf 是检查这一点的有用工具。
我应该警告你,你永远不会停止一切;人们很聪明,会想办法绕过你设置的任何限制。大多数防火墙会阻止临时用户,这可能就足够了。
你不能完全阻止 P2P——除非你只允许“好”的 TCP 端口 80、443、22……即使这样对于拥有 VPN 和类似东西的计算机类型的人来说通常也足够了。
bittorrent 和现在大多数 p2p 都是相当回避的。不是阻塞流量,而是使用 QOS 规则来让使用大量带宽的客户端饿死,或者随着时间的推移慢慢地将 p2p 流量限制为零。它不会阻止协议,但会阻止 p2p'ers,因为它太慢了,不值得做。
请记住,并非所有的洪流流量都是坏的,其中一些是好的!:-)
使用这些 iptables 转发规则来丢弃比特种子种子和对等点发现。他们为我工作。
行动规则,击中计数器增加得很好。
Ultrasurf 等流行的 SSL 隧道程序可以让用户轻松绕过您的防火墙。要阻止加密的 bittornet 流量,您需要一个专门的 UTM 设备,该设备可以检查和阻止通过 http(s) 的加密隧道。我只知道一个能够做到这一点的——Astaro,但应该还有更多。
如前所述,您可以使用 ip2p。但是,它不会完全阻止事情。理想情况下,您应该为您不专门使用的每个端口设置防火墙,并使用 ip2p。不是一个完美的解决方案,但您可能会得到最好的解决方案。
您不能使用直接端口阻塞。有几种选择。Layer7 过滤器速度慢、不可靠,据我所知不再维护。
IPP2P 没问题,但被 OpenDPI 取代,现在已经被赞助商 ipoque(出售 PACE,商业等价物)停产 nDPI 似乎是这条小路的合乎逻辑的结论:http: //www.ntop.org/products/ ndpi/
最简单且相当有效的是 David Pashley 的建议的延伸。阻止所有端口并只允许您需要的端口 - 并通过代理您需要的那些服务来扩展它 - 例如使用 Web 代理,也许还有一个内部邮件服务器,允许端口 25,但客户端只与内部服务器通信。通过这种方式,您可以拥有根本不需要防火墙上开放端口的客户端。这应该可以工作,但如果您需要使用任何需要直接访问的复杂和/或编写不当的应用程序,则可能会开始失败。