❝
大家好!我是一个热衷于分享IT技术的up主。在这个公众号里,我将为大家带来最新、最实用的技术干货,从编程语言到前沿科技,从软件开发到网络安全。希望通过我的分享,能够帮助更多的小伙伴提升技术水平,共同成长!欢迎关注,一起探索科技的魅力吧!
在Linux系统中,用户认证是确保系统安全的关键步骤。PAM(可插拔认证模块)为我们提供了一个非常灵活的框架,帮助我们管理各种服务的认证过程。其中,/etc/pam.d
目录是PAM配置的核心部分,这里存放了每个服务所需的认证规则文件。在这篇文章里,我们将一起探索 /etc/pam.d
的重要性,并学习如何通过调整这些文件来进一步增强系统的安全性。
什么是PAM?
PAM是一种模块化的认证机制,允许管理员自定义系统和服务的认证流程。PAM的设计特点包括:
-
灵活性: 各种认证功能通过模块实现,可以按需启用或禁用。 -
模块化: 不同服务可以共享通用模块,减少重复配置。 -
安全性: 支持多种安全策略,例如密码复杂性、多因素认证等。
/etc/pam.d的作用
/etc/pam.d
目录存放了PAM 的配置文件,每个文件对应一个服务或程序,例如 sshd
、sudo
、login
等。这些文件定义了服务的认证规则,包括密码验证、账户检查、会话管理等内容。
常见文件和用途
|
|
---|---|
login |
|
sshd |
|
sudo |
sudo 提升权限时的认证方式 |
common-auth |
|
common-password |
|
common-account |
|
common-session |
|
如下图是Ubuntu 20.04
的/etc/pam.d
目录下的文件:
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.soauth required pam_unix.soauth required pam_tally2.so deny=5 unlock_time=300account required pam_unix.sopassword required pam_unix.sosession required pam_limits.sosession optional pam_motd.sosession 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系统打造更加坚固的安全防线!
原文始发于微信公众号(攻城狮成长日记):打造更安全的Linux系统:玩转PAM配置文件
原文始发于微信公众号(攻城狮成长日记):打造更安全的Linux系统:玩转PAM配置文件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论