《安全配置基线标准应用》
第4章 操作系统基线-Linux

4. 操作系统基线-Linux:用户权限管理、SSH安全配置、PAM模块配置

在Linux操作系统的安全基线建设中,用户权限管理、SSH安全配置与PAM模块配置是三大核心支柱。用户权限管理确保最小特权原则得以落地;SSH作为远程管理的生命线,其安全配置直接决定系统边界防护能力;PAM(可插拔认证模块)则提供了灵活的认证框架,是账户安全策略的“守门人”。本节将深入剖析这三项关键配置的标准与最佳实践。

4.1 用户权限管理

核心原则:最小权限、职责分离、默认拒绝。

4.1.1 用户与组管理基线

检查项 安全基线要求 验证命令
UID 0 用户 仅允许 root 用户 UID=0 awk -F: '($3==0){print $1}' /etc/passwd
空口令账户 禁止存在空口令账户 awk -F: '($2==""){print $1}' /etc/shadow
sudo 权限 精细化授权,避免 ALL=(ALL) ALL visudo -c && cat /etc/sudoers
闲置账户 定期清理90天未登录账户 lastlog -b 90

4.1.2 文件权限与特殊属性

  • SUID/SGID 排查:查找并移除不必要的 SUID 文件 find / -perm /4000 -type f
  • 粘滞位设置:/tmp 目录必须设置粘滞位 chmod +t /tmp
  • umask 策略:全局 umask 设置为 027,确保新建文件默认权限安全
用户账户审计 UID/GID 检查 空口令扫描 闲置账户清理 权限策略实施 最小权限原则 SUID/SGID 管控 umask 策略 特权管理 sudo 精细化授权 角色分离 操作审计 用户权限管理三阶段模型

4.2 SSH安全配置

SSH 是远程管理的“大门”,安全配置至关重要。

4.2.1 核心配置项(/etc/ssh/sshd_config)

# 禁止 root 直接登录
PermitRootLogin no

# 仅允许特定用户组登录
AllowGroups sshusers

# 禁用密码认证,强制使用密钥
PasswordAuthentication no
PubkeyAuthentication yes

# 修改默认端口(非22)
Port 2222

# 限制最大认证尝试次数
MaxAuthTries 3

# 空闲超时断开
ClientAliveInterval 300
ClientAliveCountMax 0

# 禁用不安全的协议版本
Protocol 2

4.2.2 密钥管理与轮换策略

  • 密钥算法:优先使用 Ed25519,其次 RSA (4096位以上)
  • 密钥轮换:每180天更换一次主机密钥和用户密钥
  • known_hosts 管理:启用 StrictHostKeyChecking yes
  • SSH 代理转发:默认禁用 AllowAgentForwarding no
SSH 客户端 私钥认证 加密通道 防火墙 端口过滤 IP 白名单 SSH 服务端 ✓ 密钥认证强制 ✓ 端口非标 ✓ 登录限制 ✓ 会话超时 🔒 SSH 安全连接架构 · 端到端加密与访问控制

4.3 PAM模块配置

PAM(Pluggable Authentication Modules)提供灵活的认证机制,是账户安全的“策略引擎”。

4.3.1 PAM 配置结构

PAM 配置文件位于 /etc/pam.d/ 目录,每个服务对应一个文件。配置语法格式:

# 类型    控制标志    模块路径    参数
auth      required    pam_unix.so     nullok_secure
auth      requisite   pam_succeed_if.so uid >= 1000 quiet
account   required    pam_unix.so
password  required    pam_pwhistory.so remember=5
password  required    pam_cracklib.so minlen=12 dcredit=-1 ucredit=-1
session   required    pam_limits.so

4.3.2 关键安全配置项

模块 功能 推荐配置
pam_cracklib.so 密码复杂度检查 minlen=12, dcredit=-1, ucredit=-1, lcredit=-1
pam_tally2.so 登录失败锁定 deny=5, unlock_time=900, even_deny_root
pam_pwhistory.so 密码历史记录 remember=5, enforce_for_root
pam_limits.so 资源限制 启用 /etc/security/limits.conf 配置

4.3.3 账户锁定策略示例

# /etc/pam.d/system-auth 中添加
auth        required    pam_tally2.so deny=5 unlock_time=900 even_deny_root
account     required    pam_tally2.so

# 查看锁定状态
pam_tally2 --user=username

# 手动解锁
pam_tally2 --user=username --reset
用户请求 PAM 框架 认证/账户/密码/会话 pam_tally2.so pam_cracklib.so pam_pwhistory.so 允许 拒绝 锁定 PAM 模块认证决策流程 · 多因子安全策略

4.4 综合检查脚本示例

以下脚本可用于快速检查 Linux 系统在用户权限、SSH 和 PAM 方面的安全基线合规情况:

#!/bin/bash
# Linux 安全基线检查脚本(用户权限 + SSH + PAM)

echo "===== 用户权限检查 ====="
echo "UID 0 用户:"
awk -F: '($3==0){print $1}' /etc/passwd
echo "空口令账户:"
awk -F: '($2==""){print $1}' /etc/shadow 2>/dev/null
echo "SUID 文件列表:"
find / -perm /4000 -type f 2>/dev/null

echo -e "\n===== SSH 安全配置 ====="
grep -E "^(PermitRootLogin|PasswordAuthentication|Port)" /etc/ssh/sshd_config

echo -e "\n===== PAM 密码策略 ====="
grep -E "pam_cracklib|pam_pwhistory|pam_tally2" /etc/pam.d/system-auth 2>/dev/null || \
grep -E "pam_cracklib|pam_pwhistory|pam_tally2" /etc/pam.d/common-password 2>/dev/null

echo -e "\n检查完成。"

📌 核心要点:用户权限管理是基础,SSH 配置是防线,PAM 模块是策略引擎。三者联动构建 Linux 系统的纵深防御体系。