快捷搜索:

了解和配置 PAM

插入式验证模块(Pluggable Authentication Module,PAM)API 将公开一组功能,利用法度榜样法度榜样员可以应用这些功能来实现与安然性相关的功能,例如用户验证、数据加密、LDAP 等。在本文中,得到在 Linux 中应用 PAM 模块的基础指南,懂得若何设置设置设备摆设摆设 PAM,并懂得若何经由过程 10 个简单步骤设计样例 PAM 登录利用法度榜样。

对付 Linux 用户,安然地共享文件是一项麻烦的义务。例如,必要辛勤地回顾多个密码,并且从新设计系统造访利用法度榜样(如 login、su、password、ftp 等)十分消费光阴。增添这一繁杂度的是验证 历程,在该历程中,系统将识别用户并为该用户供给响应的造访节制。

PAM 的应用历史记录

PAM 是关注若作甚办事验证用户的 API。在应用 PAM 之前,诸如 login(和 rlogin、telnet、rsh)之类的利用法度榜样在 /etc/passwd 中查找用户名,然后将两者相对照并验证用户输入的名称。所有利用法度榜样应用了这些共享办事,然则并未共享实现细节和设置设置设备摆设摆设这些办事的权限。

接下来,利用法度榜样开拓职员考试测验编写自定义历程代码。在此历程中,必要分离利用法度榜样与安然模块(通用安然模块可以在利用法度榜样之间共享并且可以根据需求进行设置设置设备摆设摆设)。

PAM 机制将把多个初级别验证模式集成到高档别 API 中,该 API 将容许以自力于底层验证模式的要领编写应用验证的法度榜样。PAM 的主要特性体现为经由过程 /etc/pam.d 或 /etc/pam.conf 文件实现动态验证设置设置设备摆设摆设。

PAM 可以被设置设置设备摆设摆设为回绝某些法度榜样对用户进行验证,或者在某些法度榜样考试测验验证时发出警告。PAM 法度榜样将应用 PAM 模块(验证模块):这些模块在运行时与利用法度榜样绑定在一路才能事情。

图 1 显示了 PAM 模块的基础流程。

图 1. PAM 库将解析设置设置设备摆设摆设文件并将模块装入此中

哪些操作系统支持 PAM?

PAM 最初是由 Sun Microsystems 于 1995 年开拓的,并且以下操作系统版本(及更高版本)都供给支持:

●RedHat 5.0

●SUSE 6.2

●Debian 2.2

●Mandrake 5.2

●Caldera 1.3

●TurboLinux 3.6

最新版本的 Solaris™、AIX®、HP-UX 和 Mac OS® X 也支持 PAM。PAM 后来被标准化为 X/Open UNIX®标准化流程(在 X/Open 单点登录办事(XSSO)架构中)的一部分。

我可以得到哪种 PAM?

虽然没有进行严格划分,然则可以觉得有三种 PAM:

1.Linux-PAM:Linux-PAM 涵盖了本文中评论争论的所有 PAM。在任何一个 Linux 平台中的 PAM 的主要布局都类似于 Linux-PAM 版本。

2.OpenPAM:OpenPAM 是由 NAI 实验室的 Dag-Erling Smorgrav 开拓的另一个 PAM 实现,属于 DARPA-CHATS 钻研项目。因为它是开源的,是以它主要由 FreeBSD、NetBSD 及利用法度榜样(加上 Mac OS X)应用。

3.Java? PAM 或 JPam:PAM 主如果支持 Linux 和 UNIX 的标准验证模块。JPam 将 Java 部分与通俗 PAM 联系了起来。JPam 容许基于 Java 的利用法度榜样应用 PAM 模块或对象(如 auth、account、passwd、session 等)。它供给了 JAAS 和直接 API,并且支持大年夜多半 Unix OS 和架构。

虽然这些是不合的 PAM,然则其主要功能仍旧相同。

PAM 模块是什么样子的?

安装 PAM 是一个慢慢的历程。要得到安装阐明,请参阅 参考资料。

PAM 模块是按模块类型归类的。任何给定的模块至少要实现四种模块类型功能之一:

1.验证模块用于验证用户或设置/销毁凭据。

2.帐户治理模块将履行与造访、帐户及凭据有效期、密码限定/规则等有关的操作。

