在等保三级系统中,身份鉴别作为安全防护的第一道防线,其重要性不言而喻。根据《信息安全技术网络安全等级保护基本要求》(GB/T 22239-2019)中应用安全层面的身份鉴别要求,我们需要重点关注以下五个核心指标:
唯一性标识:系统必须为每个用户分配唯一的身份标识,这个标识在系统生命周期内不得重复使用。在实际操作中,我们通常使用UID(User ID)作为唯一标识,而非简单的用户名。
口令复杂度:
口令时效性:系统需要强制用户定期更换口令,并提前进行更换提醒。通常设置:
口令存储安全:绝对禁止明文存储口令,必须使用不可逆的哈希算法存储。现代Linux系统默认使用SHA-512加密(在/etc/shadow中以$6$开头)。
特别注意:等保2.0新规要求,对于三级系统,建议使用更安全的加密算法如PBKDF2或bcrypt,而非传统的MD5或DES加密。
在Linux系统中,用户唯一性通过UID实现。验证步骤:
bash复制# 检查重复UID(可能存在的配置风险)
awk -F: '{print $3}' /etc/passwd | sort | uniq -d
若输出结果为空,则表示所有用户UID唯一。若发现重复UID,必须立即处理,因为:
/etc/login.defs是Linux用户创建的默认策略文件,关键参数说明:
| 参数 | 建议值 | 说明 |
|---|---|---|
| PASS_MAX_DAYS | 90 | 密码最大有效期(天) |
| PASS_MIN_DAYS | 1 | 密码最短使用期限(防止频繁更改) |
| PASS_MIN_LEN | 10 | 密码最小长度(等保三级要求) |
| PASS_WARN_AGE | 7 | 密码过期前警告天数 |
配置示例:
code复制PASS_MAX_DAYS 90
PASS_MIN_DAYS 1
PASS_MIN_LEN 10
PASS_WARN_AGE 7
重要提示:这些设置仅对新创建用户有效!已有用户需使用
chage命令修改。
默认的login.defs无法满足复杂密码要求,需安装并配置PAM(Pluggable Authentication Modules):
bash复制apt install libpam-cracklib
/etc/pam.d/common-password,添加:code复制password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
参数说明:
retry=3:允许3次重试minlen=10:最小长度10位difok=3:新密码至少3个字符与旧密码不同ucredit=-1:至少1个大写字母lcredit=-1:至少1个小写字母dcredit=-1:至少1个数字ocredit=-1:至少1个特殊字符空口令是严重的安全隐患,必须定期审计:
bash复制awk -F ":" '($2==""){print $1}' /etc/shadow
若发现空口令账户,应立即处理:
passwd -l 用户名passwd 用户名检查现有密码哈希算法:
bash复制awk -F: '{print $1,$2}' /etc/shadow | grep -v ':\*\|:\!'
哈希算法标识:
$1$:MD5(不安全)$5$:SHA-256$6$:SHA-512(推荐)$y$:yescrypt(更新更安全)升级方法:
bash复制# 修改加密算法为SHA-512
authconfig --passalgo=sha512 --update
# 强制用户下次登录时更改密码
chage -d 0 用户名
对于已存在用户,使用chage命令强制策略:
bash复制# 设置密码90天过期
chage -M 90 用户名
# 设置最小更改间隔1天
chage -m 1 用户名
# 过期前7天提醒
chage -W 7 用户名
批量修改所有用户:
bash复制for user in $(cut -d: -f1 /etc/passwd); do
chage -M 90 $user
chage -m 1 $user
chage -W 7 $user
done
配置登录失败锁定策略(编辑/etc/pam.d/common-auth):
code复制auth required pam_tally2.so deny=5 unlock_time=900 onerr=fail
解释:
deny=5:5次失败后锁定unlock_time=900:锁定15分钟(秒为单位)onerr=fail:出错时拒绝访问查看失败记录:
bash复制pam_tally2 --user=用户名
解锁账户:
bash复制pam_tally2 --user=用户名 --reset
编辑/etc/ssh/sshd_config增加:
code复制PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
重启SSH服务:
bash复制systemctl restart sshd
为确保完全符合等保三级要求,建议执行以下检查:
唯一性检查
口令策略检查
存储安全检查
/etc/shadow权限为640登录控制检查
审计检查
在实际等保测评中,测评机构通常会使用专用工具扫描系统配置,并人工核查上述项目的符合性。建议在测评前使用OpenSCAP等工具进行自评估:
bash复制oscap eval --profile xccdf_org.ssgproject.content_profile_stig-rhel7-disa /usr/share/xml/scap/ssg/content/ssg-rhel7-ds.xml
我在实际等保整改项目中发现,很多系统虽然配置了密码复杂度要求,但通过chage -l检查时发现部分服务账户密码永不过期。这种情况下,建议专门建立服务账户管理规范,对这些账户采用更严格的访问控制,而非简单地放宽密码策略。