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

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

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

先别慌着改配置,得先确认自己是不是真被盯上了。我用的是 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,之后全靠密钥连,密码试一万次也进不来。

第三道:装上 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

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

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

fail2ban-client status sshd

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

iptables -L -n | grep f2b

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

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

相关推荐
xixiaoyunya1 小时前
虚拟机备份怎么做:镜像级与文件级搭配的完整实操方案
linux·运维·网络
炸鸡叔1 小时前
我做了 BotBus:从手机续聊本地 Agent,查看文件和终端
前端·后端
漂不动1 小时前
告别上下文爆炸:基于 Milvus-Lite 与渐进式披露的动态 Agent 工具挂载实践
后端
阿明61 小时前
进程替换【Linux】
linux·运维·服务器
sunoo-2291 小时前
【嵌入式Linux驱动学习】Day1-Day2 全流程梳理:环境搭建→U-Boot→内核→根文件系统→驱动基础
linux·运维·驱动开发·笔记·学习·阿里云·恩智浦
Gust of wind1 小时前
串与KMP模式匹配:存储结构、基本操作、next数组手算
c语言·数据结构·后端·算法
endswel2 小时前
Spring bean 注册多种方式
java·后端·spring
铁皮饭盒2 小时前
还是网页端, 46mb模型, 抠图功能升级了, 抠任意主体, 还是不要显卡, 不要python, 满意吗?
前端·javascript·后端
小林coding2 小时前
Flash模型又添一员大将:实测MiniMax M3.1
后端