使用可插拔验证模块 (Pluggable Authentication Module, PAM) 框架,可以“插入”新的验证服务,而无需更改系统登录服务,例如 login、ftp 和 telnet。还可以使用 PAM 将 UNIX 登录与其他安全机制(如 Kerberos)进行集成。也可以使用此框架来“插入”帐户、凭证、会话以及口令管理的机制。
使用 PAM 框架,可以为用户验证配置系统登录服务(如 ftp、login、telnet 或 rsh)。PAM 提供的一些益处如下所示:
灵活的配置策略
按应用程序的验证策略
选择缺省验证机制的功能
在高安全性系统中要求提供多个口令的功能
易于最终用户使用
如果对于不同的验证服务口令都相同,则无需重新键入口令
可以提示用户输入多个验证服务的口令,而无需用户键入多个命令
可以将可选选项传送到用户验证服务
可以实现特定于站点的安全策略,而无需更改系统登录服务
PAM 软件由一个库、各种服务模块以及一个配置文件组成。其中还包括可利用这些 PAM 接口的 Solaris 命令或守护进程。
下图说明了系统登录应用程序、PAM 库、pam.conf 文件和 PAM 服务模块之间的关系。
系统登录应用程序(如 ftp、telnet 和 login)使用 PAM 库来调用配置策略。配置策略在 pam.conf 文件中定义。pam.conf 文件定义要使用的模块,以及每个应用程序使用这些模块的顺序。模块中的结果基于模块响应和已配置的控制标志。这些结果通过库传送回应用程序。
PAM 框架提供了一种使用堆叠借助多项服务来验证用户的方法。根据配置,系统可以提示用户输入每种验证方法的口令。验证服务的使用顺序通过 PAM 配置文件确定。
PAM 库可提供框架以装入相应模块和管理堆叠过程。PAM 库提供了一种可在其中插入所有模块的通用结构。有关更多信息,请参见 pam_sm(3PAM) 手册页。
Solaris 10 发行版对可插拔验证模块 (Pluggable Authentication Module, PAM) 框架做了以下更改:
现在,pam_authtok_check 模块允许使用 /etc/default/passwd 文件中的新可调参数执行严格的口令检查。这些新参数定义以下各项:
用逗号分隔的字典文件列表,这些字典文件用于检查口令中的常用字典字
新口令与旧口令之间所需的最小差别
新口令中必须用到的字母字符或非字母字符的最少个数
新口令中必须用到的大写字母或小写字母的最少个数
允许的连续重复字符的个数
pam_unix_auth 模块可针对本地用户实现帐户锁定。帐户锁定通过 /etc/security/policy.conf 中的 LOCK_AFTER_RETRIES 参数以及 /etc/user_attr 中的 lock_after-retries 密钥启用。有关更多信息,请参见 policy.conf(4) 和 user_attr(4) 手册页。
定义了一个新的 binding 控制标志。此控制标志在 pam.conf(4) 手册页和PAM 控制标志中进行了介绍。
pam_unix 模块已删除,并替换为一组等效或功能更强的服务模块。Solaris 9 发行版已引入其中的许多模块。替换模块列表如下:
pam_authtok_check
pam_authtok_get
pam_authtok_store
pam_dhkeys
pam_passwd_auth
pam_unix_account
pam_unix_auth
pam_unix_cred
pam_unix_session
pam_unix_auth 模块的功能已分解为两个模块。现在,pam_unix_auth 模块可以检验用户的口令是否正确。新的 pam_unix_cred 模块可提供建立用户凭证信息的功能。
对 pam_krb5 模块进行扩充是为了使用 PAM 框架来管理 Kerberos 凭证高速缓存。
添加了新的 pam_deny 模块。此模块可用于拒绝对服务的访问。缺省情况下,不使用 pam_deny 模块。有关更多信息,请参见 pam_deny(5) 手册页。