防止SSH横向渗透需采用白名单机制,即启用AllowGroups限定可信组、禁用密码认证强制密钥登录,并通过sshd -t验证后reload服务,避免锁死。

要防止非法账号通过SSH横向渗透,核心不是“封住谁”,而是“只放行谁”——必须用白名单机制锁定可信组,配合密钥认证与服务重载验证,避免留后门。
启用 AllowGroups 白名单并禁用全局访问
编辑 /etc/ssh/sshd_config,确保以下配置生效:
- 取消注释或添加 AllowGroups ssh-admins ssh-devs(替换为你实际的授权组名)
- 确认 PermitRootLogin no 已设置,杜绝 root 直接登录
- 检查是否存在 AllowUsers 行——若存在,它会覆盖 AllowGroups;二者共存时,AllowUsers 优先级更高,建议清空或注释掉
- 确保没有冲突的 DenyGroups 规则,除非你明确需要双重过滤
创建专用授权组并精准纳管用户
不要复用系统默认组(如 wheel 或 sudo),新建独立组便于审计和回收:
- 执行 sudo groupadd ssh-admins 和 sudo groupadd ssh-devs
- 用 sudo usermod -aG ssh-admins alice 将用户加入组(-aG 保证不踢出其他组)
- 验证:运行 groups alice,输出中必须含 ssh-admins;若无,需用户重新登录 shell 才生效
- 禁止将运维账号加入过多组,尤其避免同时属于 ssh-admins 和 guests 等宽泛组
强制密钥登录,切断密码爆破路径
AllowGroups 只控身份,不防弱口令。必须叠加密钥认证:
- 设 PasswordAuthentication no,并确认 PubkeyAuthentication yes(默认开启)
- 提醒用户检查 ~/.ssh/authorized_keys 权限为 600,目录 ~/.ssh 为 700
- 测试时用非授权组用户尝试登录,应直接拒绝(连密码提示都不出现);授权组用户必须提供正确密钥才能进
重载前验证 + 多通道测试防锁死
操作失误极易导致全员失联,务必分步验证:
- 先执行 sudo sshd -t,无任何输出才表示语法正确
- 用 sudo systemctl reload sshd(非 restart,保留已有连接)
- 新开终端,用授权组用户+密钥登录,确认成功
- 再用非授权组用户(如 test、backup)尝试,应立即返回 Permission denied
- 若失败,立刻通过控制台(云平台VNC/物理终端)回退配置,切勿在当前 SSH 会话里重启服务

















