SSH安全三斧:改端口、上密钥、禁密码
第一斧:部署SSH公钥认证公钥认证是所有后续动作的前提——先确保有替代密码的登录方式,才能安全地关闭密码。操作:在本机用ssh-keygen生成ed25519类型的密钥对;把公钥上传到服务器的authorized_keys文件中;测试密钥登录确认不输密码就能登录。注意事项:私钥文件权限设为600;密钥设passphrase保护——私钥被盗没有passphrase也用不了;备份好私钥——丢了私钥又关了密码就被锁死了。
第二斧:改掉默认22端口默认端口是扫描器的第一目标——改端口不能阻止针对性攻击,但能过滤掉99%的自动化批量扫描。操作:编辑sshd_config把Port 22改成高位端口(如6022);同时在防火墙和安全组中放行新端口——别忘了这步,改了端口没开防火墙等于把自己锁死;重启前保留22端口双端口运行——确认新端口能登录后再关闭22。经验值:改端口后观察日志,22端口的暴力破解尝试从每天几百次降到零。
第三斧:关闭密码认证和root登录前两斧就位后最后一斧釜底抽薪:PasswordAuthentication设为no——关闭密码认证只允许密钥登录;PermitRootLogin设为no——禁止root直接登录。这两项生效后暴力破解在数学上就不可能了。关闭前确认:至少一个普通用户的密钥登录已验证、sudo权限已配好、当前SSH会话保持不断开——出问题还能救。关闭后立即测试新开终端能否正常登录。
加分项:Fail2ban自动封禁部署Fail2ban——自动监控SSH日志,检测到多次失败登录后自动封禁来源IP。配置建议:maxretry设为3、bantime设为3600、加入自己常用IP的白名单。Fail2ban和三斧的配合:三斧是城墙(让攻击者进不来),Fail2ban是巡逻兵(持续巡逻,发现可疑动作立即处置)。
最后的安全清单密钥已部署且测试通过、端口已改且防火墙已放行、密码认证已关闭、root登录已禁用、Fail2ban已运行、密钥有passphrase、密钥文件有安全备份、日志定期审查——八条全勾,你的SSH安全就在99%的服务器之上。三斧是投入产出比最高的第一步——今天就能做,做完立刻有效。
三斧之外的进阶加固如果三斧砍完还有余力,三个进阶动作把SSH安全推向极致:其一,双因素认证——SSH也可以配双因素,密钥加一个动态验证码,私钥被盗也登不上。其二,端口敲门——服务器只响应用正确顺序探测的端口,扫描器看到的是全部关闭,只有知道暗号的人才能触发SSH端口开放。其三,定期轮换密钥——密钥用久了泄露风险累积,季度或半年换一次,旧密钥立即吊销。三个动作依次递进,做到任何一个都比99%的服务器管理员更专业。