三个容易混淆的限制
OpenSSH 里有三组常被搞混的参数:MaxAuthTries 限制单条连接内的认证尝试次数,MaxSessions 限制一条连接上的并发会话数,MaxStartups 限制尚未完成认证的并发连接数。前两个用来压低爆破效率,第三个防止大量半开连接把 sshd 拖垮。
基本信息
| 加固项 | 认证尝试与并发限制 |
|---|---|
| 适用平台 | Linux(OpenSSH) |
| 关键参数 | MaxAuthTries、MaxSessions、MaxStartups |
| 判读方式 | 以 sshd -T 的合并输出为准 |
| 参考取值 | MaxAuthTries 3、MaxSessions 4、MaxStartups 10:30:60 |
| 风险等级 | 低 |
典型使用场景
- 公网或大内网暴露的 SSH:降低单条连接的爆破效率
- 高并发自动化环境:调整 MaxStartups 避免部署流水线随机失败
- 合规核查:要求限制认证失败次数与会话数
- 事故复盘:确认是否有配置片段覆盖了主配置
配置与核验
配置与核验
# 查看合并后实际生效的值(含 sshd_config.d 片段)
sshd -T | grep -E 'maxauthtries|maxsessions|maxstartups'
# 写入片段文件
sudo sh -c 'printf "%s\n" "MaxAuthTries 3" "MaxSessions 4" "MaxStartups 10:30:60" > /etc/ssh/sshd_config.d/99-hardening.conf'
# 语法检查通过后再重载,避免把自己关在门外
sudo sshd -t && sudo systemctl reload sshd参数含义与代价
| 参数 | 含义 | 调小的代价 |
|---|---|---|
| MaxAuthTries | 单条连接的认证尝试上限 | 密钥加多因素叠加时可能误伤正常登录 |
| MaxSessions | 单条连接的并发会话数 | 多窗口与端口转发使用受限 |
| MaxStartups | 未认证并发连接上限 | 并发自动化出现随机连不上 |
sshd -T 输出的是合并后的最终值,判读配置以它为准,只看主配置文件容易漏掉片段覆盖。
RHEL 与 Ubuntu 的较新版本会把配置拆到 sshd_config.d 目录,片段里的同类指令会覆盖主配置文件中的设置。
MaxStartups 调得过小时,Ansible 这类并发工具会随机连不上,调整前先评估并发规模。
这三项只作用于认证阶段,对已经通过认证的连接没有约束力;限制空闲会话占用资源要另外配置 ClientAliveInterval 与 ClientAliveCountMax。
落地检查点
- 以 sshd -T 的输出作为验收依据,不看配置文件写了什么
- 检查 sshd_config.d 下是否存在覆盖同类指令的片段文件
- 改完先 sshd -t 校验语法,再 reload 服务
- 在并发部署高峰期观察是否出现连接失败,确认阈值合适