杀鸡焉用牛刀 发表于 2025-4-14 09:49:57

打造更安全的Linux体系:玩转PAM设置文件

在Linux体系中,用户认证是确保体系安全的关键步调。PAM(可插拔认证模块)为我们提供了一个非常灵活的框架,帮助我们管理各种服务的认证过程。其中,/etc/pam.d目录是PAM设置的核心部门,这里存放了每个服务所需的认证规则文件。在这篇文章里,我们将一起探索 /etc/pam.d的重要性,并学习如何通过调整这些文件来进一步增强体系的安全性。
https://i-blog.csdnimg.cn/img_convert/97de82f15661fab0e2d4941c2a2723cd.png
什么是PAM?

PAM是一种模块化的认证机制,允许管理员自定义体系和服务的认证流程。PAM的计划特点包罗:


[*]灵活性: 各种认证功能通过模块实现,可以按需启用或禁用。
[*]模块化: 差别服务可以共享通用模块,减少重复设置。
[*]安全性: 支持多种安全策略,例如暗码复杂性、多因素认证等。
/etc/pam.d的作用

/etc/pam.d目录存放了PAM 的设置文件,每个文件对应一个服务或程序,例如 sshd、sudo、login 等。这些文件定义了服务的认证规则,包罗暗码验证、账户查抄、会话管理等内容。
常见文件和用途

文件名功能形貌login控制通过终端登录的认证方式sshd控制SSH服务的认证方式sudo控制使用 sudo提升权限时的认证方式common-auth通用的身份验证模块,很多服务会引用它common-password通用的暗码规则模块,定义暗码策略common-account通用的账户管理模块,定义账户权限相关规则common-session通用的会话管理模块,定义会话生命周期规则 如下图是Ubuntu 20.04的/etc/pam.d目录下的文件:
https://i-blog.csdnimg.cn/img_convert/5b98f1bf297552ecaed0e05a06d68b8f.png
PAM设置文件结构

每个 /etc/pam.d 设置文件由多行规则组成,格式如下:
模块类型控制标志模块路径模块参数
字段表明


[*] 模块类型

[*] auth:认证规则,如暗码验证。
[*] account:账户管理规则,如账户锁定查抄。
[*] password:暗码管理规则,如暗码复杂性要求。
[*] session:会话管理规则,如资源限制或登录记录。

[*] 控制标志

[*] required:必须成功,失败不会立即停止,但终极结果会失败。
[*] requisite:必须成功,失败会立即停止认证。
[*] sufficient:成功则认证通过,后续模块不再执行。
[*] optional:成功或失败对整体认证无影响。

[*] 模块路径 通常为 /lib/security/ 或 /usr/lib/security/ 下的PAM模块文件。
[*] 模块参数 用于定义模块的具体行为。
示例设置:/etc/pam.d/sshd

以下是一个典型的 sshd 设置文件:
auth       required   pam_env.so
auth       required   pam_unix.so
auth       required   pam_tally2.so deny=5 unlock_time=300
account    required   pam_unix.so
password   required   pam_unix.so
session    required   pam_limits.so
session    optional   pam_motd.so
session    required   pam_unix.so
设置解读



[*] pam_env.so:加载用户情况变量。
[*] pam_unix.so:使用传统的UNIX暗码验证。
[*] pam_tally2.so:限制登录失败次数(如连续 5 次失败锁定账户5分钟)。
[*] pam_limits.so:加载体系资源限制。
[*] pam_motd.so:显示登录时的消息。
如何增强体系安全性?

通过合理设置 /etc/pam.d 文件,可以明显提升体系安全性。以下是一些推荐的实践:
1. 限制登录失败次数

使用 pam_tally2 模块限制登录失败次数,防止暴力破解。
auth required pam_tally2.so deny=5 unlock_time=300


[*] deny=5:连续失败5次后锁定账户。
[*] unlock_time=300:5分钟后自动解锁。
2. 逼迫暗码复杂性

使用 pam_pwquality 模块逼迫暗码复杂性要求。
password requisite pam_pwquality.so retry=3 minlen=12 difok=4


[*] retry=3:用户有3次时机输入合格暗码。
[*] minlen=12:暗码至少12个字符。
[*] difok=4:新暗码与旧暗码至少有4个字符差别。
还有一些其他比力少用的参数:


[*] dcredit=N:定义用户暗码中必须包罗多少个数字;
[*] ucredit=N:定义用户暗码中必须包罗多少个大写字母;
[*] lcredit=N:定义用户暗码中必须包罗多少个小些字母;
[*] ocredit=N:定义用户暗码中必须包罗多少个特别字符(除数字、字母之外)
3. 限制资源使用

通过 pam_limits.so 限制用户的体系资源使用,防止资源滥用。
session required pam_limits.so
结合 /etc/security/limits.conf 文件,可以设置用户的最大文件数、进程数等。
4. 显示告诫信息

通过 pam_motd.so 显示登录告诫或公告信息。
session optional pam_motd.so
将告诫信息写入/etc/motd,如:
Unauthorized access is prohibited.
排查 PAM 设置题目

错误的PAM设置大概导致用户无法登录或服务非常。以下是一些排查建议:

[*]查抄日志文件PAM的错误信息会记录在 /var/log/auth.log 或 /var/log/secure中。
tail -f /var/log/auth.log

[*]使用调试模式 某些服务支持调试模式,可以输出具体的 PAM 调用信息。例如:
sshd -ddd

[*]备份设置文件 在修改 /etc/pam.d 文件之前,务必先备份原始文件。
cp /etc/pam.d/sshd /etc/pam.d/sshd.bak
总结

/etc/pam.d 是Linux体系认证的核心,通过合理设置这些文件,可以有用提升体系的安全性和可控性。从限制登录失败次数到逼迫暗码复杂性,PAM提供了丰富的功能来掩护体系。希望本文能帮助你把握 /etc/pam.d 的设置技巧,为你的Linux体系打造更加坚固的安全防线!
推荐阅读



[*]Ansible实战:如何正确选择command和shell模块?
[*]运维效率倍增!Ansible Copy 模块必知必会操作
[*]如何在Ansible中轻松实现复杂SSH跳转?这个参数搞定
[*]Ansible Setup模块实战,如何使用Setup模块收集主机信息
[*]从入门到精通:Ansible Shell 模块的应用与最佳实践
[*]深入了解Ansible设置与主机清单:轻松管理自动化使命

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 打造更安全的Linux体系:玩转PAM设置文件