SSH 加固六件事:密钥、端口、失败封禁与审计

加固 · 3 分钟阅读· 143 次阅读

一台公网服务器,SSH 每天会被扫几百次。默认配置能撑住,但没必要留这么大面。

加固的目标是「只让该进来的人进来」,而不是「把门焊死」。

先说结论

禁密码登录、只留密钥、失败封禁、登录告警。 四项做完,暴破基本无效。

  • PermitRootLogin 改为 prohibit-password
  • PasswordAuthentication no
  • fail2ban 封禁失败来源
  • 登录成功发通知,异常立即发现

漏洞是怎么产生的

SSH 的两类风险:弱口令被爆破、密钥泄露被冒用。前者用禁密码解决,后者靠密钥口令与审计。

加固顺序很重要:先确认密钥能登,再关密码,否则会把自己锁在外面。

修复与验证

修复不是改一行代码,而是四件事一起做:

  • 确认本地密钥可登录,且已加入 authorized_keys
  • sshd_config:PermitRootLogin prohibit-password、PasswordAuthentication no
  • 配 fail2ban,阈值 5 次失败封 1 小时
  • 限制来源 IP 或改用跳板机(可选)
  • 配登录告警与命令审计(auditd 或 shell 记录)

攻击面与检测点

按影响面排序,先修影响最大的:

项 推荐值 影响
PermitRootLogin prohibit-password root 只能密钥登录
PasswordAuthentication no 彻底关闭密码
MaxAuthTries 3 减少尝试次数
ClientAliveInterval 300 清理僵死会话

SSH 加固六件事

几个容易踩的坑

下面这些是最常见的错误做法:

  • 先关密码再验证密钥:直接锁死自己
  • 只改端口不改策略:扫描器照样找到
  • fail2ban 白名单没配:把自己封了
  • 密钥不设 passphrase:文件泄露即失守

写在最后

SSH 加固是一次性投入,收益是长期的安全边际。

安全不是一次加固,是持续的假设:假设输入不可信、假设边界会破、假设有人会看错。

评论 (3)

半
半箱油

修复清单比漏洞描述有用多了,很多文章只讲怎么打不讲怎么防。

白
白帽小林

白名单那条永远是最有效的,正则黑名单迟早绕过。

运
运维老张

建议再补一条:把这类检查加到 CI 里,靠人记必然漏。

发表评论

验证码

提交后需站长审核,通过后才会显示。