服务器 SSH 安全加固:改端口、禁密码、只留密钥登录
新开一台云服务器,第一件事往往不是装应用,而是把 SSH 加固好。SSH 是服务器的正门,默认配置暴露在公网上,每天都会被成千上万次的密码爆破扫描。加固的思路很简单:让攻击者连门都摸不到,就算摸到也打不开。
一、改默认端口:挡掉九成以上的批量扫描
SSH 默认跑在 22 端口,全网的扫描器都在扫它。把端口改成一个不常用的高位端口,比如 22022,能直接过滤掉绝大多数只扫默认端口的自动化脚本。这招防不住定向攻击,但批量扫描的噪音会立刻安静下来。
改法在 /etc/ssh/sshd_config 里:把 Port 22 改成目标端口,重启 sshd 生效。改之前先确认防火墙已经放行了新端口,否则改完自己也连不上。稳妥的做法是先加新端口、验证能登录,再关掉 22。
二、禁密码登录,只留密钥
密码再复杂也架不住字典爆破,而且很多弱口令是人随手设的。密钥登录从根本上断了这条路:服务器上只存公钥,没有私钥谁也进不来。
在 sshd_config 里把 PasswordAuthentication 设为 no,同时确认 PubkeyAuthentication 为 yes。改之前先确认自己的密钥已经能正常登录,并且手头有备用登录方式——一旦把自己锁在外面,恢复起来很麻烦。改完重启 sshd,用密码试一次,确认已被拒绝,才算真正生效。
三、禁 root 直接登录
root 是所有攻击者的首选目标。禁止 root 直接用 SSH 登录,攻击者就算猜中了密码也没有入口。做法是把 PermitRootLogin 设为 no,日常管理用普通用户登录后再 sudo 提权。
如果确实需要 root 权限的操作,sudo 完全可以覆盖。保留 root 的本地控制台登录即可,远程只走普通用户加密钥这一条路。
四、收紧能登录的用户
默认情况下,系统上所有有 shell 的用户都能尝试 SSH 登录。可以用 AllowUsers 在 sshd_config 里写死一个白名单,只允许指定的管理账号登录,其他账号一律拒绝。账号越少,攻击面越小。
同时把不需要登录的系统账号、测试账号及时清理或锁定。很多入侵都是从一个早就没人用的旧账号开始的。
五、失败登录要有防线
即使前面几层都做了,fail2ban 这类工具仍然值得装。它监听登录失败日志,某个 IP 短时间内失败次数超标就自动把这个 IP 封一段时间。配合密钥登录,暴力破解基本没有得手的可能。
另外养成看日志的习惯:定期看 /var/log/auth.log(或 journalctl -u ssh),失败登录的来源 IP、尝试的用户名一目了然。发现某个 IP 持续试探,可以直接在防火墙里永久封掉。
小结
SSH 加固没有银弹,靠的是层层设防:改端口挡批量扫描、密钥登录断密码爆破、禁 root 远程登录、用户白名单收紧入口、fail2ban 兜底。每一步都不难,加起来就是一道攻击者很难跨过的门。新服务器上线先花十分钟做完这五步,比事后处理入侵要省心得多。
(本文为个人运维实践记录。)
- 点赞
- 收藏
- 关注作者
评论(0)