插件窝 干货文章 Linux用户密码存放位置及安全性分析

Linux用户密码存放位置及安全性分析

密码 哈希 使用 系统 276    来源:    2025-04-08

Linux用户密码存放位置及安全性分析

密码存储位置

在Linux系统中,用户密码主要存储在以下文件中:

  1. /etc/passwd - 传统存储位置,现在通常只包含用户基本信息
  2. /etc/shadow - 现代Linux系统实际存储加密密码的文件(只有root可读)
  3. /etc/group - 包含用户组信息

密码存储格式

现代Linux系统使用shadow密码系统,密码以加密形式存储在/etc/shadow文件中,格式如下:

username:encrypted_password:last_change:min_age:max_age:warn:inactive:expire:reserved

密码字段通常以$符号开头,表示加密算法和salt值,格式为: $id$salt$encrypted

其中id表示哈希算法: - $1$ - MD5 - $2a$ - Blowfish - $5$ - SHA-256 - $6$ - SHA-512

安全性分析

优点

  1. shadow文件保护:/etc/shadow文件权限通常为640,只有root可读
  2. 密码哈希:密码不以明文存储,而是使用单向哈希函数加密
  3. salt值:每个密码都有随机salt值,防止彩虹表攻击
  4. 现代算法:较新系统默认使用SHA-512等强哈希算法

潜在风险

  1. 弱密码:即使使用强哈希,简单密码仍可能被暴力破解
  2. 旧系统:一些旧系统可能仍使用较弱的MD5哈希
  3. 权限配置错误:如果shadow文件权限设置不当可能导致泄露
  4. 物理访问:攻击者如果有物理访问权限可能通过其他方式获取密码哈希

安全建议

  1. 使用强密码策略

    • 设置最小密码长度(建议至少12字符)
    • 强制使用大小写字母、数字和特殊字符组合
  2. 更新加密算法

    • 确保系统使用SHA-256或SHA-512而非MD5
    • 可通过修改/etc/login.defs中的ENCRYPT_METHOD配置
  3. 定期更换密码

    • 使用chage命令设置密码过期策略
  4. 限制访问

    • 确保/etc/shadow文件权限为640(-rw-r-----)
    • 使用sudo而非共享root密码
  5. 监控与审计

    • 定期检查/etc/shadow文件修改时间
    • 使用工具如aide监控关键系统文件完整性
  6. 考虑多因素认证

    • 对重要系统实施SSH密钥+密码的双因素认证

密码策略配置示例

/etc/login.defs中设置:

PASS_MAX_DAYS   90
PASS_MIN_DAYS   7
PASS_MIN_LEN    12
PASS_WARN_AGE   14
ENCRYPT_METHOD  SHA512

使用chage命令修改用户密码策略:

chage -M 90 -m 7 -W 14 username

通过以上措施,可以显著提高Linux系统的密码安全性。