爱意满满的作品展示区。
SilentBlade

写了个小工具,看家里反代的访问日志,顺手一键把扫描 IP 封到 RouterOS 上

  •  
  •   SilentBlade · 1h 39m ago · 101 views

    家里 NAS 上跑了不少服务,开了公网之后反代日志每天刷得飞快,大部分是各种扫描器在探 /.env、wp-login 之类的路径。之前用 CrowdSec 加 RouterOS 的 bouncer 做封禁,效果是有的,但日常用起来挺别扭:想看看最近谁在访问得去翻日志,看到可疑 IP 想封一下还得 ssh 上去敲 cscli。

    后来干脆自己写了个面板,叫 ipguard ,现在开源了:

    https://github.com/duskedge/ipguard

    其实就是把看日志和封 IP 放到了一个页面里。

    日志能按 IP 、域名、状态码、路径筛,图片请求点一下就能预览。每个 IP 后面会显示城市,国内的还带运营商,刚开始只用 dbip ,好多国内 IP 城市都是错的,后来加了 ip2region 才算准了。扫描的、可疑的 IP 会单独标颜色,一眼就能看出来。

    看到不对劲的 IP 直接点封禁,过几秒路由器地址表里就有了,在 WAN 口就被丢掉。懒得一个个点的话可以开自动封禁,反复扫的自己就进黑名单了,自己的 IP 、公司出口加个白名单就不会误伤。

    另外顺手做了个按域名限制访问,比如有些服务只想让国内 IP 打开,或者干脆只给自己几个 IP 用。

    截图(界面是中文的):

    总览

    访问日志

    封禁管理

    归属地

    域名访问控制

    部署方面,需要的就两样:一台 RouterOS 路由器,一台能跑 Docker 的机器。仓库里有个一键脚本,CrowdSec 、bouncer 、Nginx Proxy Manager 会一起装好,路由器那边的 API 账号和端口转发也会自动配,有 Cloudflare 的话证书也能顺手申请了。已经有 CrowdSec 和反代的,单独起个 ipguard 容器接进去也行。

    没有 RouterOS 的话,看日志和统计还是能用的,只是封禁不会真正生效。

    可能有人会问和雷池这类 WAF 有什么区别。其实不是一类东西:雷池要挡在服务前面,每个请求都过一遍,拦 SQL 注入、XSS 这些,功能很强,但部署起来也重一些。ipguard 不碰请求本身,只是读反代已经写好的日志,按 IP 判断谁在扫,然后让路由器在 WAN 口直接把它丢掉,连服务器都到不了。它不在请求链路上,就算挂了也不影响正常访问,整个就一个容器,很轻。家里 NAS 、小主机这种资源不多的场景用着刚好。两个也不冲突,想要更严的话可以一起用。

    自己家里用了一阵子,挺省心的。有 RouterOS 的朋友感兴趣可以试试,有问题直接回帖或者去 GitHub 提 issue 都行。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2444 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:01 · PVG 13:01 · LAX 21:01 · JFK 00:01
    ♥ Do have faith in what you're doing.