SSH安全加固清单
约 816 字大约 3 分钟
2026-08-29
暴露在公网的 SSH 服务每天都会被扫描与爆破。本文把站内已有的加固方法汇总为一份清单,按顺序做完,暴力破解基本失效。涉及 /etc/ssh/sshd_config 的修改,改完记得 sudo systemctl restart sshd 并保持当前会话不断开验证新连接。
顺序很重要
每一步生效前都要确认还能登录(新开窗口验证),防止把自己锁在门外;万一被锁,通过进入Linux单用户模式救援。
使用密钥登录(第一优先)
密钥认证不存在"猜密码"问题,是收益最大的一步:生成与部署方法见使用SSH密钥对实现免密登录。
关闭密码登录
确认密钥能登录后,/etc/ssh/sshd_config 中设置:
PasswordAuthentication no修改默认端口
22 端口是扫描器首选目标,改为非标准端口可过滤掉绝大多数噪音扫描,操作见修改服务器默认远程端口。
限定允许登录的用户
在 sshd_config 中显式声明白名单(未列出的用户一律拒绝):
AllowUsers root
# 多个用户用空格分隔;建议为日常运维创建普通用户并加入 sudo, AllowUsers opsuser在安全组限制来源 IP
比系统层更早拦截:安全组中把 SSH 端口的源地址设为自己的公网 IP(IP 变动频繁时可用运营商网段或跳板机),参见安全组应用案例案例二。
安装 fail2ban 自动封禁爆破 IP
sudo apt install fail2ban -y # 或 sudo dnf install fail2ban -y(需 EPEL)创建 /etc/fail2ban/jail.local:
[sshd]
enabled = true
maxretry = 5 # 5 次失败
findtime = 600 # 在 10 分钟内
bantime = 3600 # 封禁 1 小时sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd # 查看已封禁 IP设置密码复杂度与有效期
仍保留密码登录时,让弱密码活不下来。安装质量校验模块(CentOS/Rocky 通常已内置):
sudo apt install libpam-pwquality -y # Debian/Ubuntu编辑 /etc/security/pwquality.conf:
minlen = 12 # 最短 12 位
minclass = 3 # 至少含 3 类字符(大写/小写/数字/符号)
dcredit = -1 # 至少 1 个数字
ucredit = -1 # 至少 1 个大写字母设置有效期 90 天(到期强制改密):
sudo chage -M 90 root收紧认证尝试与登录宽限
/etc/ssh/sshd_config:
MaxAuthTries 3 # 每连接最多尝试 3 次(默认 6)
LoginGraceTime 20 # 20 秒内未完成认证即断开(默认 120)改完 sudo systemctl restart sshd,保持原会话,另开窗口验证;长时间操作的会话管理见保持SSH会话不断开。
定期审计登录记录
sudo lastb | head -20 # 失败登录记录(爆破证据)
last | head # 成功登录记录
sudo grep 'Accepted' /var/log/auth.log | tail # Debian/Ubuntu
sudo grep 'Accepted' /var/log/secure | tail # CentOS/Rocky发现陌生 IP 登录成功立即改密/换密钥并排查入侵,排查流程见Linux挖矿病毒排查与清除。
