piero66
V2EX  ›  问与答

centos iptable

  •  
  •   piero66 · Sep 17, 2015 · 2509 views
    This topic created in 3899 days ago, the information mentioned may be changed or developed.

    centos iptable 有没有办法限制一个端口最多只能有 10 个 ip 访问,第 11 个 ip 会被直接 drop 。

    看到 iptable 有 connlimit 模块,但这个是限制连接数的,好像实现不了我上面的功能。因为我对每个 ip 的连接数没有要求。

    5 replies    2015-09-20 02:42:31 +08:00
    ShadowStar
        1
    ShadowStar  
       Sep 18, 2015 via iPad
    好像没有现成的模块,你可以自己写一个,很简单的。
    adrianzhang
        2
    adrianzhang  
       Sep 18, 2015
    必须自己写。很久以前曾经写过一个小脚本,谁扫描我的 vps 的 ssh 端口就把谁的 ip 用 iptables 干掉。实现起来比较简单的。你这个需求,思路可以是:把前 10 个加入到允许,然后 deny all 就好了。
    piero66
        3
    piero66  
    OP
       Sep 19, 2015
    @ShadowStar 望提供思路。。。
    ShadowStar
        4
    ShadowStar  
       Sep 20, 2015
    @piero66 基本结构可以参照 recent 的模式,输入几个参数: src/dst , ttl , num 。
    然后对于进入此条规则的报文取 dst/src ,查找 IP 表,如果找到刷新 TTL ,否则添加并刷新 TTL ,返回 true ;如果添加失败(超过限定 num 值),返回 false 。
    TTL 到期删除对应表项。
    IP 表可以采用链表、 hash 表,甚至数组,取决于限定的 IP 数量大小。
    ShadowStar
        5
    ShadowStar  
       Sep 20, 2015
    @piero66 如果需要支持多 IP 的限定(例如在转发的时候),只需要把 IP 表改为二维的即可。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4134 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 05:29 · PVG 13:29 · LAX 22:29 · JFK 01:29
    ♥ Do have faith in what you're doing.