sshd 基线要固定什么
除了认证方式,sshd 还有一组值得固定下来的基线项:禁用空口令登录、限制认证尝试次数与登录宽限时间、限制不必要的转发与会话能力、设置合理日志级别。只看配置文件往往不够,因为最终生效值会受默认值、Include 文件与 Match 段影响,正确的核对方式是让 sshd 输出最终生效配置。
基本信息
| 适用平台 | Linux 与 Unix 发行版上的 OpenSSH 服务 |
|---|---|
| 配置文件 | /etc/ssh/sshd_config 以及 sshd_config.d/*.conf |
| 语法校验 | sshd -t,改完必须先过这一步 |
| 生效核对 | sshd -T 输出最终生效值 |
| 生效方式 | systemctl reload sshd,已建立的连接不受影响 |
| 验证要求 | 用新会话实际登录验证后再断开旧会话 |
基线项与说明
| 配置项 | 建议值 | 说明 |
|---|---|---|
| PermitRootLogin | prohibit-password | 禁止 root 用口令方式直接登录 |
| PermitEmptyPasswords | no | 禁止空口令账户登录 |
| PasswordAuthentication | no(已部署密钥时) | 先确认密钥可用再关闭 |
| MaxAuthTries | 3 至 6 | 限制单连接的认证尝试次数 |
| LoginGraceTime | 30 至 60 | 缩短未完成认证连接的占用时间 |
| MaxSessions | 4 | 限制单连接的多路会话数 |
| AllowTcpForwarding | no 或按需 | 关闭不必要的转发,减少跳板滥用 |
| X11Forwarding | no | 服务器一般不需要图形转发 |
| ClientAliveInterval | 300 | 及时清理僵死会话 |
| LogLevel | VERBOSE | 登录审计需要足够信息 |
基线项参考
基线项参考
PermitRootLogin prohibit-password
PermitEmptyPasswords no
ChallengeResponseAuthentication no
X11Forwarding no
AllowTcpForwarding no # 按需放开,跳板机要单独评估
MaxSessions 4
ClientAliveInterval 300
ClientAliveCountMax 2配置校验与生效
配置校验与生效
sshd -t # 语法校验,必须先过这一步
sshd -T | grep -E 'permitrootlogin|passwordauthentication|maxauthtries|permitemptypasswords'
# 建议写成 sshd_config.d/99-baseline.conf,避免直接改主配置文件
sudo systemctl reload sshd # 重载生效,已建立的连接不受影响典型使用场景
- 新服务器上线时的主机基线加固
- 季度主机基线巡检与整改验收
- 等保或内审整改项的自证材料
- 接管老系统时的配置摸底
- 跳板机与堡垒机的前置加固
- 发布后确认加固项没有被镜像模板覆盖
修改 sshd 前保留一个已登录会话,配置出错时可回滚,避免把所有人挡在系统之外。
sshd -T 的输出才是最终生效值,但结果会受 Include 与 Match 段影响。改完务必用新会话实际登录验证,再断开旧会话。