Linux云计算系统安全:PAM

Linux云计算系统安全:PAM

Linux云计算系统安全:PAM

常用 PAM 模块详解

1. pam_rootok.so

功能:检查当前用户是否为 root 用户

配置示例

# /etc/pam.d/su
auth sufficient pam_rootok.so

应用场景:允许 root 用户无需密码切换到其他用户

2. pam_access.so

功能:基于用户名、IP 地址等控制访问

配置示例

# /etc/pam.d/sshd
auth required pam_access.so accessfile=/etc/security/access.conf

访问规则示例(/etc/security/access.conf):

# 允许 admin 组从内部网络登录
+ : @admin : 192.168.1.0/24
# 拒绝所有其他访问
- : ALL : ALL

3. pam_listfile.so

功能:基于文件列表控制访问(黑白名单)

配置示例

# 只允许特定用户 SSH 登录
auth required pam_listfile.so \
    item=user sense=allow file=/etc/ssh/users.allow onerr=fail

4. pam_time.so

功能:基于时间控制访问权限

配置示例

# /etc/pam.d/sshd
auth required pam_time.so

时间规则示例(/etc/security/time.conf):

# 只允许工作时间登录
sshd ; * ; @employees ; Wk0900-1800

5. pam_tally2.so
功能:防止暴力破解,账户锁定

配置示例:

# 5次失败后锁定10分钟
auth required pam_tally2.so deny=5 unlock_time=600
管理命令:

# 查看失败次数
pam_tally2 --user=username

# 重置计数器
pam_tally2 --user=username --reset
6. pam_limits.so
功能:限制用户资源使用

配置示例:

# /etc/pam.d/sshd
session required pam_limits.so
资源限制示例(/etc/security/limits.conf):

# 限制用户最多100个进程和1024个文件
* soft nproc 100
* hard nproc 200
* soft nofile 1024
* hard nofile 2048
实战案例
案例1:SSH 安全加固
# /etc/pam.d/sshd
# IP访问控制
auth required pam_access.so accessfile=/etc/security/access.conf

# 防止暴力破解
auth required pam_tally2.so deny=5 unlock_time=600

# 标准认证
auth include password-auth

# 资源限制
session required pam_limits.so
案例2:密码策略强化
# /etc/pam.d/system-auth
# 密码复杂度要求
password required pam_pwquality.so minlen=12 dcredit=-1 ucredit=-1 ocredit=-1

# 密码历史记录
password required pam_pwhistory.so remember=5

# 密码过期策略
password required pam_unix.so use_authtok sha512 shadow try_first_pass
Cgroups 资源限制
CPU 限制示例
# 创建cgroup
mkdir /sys/fs/cgroup/cpu/myapp

# 设置CPU限制(50% CPU)
echo 50000 > /sys/fs/cgroup/cpu/myapp/cpu.cfs_quota_us
echo 100000 > /sys/fs/cgroup/cpu/myapp/cpu.cfs_period_us

# 添加进程到cgroup
echo $PID > /sys/fs/cgroup/cpu/myapp/tasks
内存限制示例
# 创建cgroup
mkdir /sys/fs/cgroup/memory/myapp

# 设置内存限制(512MB)
echo 512M > /sys/fs/cgroup/memory/myapp/memory.limit_in_bytes

# 添加进程到cgroup
echo $PID > /sys/fs/cgroup/memory/myapp/tasks
最佳实践与注意事项
测试配置:修改 PAM 配置前先测试,避免被锁 outside

备份配置:重要修改前备份原始配置文件

日志监控:定期检查 /var/log/secure 和 /var/log/auth.log

最小权限:遵循最小权限原则配置访问控制

定期审查:定期审查 PAM 配置和访问规则

故障排除
认证失败:检查 PAM 配置语法和模块路径

性能问题:优化模块加载顺序,减少不必要的模块

权限问题:确保配置文件权限正确(通常为 644)

通过合理配置 PAM 和 Cgroups,可以显著提升 Linux 系统的安全性和稳定性,实现细粒度的访问控制和资源管理

阅读剩余
THE END