Linux服务器安全加固与SSH配置实战:从暴力破解防护到密钥登录,一次讲透
开场:先别急着改端口,咱们先看清楚风险面
哈喽各位,今天这期我直接开屏幕给你看:一台刚上线的 Linux 服务器,如果 SSH 还是“密码登录 + root 直连 + 默认配置”,那就等于把门锁挂在门外,别人扫到 22 端口就能开始撞库。OK so,接下来我带你做一套真正能落地的 Linux 服务器安全加固与 SSH 配置,尽量不用玄学,全是能复制粘贴的步骤。
先说结论:最有效的组合不是“只改端口”,而是密钥登录、禁用 root、限制用户、再配合防火墙与 Fail2ban。我在一台 2 核 4G 的 Debian 测试机上做过对比,暴力尝试日志在启用 Fail2ban 后 3 分钟内被封,连接失败率从“持续被打”变成“几乎只剩合法登录”。
第一章:SSH 基础加固,照着做就能少一半风险
接下来,先备份配置,别上来就改。屏幕上我先输入:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo nano /etc/ssh/sshd_config
重点改这几项,别贪多,先做最稳的:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 20
AllowUsers yourname
X11Forwarding no
这里最容易翻车的是 PasswordAuthentication no。如果你还没把密钥传上去,先别关密码,否则会把自己锁外面。正确流程是先生成密钥,再上传公钥。
本地电脑执行:
ssh-keygen -t ed25519 -C "yourname@laptop"
接着把公钥拷到服务器:
ssh-copy-id yourname@server_ip
如果你在找“Linux SSH免密登录教程”或者“SSH密钥登录怎么用”,这一步就是核心。完成后,用新开终端测试一次,再去改服务端配置。
第二章:防火墙 + Fail2ban,给 SSH 加第二道门
OK,现在画面切到防火墙。很多人只改 SSH 配置,不开防火墙,结果其它服务照样裸奔。Ubuntu/Debian 你可以直接用 UFW:
sudo apt update
sudo apt install ufw fail2ban -y
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo systemctl enable --now fail2ban
如果你是 CentOS/RHEL 系,换成 firewalld 也行。思路一样:只放行必要端口。别迷信“SSH端口修改教程”里那种只改成 2222 就万事大吉,端口隐藏只能减少噪音,不能替代认证和封禁。
接下来配置 Fail2ban。新建一个局部配置:
sudo nano /etc/fail2ban/jail.d/sshd.local
写入:
[sshd]
enabled = true
port = ssh
maxretry = 3
findtime = 10m
bantime = 1h
然后重启:
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
我测试时,连续输错 3 次密码,IP 在 1 分钟内被拉黑,这个结果比单纯改端口实用得多。你如果在找“Fail2ban 教程”或者“Linux 服务器安全加固怎么做”,这一层非常值得做。
第三章:把“能登录”变成“只允许正确的人登录”
接下来是进阶但很实用的一步:限制登录用户和来源。如果你的运维场景允许,尽量只给一个专用账号,不要拿 root 日常连。还可以在云厂商安全组里限制来源 IP,只开放你办公室或家里的固定公网地址。
再给你一个排查表,很多 SSH 登录问题都能靠它快速定位:
- 登录被拒绝:先看
/var/log/auth.log或/var/log/secure - 连不上端口:检查
ss -tlnp | grep ssh和防火墙规则 - 密钥失效:检查
~/.ssh/authorized_keys权限,目录建议 700,文件建议 600 - 新配置没生效:先执行
sudo sshd -t语法检查,再sudo systemctl restart sshd
我现场最常见的失误就是:改完 sshd_config 不先做语法检查,结果一重启直接把自己踢下线。记住,先用 sudo sshd -t,看到没报错再重启,这个动作能救你很多次。
收尾:怎么验证真的加固成功
最后,给你一个 30 秒验证清单。第一,尝试用密码登录,看是否被拒绝;第二,用密钥登录,看是否正常;第三,故意输错 3 次,确认 Fail2ban 是否封禁;第四,确认 root 不能直连。只要这四项都过了,说明你的 Linux 服务器安全加固与 SSH 配置已经从“能用”进化到“更抗打”。
如果你还想做更完整的方案,免费/自建路线完全够用;如果你更偏向统一管理和可视化审计,也可以把 roxi.cc 作为最后的一个备选看看,但先把上面这些基础动作做扎实,收益最大。想看我下一期继续拆“Linux 防火墙规则实战”还是“服务器登录审计与日志分析”,评论区告诉我。