3.会话治理模块用于初始化和终止会话。

4.密码治理模块将履行与密码变动/更新有关的操作。

PAM 将供给不合的功能,例如单点登录验证、造访节制等。每个功能的实现都是由不合的模块处置惩罚的。下面是一些主要模块:

●pam_access 将应用登录名/域名,根据 /etc/security/access.conf 中的预定义规则交付日志守护进程样式的登录造访节制。

●pam_cracklib 将根据密码规则反省密码。

●pam_env sets/unsets 情况变量来自 /etc/security/pam_env_conf。

●pam_debug 将调试 PAM。

●pam_deny 将回绝 PAM 模块。

●pam_echo 将打印消息。

●pam_exec 将履行外部敕令。

●pam_ftp 是匿名造访模块。

●pam_localuser 要求将用户列于 /etc/passwd 中。

●pam_unix 将经由过程 /etc/passwd 供给传统密码验证。

还有许多其他模块(pam_userdb、pam_warn、pam_xauth),这些模块将获取返回的一组值(这些模块的具体信息可以在 参考资料 的 PAM 治理指南中找到)。

设置设置设备摆设摆设 PAM

PAM 设置设置设备摆设摆设平日是在 /etc/pam.d 或 /etc/pam.conf(用于旧版本)中的设置设置设备摆设摆设文件中实现的。

设置设置设备摆设摆设文件的布局

对付应用 PAM 的各项办事,目录中都有一个对应的文件,此中包孕该当若何获取该办事的验证及帐户信息的规则或阐明。平日每一行有一个规则。

PAM 设置设置设备摆设摆设文件中的字段包括:

●Service_name 将指定办事/利用法度榜样的名称(默认值为 OTHER)。

●Module_type 将为 Service_name 字段中的响应办事指定模块类型(auth/account/session/passwd)。

●Control_flag 将指定模块的客栈行径。它可以获取诸如 requisite、required、sufficient 和 optional 之类的值。

●Module_path 将指定实现模块的库工具的路径名称。默认环境下,它将被设为 /lib/security。

●Module_options/module_args(可选字段)将指定可以通报给办事模块的选项或实参。

模块将按照在设置设置设备摆设摆设文件中列出的顺序被调用,这取决于每个条款容许的 Control_flag 的值。Control_flag 值包括:

●Required:客栈中的所有 Required 模块必须看作一个成功的结果。假如一个或多个 Required 模块掉败,则实现客栈中的所有 Required 模块,然则将返回第一个差错。

●Sufficient:假如标记为 sufficient 的模块成功并且先前没有 Required 或 sufficient 模块掉败,则轻忽客栈中的所有另外模块并返回成功。

●Optional:假如客栈中没有一个模块是 required 并且没有任何一个 sufficient 模块成功,则办事/利用法度榜样至少要有一个 optional 模块成功。

PAM 设置设置设备摆设摆设文件示例

表 1 显示了各类操作系统中的 PAM 设置设置设备摆设摆设文件的一些示例。

表 1. PAM 设置设置设备摆设摆设文件的天下

系统

设置设置设备摆设摆设文件所在位置

类型

Control_flag

模块

Red Hat

/etc/pam.d

auth

required

/lib/security/pam_unix.so

Red Hat

/etc/pam.d

account

sufficient

/lib/security/pam_unix.so

Red Hat

/etc/pam.d

session

required

/lib/security/pam_limit.so

AIX

/etc/pam.conf

auth

required

/usr/lib/security/pam_aix

AIX

/etc/pam.conf

account

required

/usr/lib/security/pam_aix

AIX

/etc/pam.conf

password

required

/usr/lib/security/pam_aix

zSUSE 64-bit | 32-bit

/etc/pam.conf

auth

required

/lib64/security/pam_unix.so | /lib/security/pam_unix.so

zSUSE 64-bit | 32-bit

/etc/pam.conf

account

required

/lib64/security/pam_unix.so | /lib/security/pam_unix.so

zSUSE 64-bit | 32-bit

/etc/pam.conf

session

required

/lib64/security/pam_unix.so | /lib/security/pam_unix.so

Solaris

/etc/pam.conf

auth

required

/usr/lib/security/pam_unix.so.1

Solaris

