操作系统安全基础:用户账户与密码策略

操作系统安全,说白了就是管好「门」和「钥匙」。门就是用户账户,钥匙就是密码。我做了这么多年运维,见过太多因为账户管理松懈导致的安全事故。今天咱们就把这块基础打牢。

一、用户账户管理——谁可以进系统?

每个操作系统都有两类核心账户:管理员和普通用户。Windows 叫 Administrator,Linux 叫 root。这两类账户的权限天差地别。

账户类型 Windows Linux 权限范围
超级管理员 Administrator root 完全控制系统,可执行任何操作
普通用户 User / Standard 普通账号 仅能操作自己的文件和程序
系统账户 SYSTEM / LOCAL SERVICE daemon / nobody 运行系统服务,不可交互登录
来宾账户 Guest nobody / guest 临时访问,权限极低
⚠ 重要提醒: 我见过不少团队直接拿 root 或 Administrator 日常办公。这是大忌!一旦被入侵,攻击者直接拿到最高权限。我个人习惯:管理员账号只用于系统维护,日常操作一律用普通账号 + sudo 提权。

二、Linux 用户管理实操

Linux 下用户管理,核心就几个命令。我带你过一遍最常用的。

2.1 创建与删除用户

# 创建用户,自动创建家目录
useradd -m zhangsan

# 设置密码
passwd zhangsan

# 删除用户,同时删除家目录和邮件池
userdel -r zhangsan

# 查看用户信息
id zhangsan
# 输出示例:uid=1001(zhangsan) gid=1001(zhangsan) groups=1001(zhangsan)
💡 我的经验: 创建用户时一定要加 -m 参数,否则没有家目录,用户登录后连文件都存不了。我曾经踩过这个坑,排查了半天才发现是家目录没创建。

2.2 用户组管理

用户组方便批量授权。比如开发团队需要访问某个目录,把他们都加到同一个组就行。

# 创建组
groupadd devteam

# 把用户加到组
usermod -aG devteam zhangsan

# 查看用户所属组
groups zhangsan
# 输出:zhangsan : zhangsan devteam

2.3 关键配置文件

Linux 用户信息存在三个文件里。我建议你记住它们的位置,排查问题时经常用到。

文件 作用 示例内容
/etc/passwd 用户账户信息 zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
/etc/shadow 加密密码与有效期 zhangsan:$6$salt$hash:18900:0:99999:7:::
/etc/group 用户组信息 devteam:x:1002:zhangsan,lisi
⚠ 注意: /etc/shadow 只有 root 能读。普通用户看不到密码哈希值。这是基本的安全设计,千万别手贱改权限。

三、Windows 用户管理实操

Windows 下我习惯用图形界面加命令行结合。图形界面适合单次操作,命令行适合批量管理。

3.1 图形界面操作

路径:计算机管理 → 本地用户和组。右键点击用户,可以新建、设置密码、禁用账户。操作很直观,我就不细说了。

3.2 命令行操作

Windows 的 net user 命令很强大。我经常用它批量创建账户。

# 创建用户
net user zhangsan P@ssw0rd /add

# 设置用户密码永不过期
net user zhangsan /expires:never

# 把用户加入管理员组
net localgroup Administrators zhangsan /add

# 查看所有用户
net user
💡 小技巧: 用 PowerShell 的 Get-LocalUser 和 New-LocalUser 更现代,支持更多参数。我最近的项目都改用 PowerShell 了。

四、密码策略配置——密码不是摆设

密码策略决定了密码的强度。你想想看,如果密码是 123456,那账户管理做得再好也没用。

4.1 Linux 密码策略

Linux 的密码策略在 /etc/login.defs 和 /etc/pam.d/ 里配置。我一般改这几个参数:

# /etc/login.defs 关键参数
PASS_MAX_DAYS   90      # 密码最长使用90天
PASS_MIN_DAYS   7       # 密码最短使用7天(防止频繁修改)
PASS_MIN_LEN    12      # 密码最小长度12位
PASS_WARN_AGE   7       # 过期前7天提醒

更严格的策略用 PAM 模块。比如要求密码包含大小写、数字、特殊字符:

# /etc/pam.d/common-password 添加
password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
📌 参数说明:
  • ucredit=-1:至少1个大写字母
  • lcredit=-1:至少1个小写字母
  • dcredit=-1:至少1个数字
  • ocredit=-1:至少1个特殊字符
  • retry=3:允许3次尝试机会

4.2 Windows 密码策略

Windows 的密码策略在「本地安全策略」里配置。路径:管理工具 → 本地安全策略 → 账户策略 → 密码策略。

策略项 推荐值 说明
密码必须符合复杂性要求 启用 要求大小写、数字、特殊字符
密码长度最小值 12 太短容易被暴力破解
密码最长使用期限 90天 定期更换降低泄露风险
强制密码历史 5个 不能重复使用最近5个密码
⚠ 避坑指南: 我曾经给一个客户配置了密码90天过期,结果他们 CEO 的密码到期后连续输错5次被锁了。后来我学乖了:对高管账户单独设置更长的过期时间,或者提前一周发邮件提醒。

五、账户锁定策略——防暴力破解

暴力破解就是不断试密码。账户锁定策略能直接阻断这种攻击。我见过一个服务器被暴力破解了三天,就是因为没开锁定策略。

5.1 Linux 账户锁定

Linux 用 pam_tally2 或 pam_faillock 模块。我推荐 pam_faillock,更现代。

# /etc/pam.d/system-auth 添加
auth required pam_faillock.so preauth audit silent deny=5 unlock_time=900
auth required pam_faillock.so authfail audit deny=5 unlock_time=900
account required pam_faillock.so

参数含义:

  • deny=5:连续输错5次锁定
  • unlock_time=900:锁定15分钟(900秒)
  • audit:记录审计日志

手动解锁用户:

# 查看失败记录
pam_faillock --user zhangsan --show

# 解锁用户
pam_faillock --user zhangsan --reset

5.2 Windows 账户锁定

Windows 的锁定策略也在「本地安全策略」里。路径:账户策略 → 账户锁定策略。

策略项 推荐值 说明
账户锁定阈值 5次无效登录 超过次数即锁定
账户锁定时间 15分钟 锁定后自动解锁
重置账户锁定计数器 15分钟 失败次数在15分钟后重置
💡 我的建议: 锁定时间别设太长。15分钟够用了。如果设成永久锁定,用户被锁了还得找管理员解锁,运维工作量会暴增。我之前的公司就因为这个,IT 部门每天要处理几十个解锁请求。

六、知识体系总览

下面这张图把本章的核心逻辑串起来了。你一看就明白:用户账户、密码策略、锁定策略三者怎么配合。

操作系统安全基础知识体系 操作系统安全基础:三大核心模块 操作系统安全基础 用户账户管理 密码策略配置 账户锁定策略 Linux 用户 Windows 用户 用户组管理 配置文件 密码复杂度 密码有效期 密码历史 PAM 模块 锁定阈值 锁定时间 失败计数器 手动解锁 三者配合:管好账户 → 设强密码 → 防暴力破解 缺少任何一环,系统安全都会出现短板
📌 核心要点回顾:
  • 用户账户: 区分管理员和普通用户,最小权限原则
  • 密码策略: 长度12位以上,包含大小写数字特殊字符,90天过期
  • 锁定策略: 5次失败锁定15分钟,防暴力破解
  • 日常检查: 定期审计账户列表,清理僵尸账户

嗯,操作系统安全基础就这些。你把这些配置落地到服务器上,基本的安全底线就守住了。下一块内容咱们会深入文件权限和访问控制,到时候再聊。