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
字段说明:
- 账号:用户名,不能为空,不能包含大写字母
- 密码:通常为"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个字段,用冒号(":")分隔:
组名:密码:组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. 账户安全最佳实践
- 最小权限原则:只赋予用户必要的权限
- 定期检查账户:使用
pwck -s检查账户完整性 - 监控登录记录:定期检查/var/log/wtmp和/var/log/btmp
- 密码策略:
- 设置密码过期时间
- 强制定期更换密码
- 设置密码复杂度要求
- 服务账户管理:
- 为每个服务创建专用账户
- 设置这些账户为不可登录
- 不使用密码
- sudo权限控制:严格控制/etc/sudoers文件中的权限分配
7. 历史漏洞示例
CVE-2019-14287:
- 影响1.8.28之前版本的sudo
- 攻击者可以通过此漏洞获取操作系统最高权限
- 解决方案:及时更新sudo到最新版本