PAM
PAM(Pluggable Authentication Modules,可插入式身份验证模块)是一个灵活的身份验证系统,允许我们通过配置和组合各种模块来实现不同的身份验证策略。
在 Linux 或类 Unix 系统中,常见的 PAM 模块包括以下几种类型:
-
认证模块(Authentication Modules):
- 用于验证用户的身份,通常基于密码、密钥、证书、生物特征等。常见的认证模块包括:
pam_unix
:基于传统的用户名和密码进行认证。pam_ldap
:与 LDAP 目录服务器进行身份验证。pam_ssh
:基于 SSH 密钥进行身份验证。pam_radius
:通过 RADIUS 服务器进行身份验证。pam_google_authenticator
:实现双因素认证。
- 用于验证用户的身份,通常基于密码、密钥、证书、生物特征等。常见的认证模块包括:
-
账户管理模块(Account Management Modules):
- 用于管理用户账户的状态,包括锁定、过期、禁止登录等。常见的账户管理模块包括:
pam_unix
:管理用户密码的过期、锁定等状态。pam_access
:基于访问控制列表 (ACL) 控制用户对系统资源的访问权限。pam_time
:根据时间限制用户的登录。
- 用于管理用户账户的状态,包括锁定、过期、禁止登录等。常见的账户管理模块包括:
-
密码管理模块(Password Management Modules):
- 用于管理用户密码的策略,包括密码长度、复杂度要求、历史密码检查等。常见的密码管理模块包括:
pam_pwquality
:实现密码质量检查,如密码长度、字符类型等。pam_cracklib
:使用 CrackLib 库检查密码的复杂度。pam_unix
:提供基本的密码管理功能,如修改密码、历史密码检查等。
- 用于管理用户密码的策略,包括密码长度、复杂度要求、历史密码检查等。常见的密码管理模块包括:
-
会话管理模块(Session Management Modules):
- 用于管理用户会话的操作,如记录登录信息、设置环境变量等。常见的会话管理模块包括:
pam_limits
:设置用户资源限制,如进程数、文件打开数等。pam_env
:设置用户会话的环境变量。pam_lastlog
:记录用户上次登录信息。
- 用于管理用户会话的操作,如记录登录信息、设置环境变量等。常见的会话管理模块包括:
-
模块控制模块(Module Control Modules):
- 用于控制 PAM 模块的行为和执行顺序。常见的模块控制模块包括:
pam_stack
:允许管理员创建自定义的 PAM 堆栈。
- 用于控制 PAM 模块的行为和执行顺序。常见的模块控制模块包括:
以上只是一些常见的 PAM 模块,实际还有许多其他模块可用于不同的身份验证需求。
账号安全
Linux系统的账户安全是保护系统免受未授权访问和潜在威胁的关键方面。
-
使用强密码:
- 强制使用包含字母、数字和特殊字符的复杂密码。
- 使用密码策略工具如
pam_pwquality
来限制密码的长度、字典单词等。
-
限制Root用户:
- 避免直接使用
root
账户登录,而是使用普通用户再切换到root
。 - 禁用直接
root
远程登录。 - 配置
sudo
权限,只允许授权用户执行必要的管理员任务。
- 避免直接使用
-
用户账户管理:
- 禁用不必要的用户账户。
- 定期审查用户账户,禁用不再需要的账户。
- 设置用户账户过期时间,定期强制用户更改密码。
-
SSH 安全配置:
- 禁用不安全的SSH协议版本,仅使用SSHv2。
- 配置SSH服务,限制允许登录的用户。
- 使用SSH密钥身份验证,禁用密码身份验证(如果可能)。
-
PAM (Pluggable Authentication Modules) 配置:
- 使用PAM来实现更强大的身份验证和授权。
- 配置PAM以限制登录尝试次数并锁定账户。
- 强制使用
pam_tally
或pam_faillock
等模块来检测和阻止恶意登录尝试。
-
系统账户:
- 禁用不必要的系统账户。
- 将系统账户的登录Shell设置为
/sbin/nologin
或/bin/false
。
-
Auditd 配置:
- 启用审计功能以监视系统活动。
- 配置
auditd
以记录关键系统事件,如登录、权限变更等。
-
SELinux (Security-Enhanced Linux):
- 启用SELinux以提供强制访问控制和更强大的安全策略。
- 配置SELinux策略以适应您的应用程序和服务。
-
限制 su 和 sudo 权限:
- 限制
su
命令的使用,仅允许授权用户切换到其他用户。 - 配置
sudo
以限制哪些用户可以执行哪些命令,避免不必要的特权。
- 限制
-
定期审计和监控:
- 定期审计系统日志以检测异常活动。
- 使用监控工具(如
tripwire
)来检测系统文件的变化。
-
禁用不必要的服务:
- 禁用系统上不必要的网络服务和端口。
- 定期审查和关闭未使用的服务。
-
更新和补丁管理:
- 定期更新系统和软件包,确保安装最新的安全补丁。
- 使用自动化工具(如
unattended-upgrades
)来自动安装安全更新。
措施
限制账号安全的配置涉及很多步骤,包括密码策略、访问控制、身份验证、日志和监控等。
-
强化密码策略:
- 修改
/etc/security/pwquality.conf
或/etc/security/pwquality.conf
文件来配置密码质量要求。 - 使用
pam_pwquality
模块来限制密码长度、包含字符类型和禁用字典单词。
- 修改
-
限制账号登录:
- 编辑
/etc/security/access.conf
文件,使用pam_access
模块限制用户登录。 - 在
/etc/ssh/sshd_config
中配置AllowUsers
或DenyUsers
以限制SSH登录。
- 编辑
-
账号锁定和登录尝试限制:
- 使用
pam_tally2
或pam_faillock
模块配置账户锁定。 - 在
/etc/security/faillock.conf
中配置账户锁定的参数,如尝试次数和锁定时长。 - 配置
/etc/pam.d/system-auth
文件以添加auth required pam_tally2.so
行。
- 使用
-
限制 su 和 sudo 权限:
- 修改
/etc/pam.d/su
文件,限制哪些用户可以使用su
命令。 - 编辑
/etc/sudoers
文件,使用sudo
命令配置特权用户和命令。
- 修改
-
启用 SELinux:
- 启用 SELinux 并配置强制访问控制。
- 使用
semanage
和setsebool
命令配置 SELinux 策略。
-
审计和监控:
- 启用
auditd
审计框架。 - 在
/etc/audit/auditd.conf
中配置审计参数。 - 编辑
/etc/pam.d/system-auth
,添加 `session required pam_tty_audit.so enable=*" 行,启用终端审计。
- 启用
-
定期审查用户账户:
- 定期检查并禁用不再需要的用户账户。
- 使用
usermod
命令修改账户属性,如锁定或设置过期日期。
-
启用登录二因素身份验证:
- 配置
pam_google_authenticator
或其他二因素身份验证方法。 - 在
/etc/pam.d/sshd
中添加auth required pam_google_authenticator.so
行。
- 配置
-
限制 shell 访问:
- 在
/etc/passwd
中设置不常用账户的 Shell 为/sbin/nologin
或/bin/false
。 - 编辑
/etc/shells
文件,移除不需要的 shell。
- 在
-
定期修改密码:
- 在
/etc/login.defs
中设置密码最大寿命(PASS_MAX_DAYS
)和密码最小寿命(PASS_MIN_DAYS
)。 - 使用
chage
命令设置密码策略,如chage -M 90 -m 7 -W 7 username
。
- 在
-
使用账号管理工具:
- 使用账号管理工具(如
useradd
、usermod
、userdel
)进行账户管理,以确保正确的权限和配置。
- 使用账号管理工具(如
-
定期审查日志:
- 定期审查系统和应用程序日志,查找异常活动和潜在的安全问题。
- 使用工具(如
logwatch
)自动化日志审查过程。
Ending