V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tool2d
V2EX  ›  程序员

为了对抗互联网背景噪音,写了一个 fail2ban。

  •  
  •   tool2d · 292 天前 · 4051 次点击
    这是一个创建于 292 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本来想用现成的 py 工具,结果服务器弄了半天配置没生效,想一想原理也不复杂,还是自己手动写一个吧。

    就两步,第一步收集/var/log/auth.log 失败的 sshd 日志。第二步根据登录失败次数排序,用程序自动化添加 ip 到 iptables drop 黑名单里。

    本来以为把 ssh 的 22 端口,换到别的端口能解决问题,结果并不是。以前也不关心这些,心想 opensshd 密码那么强,完全不可能攻破。但是我发现有些 ip 不讲武德,短时间内连续暴力 sshd 密码破解上千次,这种情况还不少,白白为这些互联网噪音,浪费流量,浪费 CPU 资源,不值得。
    23 条回复    2023-07-12 12:52:48 +08:00
    RoccoShi
        1
    RoccoShi  
       292 天前
    现成的 fail2ban 有什么问题?
    tool2d
        2
    tool2d  
    OP
       292 天前
    @RoccoShi banaction 没生效,我也不知道为啥。

    自己写 fail2ban ,以后还有别的用途。www 这种服务也需要一大堆 IP 黑名单。
    ysicing
        3
    ysicing  
       292 天前
    我自己写了一个程序,收集所有我认为的黑 ip ,然后所有服务器共享
    u20237
        4
    u20237  
       292 天前
    没人访问我的网站怎么办?我只适合使用 ipv6 80 做 HTTP 服务(我不开防火墙,但一些人访问不到,也有一些人能访问的到)
    hxy100
        5
    hxy100  
       292 天前
    现成的 fail2ban 也支持 www 等各种服务啊,估计是你自己暂时没玩明白。
    u20237
        6
    u20237  
       292 天前
    既然是 Linux ,难道还有解决不了的网络配置问题?
    deplivesb
        7
    deplivesb  
       292 天前
    现有的 fail2ban 不都可以么?
    tool2d
        8
    tool2d  
    OP
       292 天前
    @deplivesb 是可以,不过在 chatgpt 的帮助下,相关代码很简单,一个晚上就搞定了,就当成是一个练手项目了。
    tool2d
        9
    tool2d  
    OP
       292 天前
    @hxy100 "现成的 fail2ban 也支持 www 等各种服务啊"

    我的意思是用接口的形式,去对接 www 服务。不仅仅是分析日志。

    有些 www 内部错误全部输出到日志没太大必要。
    linuxgo
        10
    linuxgo  
       292 天前
    我的 fail2ban 连续 5 次 ssh 错误就永久 ban 掉,很好用啊,还用自己重写
    kkocdko
        11
    kkocdko  
       291 天前   ❤️ 1
    SSH 密码被暴力破解其实占用不了多少系统资源,可以自行分析一下,自己暴破一下然后看看系统负载。无论你用的是 OpenSSH 还是什么别的服务端,“上千次”这个量级都不会有任何问题。

    fail2ban 这种依赖于日志分析的实现本质上是很不可靠的,而且 IP 换来换去,黑名单列表会越来越大,我曾经见过有个人的 ip 很有规律,结果没有开 fail2ban 之前还好,开了之后内存占用几天后涨到数十兆的情况。

    如果你依然觉得被不断尝试很不爽,很无聊,那么目前流行的方法是使用 knockd 。
    systemcall
        12
    systemcall  
       291 天前 via Android
    常用的加密算法,一秒钟几千次,每次就不到 1k ,真的算不上什么
    你可以自己跑一下 crypto 的一些 benchmark ,一般来说,sha1 和 sha256 ,正经一点的路由器都能跑到几 Mbps ,更不用说电脑
    tool2d
        13
    tool2d  
    OP
       291 天前
    @systemcall sshd 还算相对好,很多网页爬虫真的是无下限。

    我也不太想封 IP ,只是互联网什么破事都会被无限放大。所谓人善被人欺,太友善的结果,就是别人来搞你。
    dnsaq
        14
    dnsaq  
       291 天前 via iPhone
    所以为什么要开放 sshd 服务,白名单不行?
    ysw
        15
    ysw  
       291 天前
    不开 ssh 端口,用 cloudflared 映射出来
    documentzhangx66
        16
    documentzhangx66  
       291 天前
    @tool2d

    开源软件日常了。

    各种开源软件,其配置功能,总会有几个没有作用,或者逻辑奇奇怪怪。

    比如 fping ,那个 timeout 参数的逻辑,感觉是程序员喝多了设计出来的。
    pppan
        17
    pppan  
       291 天前
    推荐端口敲门的方案: https://github.com/EtherDream/js-port-knocking
    使用白名单,而不是像 fail2ban 这种黑名单
    vibbow
        18
    vibbow  
       291 天前
    sshguard 了解一下
    docx
        19
    docx  
       291 天前 via Android
    我就是 sshd 白名单,常用 ip 段丢进去很省事
    laydown
        20
    laydown  
       291 天前 via iPhone
    改端口,上两步。破了的话我认栽。
    Love4Taylor
        21
    Love4Taylor  
       291 天前 via iPhone
    改端口+关密码强制密钥,完事
    realpg
        22
    realpg  
       291 天前
    @linuxgo #10
    首先把非东亚的 IP 按/8 整体 ban 掉就可以解决 90%的扫描口令
    yagamil
        23
    yagamil  
       290 天前
    www 的爬虫,先把访问日志读一些,统计 ua 头, 去除几个常见的搜索引擎的 spider 外,把莫名奇妙的 ban 就也不多了。
    不要写代码,在云服务商的 cdn 页面加下就好了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2972 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:07 · PVG 16:07 · LAX 01:07 · JFK 04:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.