/etc/pam.conf

account

required

/usr/lib/security/pam_unix.so.1

Solaris

/etc/pam.conf

password

required

/usr/lib/security/pam_unix.so.1

HP-UX

/etc/pam.conf

auth

required

libpam_unix.so.1

HP-UX

/etc/pam.conf

account

required

libpam_unix.so.1

HP-UX

/etc/pam.conf

password

required

libpam_unix.so.1PAM 的 “other” 文件

默认的 PAM 设置设置设备摆设摆设文件 /etc/pam.d 用于没有明确设置设置设备摆设摆设的所有其他办事,并且可能是 PAM 所依附的最简单而又最壮实的默认文件。该文件内部类似如下所示:

/etc/pam.d/other File

authrequiredpam_warn.so

authrequiredpam_deny.so

accountrequiredpam_warn.so

accountrequiredpam_deny.so

passwordrequiredpam_warn.so

passwordrequiredpam_deny.so

sessionrequiredpam_warn.so

sessionrequiredpam_deny.so

此文件异常简单。对付所有模块类型,Control_flag 都是一样的:required。调用两个模块:

1.首先,调用 pam_warn.so 来记录关于正在进行的考试测验的信息。

2.然后调用 pam_deny.so 仅返回差错并防止发生任何类型的连接或验证。

是以,应用 PAM 的所有办事都必须被明确设置设置设备摆设摆设为容许验证;否则,考试测验将掉败。

设计简单 PAM 登录利用法度榜样的 10 个步骤

这 10 个步骤可以赞助您实现自己的 PAM 利用法度榜样并赞助您懂得 PAM 会话的事情要领:

1.包括 PAM 实现的头文件(例如,pam_appl.h、pam_misc.h)。

2.在 main 函数中,应用惟一的句柄初始化 PAM 库 libpam.so(该库将装入利用法度榜样的设置设置设备摆设摆设文件中指定的模块)。

3.考试测验验证所有模块并处置惩罚掉败场景。

4.反省用户凭据和帐户具体信息。

5.打开一个新 PAM 会话。

6.为应用凭据的用户设置情况。

7.当用户完成时,取消用户情况。

8.关闭 PAM 会话。

9.从带有句柄值的 libpam.so 库中退出。

10.退出。

停止语

依附 PAM 来赞助把初级别验证事情变为更具有治理性的整体,这大年夜大年夜简化了这种安然机制。在本文中,您懂得了:

●基础的 PAM 架构

●若何设置设置设备摆设摆设 PAM 模块

●赞助理解事情道理的 PAM 登录利用法度榜样概述

现在您可以接着懂得应用 PAM 模块的更多高档主题 — 请从下面的 参考资料 开始……

参考资料:

linux/libs/pam/Linux-PAM-html/" cmImpressionSent="1">Linux-PAM 指南 将供给关于系统治理问题、模块编写和利用法度榜样开拓的文档。

这是来自 SUSE Linux Unofficial FAQ 的 PAM 不雅点。

假如必要进级,Gentoo 供给了一本 Linux-PAM 进级指南。

查看一下 X/Open Single Sign-on Service(XSSO)架构模型。

筹备好懂得应用 PAM 的更多高档主题了么?

“A comparison of security subsystems on AIX, Linux, and Solaris”(developerWorks,2005 年 10 月):先容 PAM 的事情道理。

“linux/l-mount-namespaces.html" cmImpressionSent="1">利用挂载名称空间”(developerWorks,2007 年 9 月):查看与 PAM 模块相关的部分。

“应用 OpenLDAP 集中治理用户帐号”(developerWorks,2006 年 5 月):查看 Linux 中的 PAM 若何与 LDAP 协作。

“应用多实例化前进安然性”(developerWorks,2008 年 2 月):应用插入式验证模块保护私稀有据。

“LPI 202 考试筹备,主题 210:收集客户端治理”(developerWorks,2006 年 5 月):设置设置设备摆设摆设 PAM 来支持验证。

“PAM configuration on SUSE Enterprise Linux 9”(Technote (IBM Tivoli Netcool/OMNIbus),2008 年 10 月):若何设置设置设备摆设摆设 PAM 模块以容许 ObjectServer 验证本地系统用户。

您可能还会对下面的文章感兴趣: