为了对抗互联网背景噪音,写了一个 fail2ban。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
tool2d
V2EX    程序员

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

  •  
  •   tool2d 2023-07-10 13:36:13 +08:00 4904 次点击
    这是一个创建于 824 天前的主题,其中的信息可能已经有所发展或是发生改变。
    本来想用现成的 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  
       2023-07-10 13:39:23 +08:00
    现成的 fail2ban 有什么问题?
    tool2d
        2
    tool2d  
    OP
       2023-07-10 13:41:44 +08:00
    @RoccoShi banaction 没生效,我也不知道为啥。

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

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

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

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

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

    我也不太想封 IP ,只是互联网什么破事都会被无限放大。所谓人善被人欺,太友善的结果,就是别人来搞你。
    dnsaq
        14
    dnsaq  
       2023-07-10 18:52:23 +08:00 via iPhone
    所以为什么要开放 sshd 服务,白名单不行?
    ysw
        15
    ysw  
       2023-07-10 19:16:17 +08:00
    不开 ssh 端口,用 cloudflared 映射出来
    documentzhangx66
        16
    documentzhangx66  
       2023-07-10 20:37:08 +08:00
    @tool2d

    开源软件日常了。

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

    比如 fping ,那个 timeout 参数的逻辑,感觉是程序员喝多了设计出来的。
    pppan
        17
    pppan  
       2023-07-10 21:26:22 +08:00
    推荐端口敲门的方案: https://github.com/EtherDream/js-port-knocking
    使用白名单,而不是像 fail2ban 这种黑名单
    vibbow
        18
    vibbow  
       2023-07-10 22:08:06 +08:00
    sshguard 了解一下
    docx
        19
    docx  
       2023-07-10 22:19:24 +08:00 via Android
    我就是 sshd 白名单,常用 ip 段丢进去很省事
    laydown
        20
    laydown  
       2023-07-11 05:14:55 +08:00 via iPhone
    改端口,上两步。破了的话我认栽。
    love4taylor
        21
    love4taylor  
    PRO
       2023-07-11 11:26:48 +08:00 via iPhone
    改端口+关密码强制密钥,完事
    realpg
        22
    realpg  
    PRO
       2023-07-11 15:57:30 +08:00
    @linuxgo #10
    首先把非东亚的 IP 按/8 整体 ban 掉就可以解决 90%的扫描口令
    yagamil
        23
    yagamil  
       2023-07-12 12:52:48 +08:00
    www 的爬虫,先把访问日志读一些,统计 ua 头, 去除几个常见的搜索引擎的 spider 外,把莫名奇妙的 ban 就也不多了。
    不要写代码,在云服务商的 cdn 页面加下就好了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2741 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 11:51 PVG 19:51 LAX 04:51 JFK 07:51
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86