SSH 安全加固的五个实用做法
SSH 是 Linux 服务器最常用、也最暴露的管理通道,默认配置往往把 root 密码直接暴露给全网扫描。实际运维中,只需五步就能把 SSH 的攻击面压到很低,而且不影响正常使用。
一、强制使用密钥登录,关闭密码认证
在 /etc/ssh/sshd_config 中设置:
PubkeyAuthentication yes
PasswordAuthentication no
使用 ssh-keygen -t ed25519 生成密钥对,把公钥放入 ~/.ssh/authorized_keys,并 chmod 600 authorized_keys、chmod 700 ~/.ssh。关掉密码后,即使密码被字典跑破也无法登录。注意:关闭前务必先在本地用密钥验证一次,否则可能把自己锁在外面。
二、禁止 root 直接登录
把 PermitRootLogin 改为 no:
PermitRootLogin no
日常使用一个普通用户登录,需要提权时用 sudo 完成。这样攻击者无法针对一个固定用户名爆破,审计日志也能清楚记录是谁在操作。如果必须保留 root 通道,至少改为 prohibit-password 而不是 yes。
三、更换默认 22 端口,并配合 fail2ban
在 sshd_config 中把 Port 改为高位端口,比如 Port 22222,同时防火墙只放行该端口:
firewall-cmd --permanent --add-port=22222/tcp
firewall-cmd --reload
端口变换能过滤掉大量无差别扫描。更稳妥的做法是部署 fail2ban,监控 /var/log/secure 中的 sshd 失败记录,达到阈值自动封禁 IP:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 600
配合 bbr / iptables 或 firewalld,误封时可用 fail2ban-client get sshd 查看并排除。
四、使用 AllowUsers / AllowGroups 白名单
在 sshd_config 末尾加上:
AllowUsers deploy admin
# 或 AllowGroups sshusers
白名单只允许指定用户或组通过 SSH 登录,其余账号即使密钥和端口都猜对也无法建立会话。对多用户服务器,推荐用 AllowGroups:把需要远程登录的成员加入 sshusers 组,后续增删人员只需 usermod,不需要改 sshd 配置。改完白名单记得 systemctl reload sshd。
五、保持 SSH 版本更新,开启审计与登录提示
使用系统包管理器把 openssh-server 保持最新,及时修补漏洞(例如早期的 CVE-2024 系列)。在 sshd_config 中打开日志级别:
LogLevel VERBOSE
VERBOSE 会在 /var/log/secure 记录每一次公钥验证、用户映射和登录结果。同时建议配置 Banner /etc/motd,在登录前显示版权声明和使用规范,既满足合规审计,也能在纠纷时留下连接端的 IP 和指纹证据。
结语
以上五步——密钥登录、禁 root、改端口加 fail2ban、AllowUsers 白名单、保持更新与 VERBOSE 审计日志——按顺序落地,可以把 SSH 的常见攻击面(爆破、默认端口扫描、越权)基本清零。每改一项配置后都要用 ssh -o PasswordAuthentication=no -i ~/.ssh/id_ed25519 user@host 做一次验证,确认能进再提交。安全不是一次到位,而是每次变更都留得下日志、关得掉通道。
- 点赞
- 收藏
- 关注作者
评论(0)