AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 27088
Accepted
Nathaniel Varona
Nathaniel Varona
Asked: 2009-06-18 00:12:47 +0800 CST2009-06-18 00:12:47 +0800 CST 2009-06-18 00:12:47 +0800 CST

使用 Linux IPTables,如何阻止种子或任何 P2P 协议?

  • 772

在我们的机构,我们已经通过 Internet 将 300 多台计算机连接到不同的 LAN。这里包括办公室局域网和学生互联网实验室。我们想要控制 Torrent 或任何 P2P 协议。之前我们的问题的解决方案是KerioWinRoute 6.5.x,最满意。

问题是,我们已经使用 Webmin 平台迁移到 Ubuntu 8.04 LTS。

linux iptables
  • 11 11 个回答
  • 77944 Views

11 个回答

  • Voted
  1. Best Answer
    Karolis T.
    2009-06-18T00:34:58+08:002009-06-18T00:34:58+08:00

    基于端口的 P2P 阻塞几乎不是 100% 的解决方案。您可能要考虑的称为 L7 过滤(第 7 层过滤)。基本上,linux 有一个实现,它对所有数据包进行基于正则表达式的匹配,以确定什么是好的和什么是坏的。

    http://l7-filter.sourceforge.net/

    这可以帮助您阻止各种东西,包括Skype。

    http://l7-filter.sourceforge.net/protocols

    请注意:检查和过滤数据包的正则表达式匹配是资源密集型的,这使得任何系统都更容易受到 DDOS 攻击,首选方法是针对 iptables 中的协议。

    • 14
  2. Aleksandar Ivanisevic
    2009-06-18T00:36:23+08:002009-06-18T00:36:23+08:00

    唯一合适的技术解决方案是让所有流量通过代理,该代理将动态解密 SSL 流量,然后对通过的流量应用第 7 层过滤。

    这样的产品非常昂贵,因为他们背后通常有一个庞大的工程师团队来更新对数据包进行分类所需的规则。

    iptables您可以使用前面提到的模块 sushipp2p或来帮助自己l7-filter,但它们不会捕获加密流量。

    无论如何,技术很少能解决社会问题,滥用公司/公共/任何网络来进行 p2p 是一个社会问题。尝试与您的用户交谈,让您的组织制定适当的政策并实施制裁。根据我的经验,这比与用户进行持续的技术军备竞赛要好得多。

    • 11
  3. radius
    2009-06-18T00:21:29+08:002009-06-18T00:21:29+08:00

    有一个名为 IPP2P 的模块可以检测和阻止 P2P 协议:http ://www.ipp2p.org/

    • 1
  4. David Pashley
    2009-06-18T00:22:53+08:002009-06-18T00:22:53+08:00

    简单的解决方案是阻止所有传出端口,除了您要允许的端口。

    或者,您可以找到可能用于常见 P2P 应用程序的端口列表并阻止这些端口。如果您不上传,Bittorrent 往往只允许非常有限的下载量,因此您还应该确保您不接受任何传入连接。

    您可能会发现根据所使用的 TCP 端口在路由器上设置某种 IP 记帐很有用,然后找出使用最多的端口。IPTraf 是检查这一点的有用工具。

    我应该警告你,你永远不会停止一切;人们很聪明,会想办法绕过你设置的任何限制。大多数防火墙会阻止临时用户,这可能就足够了。

    • 1
  5. user1686
    2009-06-18T00:24:35+08:002009-06-18T00:24:35+08:00

    你不能完全阻止 P2P——除非你只允许“好”的 TCP 端口 80、443、22……即使这样对于拥有 VPN 和类似东西的计算机类型的人来说通常也足够了。

    • 1
  6. The Unix Janitor
    2012-03-17T13:49:19+08:002012-03-17T13:49:19+08:00

    bittorrent 和现在大多数 p2p 都是相当回避的。不是阻塞流量,而是使用 QOS 规则来让使用大量带宽的客户端饿死,或者随着时间的推移慢慢地将 p2p 流量限制为零。它不会阻止协议,但会阻止 p2p'ers,因为它太慢了,不值得做。

    请记住,并非所有的洪流流量都是坏的,其中一些是好的!:-)

    • 1
  7. Giancarlo D
    2019-06-13T17:04:18+08:002019-06-13T17:04:18+08:00

    使用这些 iptables 转发规则来丢弃比特种子种子和对等点发现。他们为我工作。

    #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
    
    • 1
  8. Taras Chuhay
    2009-06-18T04:39:20+08:002009-06-18T04:39:20+08:00

    Ultrasurf 等流行的 SSL 隧道程序可以让用户轻松绕过您的防火墙。要阻止加密的 bittornet 流量,您需要一个专门的 UTM 设备,该设备可以检查和阻止通过 http(s) 的加密隧道。我只知道一个能够做到这一点的——Astaro,但应该还有更多。

    • 0
  9. Cian
    2009-06-21T19:17:55+08:002009-06-21T19:17:55+08:00

    如前所述,您可以使用 ip2p。但是,它不会完全阻止事情。理想情况下,您应该为您不专门使用的每个端口设置防火墙,并使用 ip2p。不是一个完美的解决方案,但您可能会得到最好的解决方案。

    • 0
  10. Tom Newton
    2012-06-10T07:55:21+08:002012-06-10T07:55:21+08:00

    您不能使用直接端口阻塞。有几种选择。Layer7 过滤器速度慢、不可靠,据我所知不再维护。

    IPP2P 没问题,但被 OpenDPI 取代,现在已经被赞助商 ipoque(出售 PACE,商业等价物)停产 nDPI 似乎是这条小路的合乎逻辑的结论:http: //www.ntop.org/products/ ndpi/

    最简单且相当有效的是 David Pashley 的建议的延伸。阻止所有端口并只允许您需要的端口 - 并通过代理您需要的那些服务来扩展它 - 例如使用 Web 代理,也许还有一个内部邮件服务器,允许端口 25,但客户端只与内部服务器通信。通过这种方式,您可以拥有根本不需要防火墙上开放端口的客户端。这应该可以工作,但如果您需要使用任何需要直接访问的复杂和/或编写不当的应用程序,则可能会开始失败。

    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve