首页/安全/安全加固速查/家目录与 .ssh 权限核查

家目录与 .ssh 权限核查

家目录建议 700、.ssh 700、authorized_keys 600:权限过宽等于把密钥交给同机低权账号。

安全加固速查安全更新于 2026-10-13

权限决定密钥是否算泄漏

家目录与 .ssh 目录的权限,直接决定同机低权账号能不能读到私钥、能不能往 authorized_keys 里塞自己的公钥。通行做法是家目录 700、.ssh 目录 700、authorized_keys 600,且属主与属组必须正确。OpenSSH 的 StrictModes 默认为 yes,权限不规范会直接拒绝密钥认证,表现为“密钥明明对却登不上”。

基本信息

适用平台Linux(OpenSSH)
权限口径家目录 700、.ssh 700、authorized_keys 600
属主要求属主为对应用户,属组为该用户主组
加固项家目录与密钥文件权限核查
关键开关sshd_config 的 StrictModes yes(默认)

典型使用场景

  • 批量巡检:一次性列出所有家目录与密钥文件权限,找出 777/755 的异常项
  • 授权账号加固:运维、部署、跳板账号的家目录价值最高
  • 排障定位:密钥登录失败时先查 StrictModes 相关的权限报错
  • 离职回收:账号删除前确认家目录中的密钥与历史文件已处置
  • 交付验收:新建镜像模板时检查默认家目录权限

核查命令

核查命令
stat -c '%a %U %n' /root /home/* 2>/dev/null          # 家目录权限概览
find /home /root -maxdepth 2 -name '.ssh' -exec ls -ld {} \; 2>/dev/null
find /home -maxdepth 3 -name 'authorized_keys' -exec stat -c '%a %n' {} \; 2>/dev/null
find /home /root -maxdepth 3 -name '.ssh' -perm /077 -ls 2>/dev/null   # 只列权限过宽项
getfacl -p ~user 2>/dev/null | head -10                # 抽查 ACL 是否额外放宽

权限值读法

对象建议值异常表现
家目录700755 或 777=同机用户可读私钥与历史
.ssh 目录700过宽等于交出密钥目录的写权限
authorized_keys600644 可被他人读取公钥信息
私钥文件600过宽直接等于密钥泄漏
known_hosts600 或 644600 更稳妥,避免被篡改
StrictModes yes 时权限不规范会直接拒绝认证:排障先看 /var/log/secure 或 auth.log 里是否出现 bad ownership 或 permissions 提示。
除基础权限外还要看 ACL 与扩展属性:用 getfacl 抽查一次,避免权限看起来合规但被 ACL 放宽。

核查要点

  • 先列异常项而不是全量:用 -perm /077 只筛权限过宽的文件
  • 特权账号(root、运维、部署)家目录按最高优先级处理
  • 改权限精确到文件,避免 chmod -R 把私钥改成连本人也读不了
  • 账号停用或离职后清理家目录中的密钥与历史文件
  • 把权限核查做成定时任务,输出差异而不是逐台手工看
整体收紧家目录权限前确认应用依赖:部分应用把数据或配置放在用户家目录下,改前先评估影响。

易错点

  • 只查 .ssh 不查家目录本身:家目录过宽时攻击者可直接替换整个 .ssh 目录
  • 把 chmod 777 当临时排障手段:过后忘记收回,密钥等价于公开
  • 只改属主不改属组:属组错误同样会触发严格模式拒绝登录
  • 忽略 ACL:八进制权限看着合规,ACL 却给其它用户放了读权限

数据来源与参考

  • CIS Linux Benchmark:家目录权限
  • 等保 2.0:访问控制

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