云计算百科
云计算领域专业知识百科平台

服务器被反复尝试登录之后:fail2ban 加密钥登录的五道加固

我手上那台跑测试的服务器,某天晚上翻登录日志,差点没坐住。Failed password 一页接一页,隔几分钟就来一波,IP 天南海北都有,典型的撞库扫描。当天夜里我就把密码登录关了,装上 fail2ban,前后折腾了大概两小时。这篇就把我从确认、加固到复查的完整过程写下来,命令都是能直接照抄的。

配图1

第一道:翻出登录日志,确认是真被扫了

先别慌着改配置,得先确认自己是不是真被盯上了。我用的是 Ubuntu,登录日志在 /var/log/auth.log。看最近有没有人在试密码,一条命令的事:

tail -200 /var/log/auth.log | grep “Failed password”

要是刷屏,再统计一下都是哪些 IP 在试:

grep “Failed password” /var/log/auth.log | awk ‘{print $(NF-3)}’ | sort | uniq -c | sort -nr | head -20

我那次统计出来,前三名都是境外机房 IP,一个地址就试了几十次。到这一步基本能断定是被字典撞库了,可以动手加固。

第二道:关掉密码登录,只留密钥进门

被扫得这么凶,第一件事就是把最容易撞开的锁换掉。改 /etc/ssh/sshd_config,这两行是关键:

PermitRootLogin no
PasswordAuthentication no

改完执行 systemctl restart sshd 让配置生效。这里有个教训,改之前一定先开一个备用 SSH 会话挂着。我第一回改的时候忘了确认新配置能连,差点把自己锁在门外。密钥我用 ssh-keygen 生成的 ed25519 密钥,公钥放进 authorized_keys,之后全靠密钥连,密码试一万次也进不来。

配图2

第三道:装上 fail2ban,先让默认规则挡着

密钥登录只是换了把结实的锁,fail2ban 相当于在门口雇了个保安,谁连续试密码就把他拉黑。装起来很简单:

apt update && apt install -y fail2ban

装完默认就带一个 sshd 的 jail。有个坑提前说,日志路径别配错,Debian、Ubuntu 系是 /var/log/auth.log,CentOS 系是 /var/log/secure,配错的话后面验证会显示不到任何东西。

第四道:按自己情况改 jail,误封了自己有救

默认规则对我太宽松,我按实际改了 /etc/fail2ban/jail.local:

[sshd]
enabled = true
maxretry = 3
findtime = 600
bantime = 3600

意思是一分钟内试错 3 次,就把这个 IP 封一小时。改完重启:systemctl restart fail2ban。

这里有个坑必须说,maxretry 设太严容易误伤。我有次图省事设成 2,结果自己一个老脚本还在用密码连,把办公室的出口 IP 给封了。好在解封很快,一条命令:

fail2ban-client set sshd unbanip 被封的那个IP

配图3

第五道:验证封禁,几天后回头复查

配完不是就完事了,得验证封禁到底有没有生效。看状态:

fail2ban-client status sshd

正常的话 Banned IP list 下面会挂着被封的 IP。再从防火墙侧确认规则真的加上了:

iptables -L -n | grep f2b

我那次配完当天就封了十几个 IP,第三天再翻 auth.log,Failed password 从刷屏降到基本看不到。之后我每周抽查一次封禁列表,看看有没有漏网的。

整套SSH加固流程走完,我心里踏实多了。服务器安全这种事,没出事之前总觉得离自己远,真被扫一次才知道疼。这篇是服务器安全实操系列的一篇,前面写过 Linux 加固的土办法,后面准备写被 CC 攻击时的处置和 webshell 排查,都是我自己踩过的坑。想看后续的可以关注账号。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 服务器被反复尝试登录之后:fail2ban 加密钥登录的五道加固
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!