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

2023-07-10 13:36:13 +08:00
 tool2d
本来想用现成的 py 工具,结果服务器弄了半天配置没生效,想一想原理也不复杂,还是自己手动写一个吧。

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

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

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

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

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

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

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

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

开源软件日常了。

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

比如 fping ,那个 timeout 参数的逻辑,感觉是程序员喝多了设计出来的。
pppan
2023-07-10 21:26:22 +08:00
推荐端口敲门的方案: https://github.com/EtherDream/js-port-knocking
使用白名单,而不是像 fail2ban 这种黑名单
vibbow
2023-07-10 22:08:06 +08:00
sshguard 了解一下
docx
2023-07-10 22:19:24 +08:00
我就是 sshd 白名单,常用 ip 段丢进去很省事
laydown
2023-07-11 05:14:55 +08:00
改端口,上两步。破了的话我认栽。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/955498

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX