Linux账户信息安全深入剖析
字数 2114 2025-08-15 21:30:43

Linux账户信息安全深入剖析

1. Linux账户基础概念

1.1 用户与用户组

  • Linux通过用户和用户组进行访问控制
  • 每个用户必须是一个组的成员(主属组),但可以拥有多个从属组
  • root用户拥有系统最高权限,其他账号只有部分权限

1.2 账户管理命令

  • useradd:新增用户
  • userdel:删除用户
  • pwck -s:检查用户配置文件完整性

2. 账户配置文件

2.1 重要配置文件

文件 作用 注意事项
/etc/shadow 保存用户安全信息 普通用户不可访问
/etc/passwd 用户账户信息 对所有人可读
/etc/gshadow 保存组账号的安全信息
/etc/group 定义用户所属的组
/etc/sudoers 可以运行sudo的用户
/home/* 用户主目录

2.2 /etc/passwd文件结构

每行包含7个字段,用冒号(":")分隔:

name:password:UID:GID:GECOS:directory:shell

字段说明:

  1. 账号:用户名,不能为空,不能包含大写字母
  2. 密码:通常为"x",实际密码存储在/etc/shadow
  3. 用户ID(UID):第一个非root用户默认UID是1000
  4. 组ID(GID):用户的主要组ID
  5. 用户介绍:使用者信息,用逗号分隔
  6. home目录:登录时设置$HOME环境变量
  7. 默认shell:登录时运行的程序

2.3 /etc/shadow文件结构

每行包含9个字段,用冒号(":")分隔:

登录名:加密密码:上次密码更改时间:密码不得更改天数:最长密码使用天数:密码警告期:密码闲置期:账户到期时间:保留字段

字段详细说明:

  1. 登录名:与/etc/passwd的账号相同
  2. 加密密码:使用crypt加密后的密码
  3. 上次密码更改时间:自1970年1月1日以来的天数
  4. 密码不得更改天数:在此天数前不能修改密码
  5. 最长密码使用天数:用户必须修改密码的天数
  6. 密码警告期:提醒用户修改密码的期限
  7. 密码闲置期:密码过期后仍可使用的天数
  8. 账户到期时间:自1970年1月1日以来的天数
  9. 保留字段:暂未使用

2.4 /etc/group文件结构

每行包含4个字段,用冒号(":")分隔:

组名:密码:组ID:组中用户

2.5 /etc/gshadow文件结构

每行包含4个字段,用冒号(":")分隔:

组名:加密密码:管理员:成员

3. 常见用户组及其作用

影响文件 作用
Adm 类似wheel的管理器群组
ftp /srv/ftp/ 访问FTP服务器
Games /var/games 访问一些游戏
Log /var/log/ 访问syslog-ng创建的日志文件
http /srv/http/ 访问HTTP服务器文件
Sys 管理CUPS系统中的打印机
systemd-journal /var/log/journal/* 以只读方式访问系统日志
Users 标准用户组
Uucp /dev/ttyS[0-9]+, /dev/tts/[0-9]+, /dev/ttyUSB[0-9]+, /dev/ttyACM[0-9]+ 串口和USB设备
Wheel 管理组,通常用于sudo和su命令权限

4. 账户安全监控

4.1 登录记录查看

  • last:查看登录历史(读取/var/log/wtmp)
  • lastb:查看登录失败的记录(读取/var/log/btmp)

4.2 暴力破解检测示例

# 查看特定IP的失败登录尝试次数
sudo lastb | grep "39.105.202.21" | wc -l

# 查看该IP是否成功登录
last | grep "39.105.202.21"

5. Linux密码安全机制

5.1 密码加密方式

Linux使用crypt算法对密码进行加密,格式为:

$id$salt$encrypted
  • id:加密方法标识

    • 1:MD5
    • 2a:Blowfish
    • 5:SHA-256 (glibc 2.7起)
    • 6:SHA-512 (glibc 2.7起)
  • salt:随机字符串([a-zA-Z0-9./]组成,最多16位)

  • encrypted:明文密码和随机salt通过散列函数生成的密文

5.2 不同算法的密文长度

算法 密文长度
MD5 22字符
SHA-256 43字符
SHA-512 86字符

6. 账户安全最佳实践

  1. 最小权限原则:只赋予用户必要的权限
  2. 定期检查账户:使用pwck -s检查账户完整性
  3. 监控登录记录:定期检查/var/log/wtmp和/var/log/btmp
  4. 密码策略
    • 设置密码过期时间
    • 强制定期更换密码
    • 设置密码复杂度要求
  5. 服务账户管理
    • 为每个服务创建专用账户
    • 设置这些账户为不可登录
    • 不使用密码
  6. sudo权限控制:严格控制/etc/sudoers文件中的权限分配

7. 历史漏洞示例

CVE-2019-14287

  • 影响1.8.28之前版本的sudo
  • 攻击者可以通过此漏洞获取操作系统最高权限
  • 解决方案:及时更新sudo到最新版本
Linux账户信息安全深入剖析 1. Linux账户基础概念 1.1 用户与用户组 Linux通过用户和用户组进行访问控制 每个用户必须是一个组的成员(主属组),但可以拥有多个从属组 root用户拥有系统最高权限,其他账号只有部分权限 1.2 账户管理命令 useradd :新增用户 userdel :删除用户 pwck -s :检查用户配置文件完整性 2. 账户配置文件 2.1 重要配置文件 | 文件 | 作用 | 注意事项 | |------|------|----------| | /etc/shadow | 保存用户安全信息 | 普通用户不可访问 | | /etc/passwd | 用户账户信息 | 对所有人可读 | | /etc/gshadow | 保存组账号的安全信息 | | | /etc/group | 定义用户所属的组 | | | /etc/sudoers | 可以运行sudo的用户 | | | /home/* | 用户主目录 | | 2.2 /etc/passwd文件结构 每行包含7个字段,用冒号(":")分隔: 字段说明: 账号 :用户名,不能为空,不能包含大写字母 密码 :通常为"x",实际密码存储在/etc/shadow 用户ID(UID) :第一个非root用户默认UID是1000 组ID(GID) :用户的主要组ID 用户介绍 :使用者信息,用逗号分隔 home目录 :登录时设置$HOME环境变量 默认shell :登录时运行的程序 2.3 /etc/shadow文件结构 每行包含9个字段,用冒号(":")分隔: 字段详细说明: 登录名 :与/etc/passwd的账号相同 加密密码 :使用crypt加密后的密码 上次密码更改时间 :自1970年1月1日以来的天数 密码不得更改天数 :在此天数前不能修改密码 最长密码使用天数 :用户必须修改密码的天数 密码警告期 :提醒用户修改密码的期限 密码闲置期 :密码过期后仍可使用的天数 账户到期时间 :自1970年1月1日以来的天数 保留字段 :暂未使用 2.4 /etc/group文件结构 每行包含4个字段,用冒号(":")分隔: 2.5 /etc/gshadow文件结构 每行包含4个字段,用冒号(":")分隔: 3. 常见用户组及其作用 | 组 | 影响文件 | 作用 | |----|----------|------| | Adm | | 类似wheel的管理器群组 | | ftp | /srv/ftp/ | 访问FTP服务器 | | Games | /var/games | 访问一些游戏 | | Log | /var/log/ | 访问syslog-ng创建的日志文件 | | http | /srv/http/ | 访问HTTP服务器文件 | | Sys | | 管理CUPS系统中的打印机 | | systemd-journal | /var/log/journal/* | 以只读方式访问系统日志 | | Users | | 标准用户组 | | Uucp | /dev/ttyS[ 0-9]+, /dev/tts/[ 0-9]+, /dev/ttyUSB[ 0-9]+, /dev/ttyACM[ 0-9 ]+ | 串口和USB设备 | | Wheel | | 管理组,通常用于sudo和su命令权限 | 4. 账户安全监控 4.1 登录记录查看 last :查看登录历史(读取/var/log/wtmp) lastb :查看登录失败的记录(读取/var/log/btmp) 4.2 暴力破解检测示例 5. Linux密码安全机制 5.1 密码加密方式 Linux使用crypt算法对密码进行加密,格式为: id :加密方法标识 1:MD5 2a:Blowfish 5:SHA-256 (glibc 2.7起) 6:SHA-512 (glibc 2.7起) salt :随机字符串([ a-zA-Z0-9./ ]组成,最多16位) encrypted :明文密码和随机salt通过散列函数生成的密文 5.2 不同算法的密文长度 | 算法 | 密文长度 | |------|----------| | MD5 | 22字符 | | SHA-256 | 43字符 | | SHA-512 | 86字符 | 6. 账户安全最佳实践 最小权限原则 :只赋予用户必要的权限 定期检查账户 :使用 pwck -s 检查账户完整性 监控登录记录 :定期检查/var/log/wtmp和/var/log/btmp 密码策略 : 设置密码过期时间 强制定期更换密码 设置密码复杂度要求 服务账户管理 : 为每个服务创建专用账户 设置这些账户为不可登录 不使用密码 sudo权限控制 :严格控制/etc/sudoers文件中的权限分配 7. 历史漏洞示例 CVE-2019-14287 : 影响1.8.28之前版本的sudo 攻击者可以通过此漏洞获取操作系统最高权限 解决方案:及时更新sudo到最新版本