说到SSH安全配置,这真是个让人又爱又恨的话题。作为系统管理员,我深知SSH就像服务器的“大门”,配置得当能抵御绝大多数攻击,但稍有不慎就可能成为黑客的突破口。记得有次半夜被叫起来处理服务器被暴力破解的事件,从那以后我就对SSH安全配置格外上心。今天就来聊聊那些真正实用的SSH安全加固要点,这些可都是实战中总结出来的经验之谈。
禁用密码登录,拥抱密钥认证
说真的,现在还用密码登录SSH就跟用纸糊的锁守门差不多。根据Cloudflare的统计,超过70%的SSH攻击都是冲着弱密码来的。我建议彻底禁用密码登录,改用密钥认证。具体操作是在sshd_config里把PasswordAuthentication设为no,再把PubkeyAuthentication设为yes。不过要记得先在本地生成密钥对,把公钥传到服务器上测试通过后再禁用密码,不然可就把自己锁在外面了!
修改默认端口真的有用吗?
很多人第一反应就是改掉22端口,这确实能减少一些自动化扫描,但说实话,这顶多算是个“障眼法”。真正专业的攻击者用端口扫描工具几分钟就能找到新端口。不过结合其他防护措施,改端口还是有点用的,至少能让那些脚本小子知难而退。我一般会选择1024以上的端口,但千万别用那些常见的替代端口比如2222,这些早就被黑客摸透了。
fail2ban:你的自动门卫
这是我强烈推荐的工具!fail2ban能实时监控登录失败尝试,自动封禁可疑IP。配置得当的话,能在攻击者尝试几次失败后就直接拉黑。有个客户之前每天都要处理成千上万的暴力破解尝试,部署fail2ban后攻击日志直接降到了个位数。不过要注意调整封禁时间和重试次数,避免误伤正常用户。
限制用户和网络访问
“最小权限原则”在SSH配置里特别重要。我见过太多服务器允许root直接登录,这简直是在邀请黑客来搞破坏。务必禁止root登录,用普通用户登录后再su。还可以通过AllowUsers精确控制哪些用户能登录,用AllowGroups管理用户组权限。如果服务器只对特定IP开放,设置iptables规则限制源IP是最有效的办法之一。
其他容易被忽略的细节
MaxAuthTries设置登录失败次数上限能有效阻止暴力破解;ClientAliveInterval和ClientAliveCountMax能自动断开闲置连接;Protocol 2强制使用更安全的SSHv2协议。对了,记得定期更新OpenSSH版本,老版本可能存在未修复的漏洞。上次那个CVE-2023-38408漏洞就让不少没及时更新的服务器中招了。
说到底,SSH安全配置是个系统工程,不能指望某个单一措施就能高枕无忧。我建议采用“纵深防御”策略,多个安全措施叠加使用。每次修改配置后都要充分测试,毕竟安全性和可用性需要平衡。你们在配置SSH时还遇到过什么坑?欢迎一起交流讨论!

禁用密码登录这个建议太实用了,必须点赞!
fail2ban确实好用,我们公司部署后攻击尝试直接清零👍
想问下除了1024以上端口,还有没有其他比较隐蔽的端口推荐?