服务器被反复尝试登录之后: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 排查,都是我自己踩过的坑。想看后续的可以关注账号。

相关推荐
洋不写bug1 小时前
网络编程(二)TCP回显服务器与客户端通信详解
服务器·网络·tcp/ip·tcp·网络通信·javaee·回显服务器
java_logo1 小时前
Docker 部署 DeepSeek Harness:轻松搭建局域网里的 AI Agent 平台
运维·docker·容器·ai agent·deepseek·轩辕镜像·deepseekharness
lisanmengmeng2 小时前
NRPE 添加命令(四)
linux·运维·服务器
想做小南娘,发现自己是女生喵2 小时前
i.MX6ULL嵌入式Linux入门学习文档
linux·运维·学习
FL16238631292 小时前
Siemens‑Automation‑License‑Manager & SIMATIC‑Automation‑Tool 下载安装教程
运维·服务器
落魄大学生之流水线上谋生计2 小时前
从 Jenkins 小白到企业级交付平台
运维·jenkins
此生决int2 小时前
Linux系列(04)——基础开发工具(上)软件包管理器、vim、gcc/g++
linux·服务器·vim
Huangjin007_2 小时前
【Linux 系统篇(二十六)】文件(三): 深入理解 “一切皆文件”、缓冲区
linux·运维·服务器
2401_868534782 小时前
2024年11月软考网规
运维·服务器