V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
LeeReamond
V2EX  ›  NGINX

nginx 有主动屏蔽 ip 的插件吗?

  •  
  •   LeeReamond · 2021-04-20 01:58:38 +08:00 via Android · 2960 次点击
    这是一个创建于 1344 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如由 lua 插件,或者后端节点调用一个接口,让 nginx 拒绝来自某 ip 的服务员,有现成插件吗?应用场景比如人工认定受到来自某 ip 的攻击。

    原生支持屏蔽,但没有取出功能,不太合适,一旦加入除非手动取消否则就永远屏蔽了,不符合需求
    9 条回复    2021-07-29 10:45:46 +08:00
    ZeroClover
        1
    ZeroClover  
       2021-04-20 03:03:16 +08:00
    ipset
    learningman
        2
    learningman  
       2021-04-20 03:15:13 +08:00 via Android
    ipset 可以设置 timeout
    然后 fail2ban
    Livid
        3
    Livid  
    MOD
       2021-04-20 04:36:05 +08:00
    https://github.com/openresty/lua-resty-memcached

    把要屏蔽的 IP 写进 memcached,用 Lua 判断当前访问的 IP 有没有对应的 memcached key 。

    需要注意的一个坑是,如果是 IPv6 地址的话,因为 Lua Resty 的某个转义机制,IPv6 地址里的 : 会被转义,这里需要注意一下。
    ryd994
        4
    ryd994  
       2021-04-20 05:00:00 +08:00 via Android
    如果是不特定来源而且不需要特别复杂的逻辑的话,limit_req 可以提供基于 token bucket 的限制频率。可以设置 burst 。
    token buket 空了自然就释放了
    http://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req
    zzzmh
        5
    zzzmh  
       2021-04-20 13:49:57 +08:00
    同有这个需求,目前在研究 openresty
    mentalidade
        6
    mentalidade  
       2021-04-20 13:51:04 +08:00
    kong 有那个插件,不过是存到 redis 里面的。简单的话,就 openresty 把写一个简单的
    keelele
        7
    keelele  
       2021-04-21 09:40:07 +08:00
    可以自己添加
    Alliot
        8
    Alliot  
       2021-07-29 09:33:36 +08:00 via Android
    fail2ban 也可以满足你这个需求吧
    LeeReamond
        9
    LeeReamond  
    OP
       2021-07-29 10:45:46 +08:00
    @Alliot f2b 一直没用明白,不知道怎么接入除了系统登录外其他的东西
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5192 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 01:17 · PVG 09:17 · LAX 17:17 · JFK 20:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.