V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
unboy
V2EX  ›  Linux

iptables 最多能阻挡多少个 ip?

  •  
  •   unboy · May 16, 2017 · 6622 views
    This topic created in 3274 days ago, the information mentioned may be changed or developed.
    centos6.5 x64 系统
    近期服务器受到大量 ip 攻击,抓包筛选出大约 10 万个 ip,拟导入 iptables 拦截,请问 iptables 是否支持这么多的 ip,负载和性能上会有多大影响?此前有无相关数据测试?
    21 replies    2017-05-18 00:42:32 +08:00
    tony1016
        1
    tony1016  
       May 16, 2017   ❤️ 5
    科学上网经验告诉我们,这么大的列表还是配合 ipset 用最快
    aksoft
        2
    aksoft  
       May 16, 2017
    @tony1016 +1 学习了
    qianguozheng
        3
    qianguozheng  
       May 16, 2017   ❤️ 6
    ipset 正解,首先你要了解的 netfilter 的原理,说白了整体逻辑就是遍历每一个 HOOK 上注册的表,表上建立的链, 如果觉得复杂,就理解为链表,每一个都遍历,数量越多,一个数据包走过的路程就越多,相对来说就越慢。

    如果你的规则有共通性,当然可以通过 ipset 的 hash 方式来处理,哈希表查找起来肯定比链表快。
    unboy
        4
    unboy  
    OP
       May 16, 2017
    @tony1016
    @qianguozheng 原来如此,学习了。感谢。
    psfang
        5
    psfang  
       May 16, 2017
    之前遇到过,加的 IP 太多,性能消耗太大,跪了。。
    QQ2171775959
        6
    QQ2171775959  
       May 16, 2017   ❤️ 1
    这个只能做 IP 流量屏蔽了,不过这个只能简单的处理,如果别继续用新的 IP 来攻击,还是会有一样的问题出现,最好是做个 IP 防御策略,对不正当的流量进行 CDN 清洗。
    Jodal
        7
    Jodal  
       May 16, 2017   ❤️ 1
    ipset 加进 hash,iptables drop 掉,复杂度是 O(1)。
    Showfom
        8
    Showfom  
    PRO
       May 16, 2017 via iPhone
    这么多 ip 不适合在服务器端弄了 买硬件防火墙吧
    rrfeng
        9
    rrfeng  
       May 16, 2017
    只有我觉得 100000 IP 不太可能吗?这么大规模的攻击你确定有待遇享受?

    还是再分析一下来源好
    zhs227
        10
    zhs227  
       May 16, 2017
    用 ipset。但是 100,000 有点多了,感觉不是真实来源 IP。
    gdtv
        11
    gdtv  
       May 16, 2017 via Android
    楼上说 10 万 ip 不可能,我前不久就遇到了类似的情况,有几万个 ip,,后来用 ipset 阻挡了
    unboy
        12
    unboy  
    OP
       May 16, 2017
    @rrfeng
    @zhs227 差不多是这么多,这些 ip 都是慢速攻击,过好几秒才发送一次请求,每次请求的字节也很小,但是海量 ip 过来把带宽堵满了。
    rrfeng
        13
    rrfeng  
       May 16, 2017
    什么服务?请求是什么样的?反射攻击吗?还是网页挂马之类的?
    10 万即使封了,不会影响正常用户吗?
    0ZXYDDu796nVCFxq
        14
    0ZXYDDu796nVCFxq  
       May 16, 2017   ❤️ 1
    1. 抓包的不一定准确,因为数据包可能是伪造来源 IP。最好确定是否是真实 IP
    2. 10 万 IP 很正常,我的 IP 信誉库里有百万以上的黑名单。可以用工具将 IP 进行合并,很可能有些是整个 C 段都是攻击来源,合并后方便管理。
    unboy
        15
    unboy  
    OP
       May 16, 2017
    @rrfeng 还没封,这不才在探讨这个问题。

    @gstqc 请推荐个好用的 ip 自动合并工具。
    0ZXYDDu796nVCFxq
        16
    0ZXYDDu796nVCFxq  
       May 16, 2017
    @unboy 可以写程序来处理,没有现成的工具。
    我们一般是查 IP 来源,结合多个 IP 数据库来识别。
    Python 推荐 ipaddress 这个库,能想到的计算方式都支持。

    初期可以简单的用 IP 列表,数量不会影响到多少效率。
    合并只是方便后续维护和更新。
    Jodal
        17
    Jodal  
       May 16, 2017   ❤️ 1
    1. 抓包确实不太准确,数据包是可以伪造,也可能是肉鸡。如果大量 block 的话,会影响相应的服务,并且现在客户端都是 Nat,block 掉之后,有可能是一大批用户没法使用。PS: netstat 可以输出这些 IP

    2. 尽量要隐藏服务端的源 IP,比如 cloudflare 服务,但是国内好像做的都不是很好。
    3. 买 DDos 防火墙,但是源 IP 暴露的话,也很难办。
    4. ipset 性能其实很好,10w IP 的话,机器应该很容易扛过去。
    5. 需要查看 ipset 的话,直接 man ipset
    6. 以下是相关的测评

    https://workshop.netfilter.org/2013/wiki/images/a/ab/Jozsef_Kadlecsik_ipset-osd-public.pdf
    https://strongarm.io/blog/linux-firewall-performance-testing/
    ericFork
        18
    ericFork  
       May 16, 2017
    看到这里突发奇想,有人知道 Windows Server 高级防火墙的按 IP 阻挡的实现是链表还是哈希么?
    xierch
        19
    xierch  
       May 16, 2017
    顺带一提,除了用 iptables + ipset,还能用 nftables
    https://wiki.nftables.org/wiki-nftables/index.php/Sets
    kiss2013star
        20
    kiss2013star  
       May 17, 2017 via Android
    okudayukiko0
        21
    okudayukiko0  
       May 18, 2017 via iPhone
    硬件防火墙,其实对于某些大型 DDoS 就不是一个硬件防火墙能搞定的,IP 或可以伪造
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2451 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 07:37 · PVG 15:37 · LAX 00:37 · JFK 03:37
    ♥ Do have faith in what you're doing.