Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1316278
  • 博文数量: 554
  • 博客积分: 10425
  • 博客等级: 上将
  • 技术积分: 7555
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-09 09:49
文章分类

全部博文(554)

文章存档

2012年(1)

2011年(1)

2009年(8)

2008年(544)

分类:

2008-04-10 16:02:54


PAM(任务)
第16 章• 使用PAM 299
任务说明参考
添加新的PAM模块。有时,必须写入并安装特定于站点的模块,以满
足通用软件不包括的要求。此过程说明如何安装
这些新的PAM模块。
第300 页中的“如何添加PAM模块

阻止访问~/.rhosts。通过阻止访问~/.rhosts 来进一步提高安全性。第301 页中的“如何使用PAM防止
从远程系统进行Rhost 样式的访问

启动错误日志。通过syslog 启动PAM错误消息日志。第301 页中的“如何记录PAM错误
报告”
规划PAM实现
所提供的pam.conf 配置文件可实现标准的Solaris 安全策略。此策略应适用于许多情况。如
果需要实现其他安全策略,则应考虑以下问题:
 确定需求,特别是应选择的PAM服务模块。
 标识需要特殊配置选项的服务。使用other(如果适用)。
 决定运行模块的顺序。
 选择每个模块的控制标志。有关所有控制标志的更多信息,请参见第303 页中的“PAM
控制标志”。
 选择每个模块必需的所有选项。每个模块的手册页应列出所有的特殊选项。
以下是更改PAM配置文件之前要考虑的一些建议:
 对每种模块类型使用other 项,以便/etc/pam.conf 中不必包括每个应用程序。
 确保考虑binding、sufficient 和optional 控制标志所涉及的安全问题。
 查看与模块关联的手册页。这些手册页有助于您了解每个模块的工作方式、可用的选
项,以及堆叠模块之间的交互。
注意– 如果PAM配置文件配置错误或者被损坏,则可能没有用户能登录。由于sulogin
命令不使用PAM,因此,需要超级用户口令才能将计算机引导至单用户模式并修复问
题。
更改/etc/pam.conf 文件之后,在您仍具有系统访问权限的情况下,尽可能多地检查此
文件以更正问题。对更改可能影响到的所有命令进行测试。例如,向telnet 服务中添加
新模块。在此示例中,将使用telnet 命令并检验所做更改是否使服务按预期方式运行。
 如何添加PAM模块
此过程说明如何添加新的PAM模块。可以创建新模块以提供特定于站点的安全策略或支持
第三方应用程序。
PAM(任务)
300 系统管理指南:安全性服务• 2006 年9 月
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见第186 页中的“配置
RBAC(任务列表)”。
确定应使用的控制标志和其他选项。
有关模块的信息,请参阅第304 页中的“PAM模块”。
确保设置了拥有权和权限,以便模块文件由root 拥有,并且权限为555。
编辑PAM配置文件/etc/pam.conf,并将此模块添加到相应的服务中。
检验是否正确添加了模块。
必须在重新引导系统之前进行测试,以防此配置文件配置错误。在重新引导系统之前,使
用直接服务(例如rlogin 或telnet )登录,并运行su 命令。此服务可能是引导系统时仅
产生一次的守护进程。因此,必须先重新引导系统,然后才能检验是否已添加模块。
 如何使用PAM防止从远程系统进行Rhost 样式的访

成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见第186 页中的“配置
RBAC(任务列表)”。
从PAM配置文件中删除所有包括rhosts_auth.so.1 的行。
此步骤用于防止在rlogin 会话期间读取~/.rhosts 文件。因此,此步骤可防止从远程系统
对本地系统进行未经验证的访问。无论~/.rhosts 或/etc/hosts.equiv 文件是否存在或包含
什么内容,所有rlogin 访问都需要口令。
禁用rsh 服务。
要防止对~/.rhosts 文件进行其他未经验证的访问,请记住要禁用rsh 服务。
# svcadm disable network/shell
 如何记录PAM错误报告
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见第186 页中的“配置
RBAC(任务列表)”。
为所需的日志级别配置/etc/syslog.conf 文件。
有关日志级别的更多信息,请参见syslog.conf(4)。
1
2
3
4
5
1
2
3
1
2
PAM(任务)
第16 章• 使用PAM 301
刷新syslog 守护进程的配置信息。
# svcadm refresh system/system-log
PAM配置文件(参考)
PAM配置文件pam.conf 确定要使用的验证服务模块,以及这些模块的使用顺序。可以修改
此文件来为每个系统登录应用程序选择验证模块。
PAM配置文件语法
PAM配置文件所包含项的语法如下:
service-name module-type control-flag module-path module-options
service-name 系统登录服务的名称,例如ftp 、login、telnet。
module-type 服务的模块类型。有关更多信息,请参见第302 页中的“PAM模块类型
”。
control-flag 确定模块的延续行为或失败行为。
module-path 指定实现安全策略的库对象的路径。
module-options 指定传送到服务模块的选项。
通过以#(井号)开始行,可以向pam.conf 文件中添加注释。可以使用空格或制表符来分
隔字段。
注– 如果在PAM配置文件的项中发现错误,则会生成syslog 错误消息。如果此错误是请求
服务的项,则此服务可能会返回一个错误。
PAM的服务名称
每项服务的特定服务名称应该在该服务的手册页中进行介绍。例如,sshd(1M) 手册页列出
sshd 命令的所有PAM服务名称。
PAM模块类型
您需要了解PAM模块类型,因为这些类型定义模块的接口。以下是PAM模块的类型:
 帐户模块,检查口令生命期、帐户到期日期和访问限制。通过验证模块对用户身份进行
验证之后,帐户模块会确定是否应授予该用户对系统的访问权限。
 验证模块,为用户提供验证。此类模块还允许设置、刷新或销毁凭证。
3
PAM配置文件(参考)
302 系统管理指南:安全性服务• 2006 年9 月
 口令模块,允许对用户口令进行更改。
 会话模块,管理登录会话的打开与关闭。这些模块还可以记录活动,或在会话结束后进
行清除。
PAM控制标志
使用PAM服务模块的请求返回以下三种状态之一:
 成功-满足安全策略
 失败-未满足安全策略
 忽略-此请求未参与策略请求
栈中的每个模块都可以确定请求的成功或失败。要确定模块的延续行为或失败行为,必须
为PAM配置文件中的每个项选择一个控制标志。
延续行为定义是否检查后面的所有模块。根据特定模块的响应,可以决定跳过所有其他模
块。
失败行为定义如何记录或报告错误消息。失败信息既可以是可选信息,也可以是必需信
息。必需的失败信息会导致此请求失败,即使其他模块成功也是如此。可选的失败信息不
会始终导致此请求失败。
控制标志如下所示:
 binding-使用此控制标志,如果模块响应成功,并且先前带有required 标志的模块都
没有失败,则PAM会跳过其余模块并返回成功信息。如果返回失败信息,则PAM会记
录必需的失败信息,然后继续处理栈。
除模块响应成功情况下不再检查任何其他模块以外,binding 控制标志类似于required
控制标志。无论其他模块如何响应,使用此标志的模块中的失败信息会阻止请求成功。
如果先前的必需模块都响应成功,则使用此标志的模块中的成功信息会使请求成功。
 required-使用此控制标志,如果模块响应成功,则PAM会记录必需的成功信息并继续
检查后面的所有模块。如果此模块响应失败,并且此失败信息是第一个必需的失败信
息,则PAM会保存错误消息并继续检查栈。如果此失败信息不是第一个失败信息,则
PAM只会继续检查栈。此标志允许处理整个序列,从而不会泄露可帮助攻击者进行攻击
的信息。攻击者可找出的所有信息就是请求失败。
如果某特定模块必须响应成功才能使请求成功,则应使用required 控制标志。无论其他
模块如何响应,使用此标志的模块中的失败信息会阻止请求成功。使用此标志的模块中
的成功信息并不表示请求成功。栈中带有required、requisite 或binding 控制标志的其
他模块必须都响应成功,请求才会成功。
 requisite-使用此控制标志,如果模块响应成功,则PAM会记录必需的成功信息并继
续检查后面的所有模块。如果此模块响应失败,则PAM会记录必需的失败信息,返回
第一个必需失败信息的错误消息,然后跳过任何其他检查。
PAM配置文件(参考)
第16 章• 使用PAM 303
除模块响应失败情况下不再检查任何其他模块以外,requisite 控制标志类似于
required 控制标志。无论其他模块如何响应,使用此标志的模块中的失败信息会阻止请
求成功。使用此标志的模块中的成功信息并不表示请求成功。栈中带有required、
requisite 或binding 控制标志的其他模块必须都响应成功,请求才会成功。
 optional-使用此控制标志,如果模块响应成功,则PAM会记录可选的成功信息并继续
检查栈。如果此模块响应失败,则PAM会记录可选的失败信息并继续检查栈。
当栈中的成功验证足以对用户进行验证时,应使用optional 控制标志。仅当此特定服务
无需成功执行时才应使用此标志。请求的成功或失败由必需的失败信息或成功信息确
定。
如果用户需要具有与特定服务关联的权限才能完成其工作,则不应将模块标记为
optional。
 sufficient-使用此控制标志,如果模块响应成功,并且先前带有required 标志的模块
都没有失败,则PAM会跳过其余模块并返回成功信息。如果此模块响应失败,则PAM
会记录可选的失败信息并继续检查栈。
除模块响应成功情况下不再检查任何其他模块以外,sufficient 控制标志类似于
optional 控制标志。如果先前的required 模块都响应成功,则使用此标志的模块中的成
功信息会使请求成功。如果其他模块都响应失败,则使用此标志的模块中的失败信息会
导致请求失败。
有关这些控制标志的更多信息,请参见下一节,其中介绍了通用/etc/pam.conf 文件。
PAM模块
每个PAM模块都可实现一种特定的功能。设置PAM验证时,需要指定模块和模块类型,
后者定义模块执行的操作。一个模块可以实现多个模块类型,例如auth、account、
session 或password。
每个模块的路径由已安装的Solaris 发行版中提供的指令集确定。对于32 位模块,模块路径
为/usr/lib/security。对于64 位模块,路径为/usr/lib/security/ $ISA。有关更多信息,
请参见isalist(5) 手册页。
Solaris PAM模块的完整列表位于/usr/lib/security/$ISA 中。每个模块都有关联的手册
页,其中介绍了应用的模块类型以及所有的特殊选项。
出于安全原因,这些模块文件必须由root 拥有,并且禁止使用group 或other 权限写入。
如果文件并非由root 拥有,则PAM不会装入模块。
通用pam.conf 文件的示例
通用/etc/pam.conf 文件包括以下项:
PAM配置文件(参考)
304 系统管理指南:安全性服务• 2006 年9 月
login auth requisite pam_authtok_get.so.1
login auth required pam_dhkeys.so.1
login auth required pam_unix_cred.so.1
login auth required pam_unix_auth.so.1
login auth required pam_dial_auth.so.1
运行login 命令时,必须针对pam_authtok_get、pam_dhkeys、pam_auth_cred、
pam_auth_unix 和pam_dial_auth 模块成功执行验证。pam_authtok_get 项中的requisite 标
志表示,如果此模块响应失败,则不再检查任何其他模块。但是,如果此模块响应成功,
则会继续检查其余模块。如果针对所有模块的验证都失败,则验证请求也会失败。
rlogin auth sufficient pam_rhosts_auth.so.1
rlogin auth requisite pam_authtok_get.so.1
rlogin auth required pam_dhkeys.so.1
rlogin auth required pam_unix_cred.so.1
rlogin auth required pam_unix_auth.so.1
对于rlogin 命令,sufficient 控制标志表示通过pam_rhosts_auth 模块进行的验证足以使
验证请求成功。无需执行任何其他检查。如果通过pam_rhosts_auth 进行的验证失败,则通
过pam_authtok_get、pam_dhkeys、pam_auth_cred 和pam_unix_auth 模块进行的验证必须成
功。虽然其他模块中的失败信息会阻止成功验证,但是pam_rhosts_auth 模块中的失败信息
不会。此外,与login 中的项相同,pam_authtok_get 项中的requisite 控制标志表示如果
此模块响应失败,则验证请求失败,并且不再检查任何其他模块。
other session required pam_unix_session.so.1
使用other 服务名称,可以为pam.conf 文件中未包括的任何其他命令设置缺省服务。other
服务名称简化了文件管理,因为只需一个项就可涵盖使用同一模块的许多服务。此外,
other 服务名称用作“全面管理功能”时,可以确保每个访问都由一个模块来表示。
module-path 的项是“相对于根目录的”。如果为module-path 指定的文件名未以斜杠(/) 开
始,则文件名前面为路径/usr/lib/security/$ISA。必须对位于其他目录中的模块使用全路
径名。可以在每个模块的手册页中找到module-options 的值。
PAM配置文件(参考)
第16 章• 使用PAM 305
306
使用SASL
本章介绍有关简单身份验证和安全层(Simple Authentication and Security Layer, SASL) 的信
息。
 第307 页中的“SASL(概述)”
 第307 页中的“SASL(参考)”
SASL(概述)
简单身份验证和安全层(Simple Authentication and Security Layer, SASL) 是一种为网络协议提
供验证和可选安全性服务的框架。应用程序将调用SASL 库/usr/lib/libsasl.so,此库提
供应用程序与各种SASL 机制之间的胶合层。验证过程及提供可选安全性服务时会使用
SASL 机制。Solaris 10 发行版提供的SASL 版本由经过少量更改的Cyrus SASL 派生而来。
SASL 提供以下服务:
 装入任何插件
 确定应用程序必需的安全选项以帮助选择安全机制
 列出应用程序可使用的插件
 为特定验证的尝试从可用机制列表中选择最佳机制
 在应用程序和所选机制之间路由验证数据
 将有关SASL 协商的信息提供给应用程序
SASL(参考)
本节提供有关Solaris 10 发行版的SASL 实现的信息。
17 第1 7 章
307
SASL 插件
SASL 插件提供对安全机制、用户标准化和辅助属性检索的支持。缺省情况下,动态装入的
32 位插件安装在/usr/lib/sasl 中,64 位插件安装在/usr/lib/sasl/ $ISA 中。Solaris 10 发
行版中提供了以下安全机制插件:
crammd5.so.1 CRAM-MD5,仅支持验证,不支持授权。
digestmd5.so.1 DIGEST-MD5,支持验证、完整性、保密性和授权。
gssapi.so.1 GSSAPI,支持验证、完整性、保密性和授权。GSSAPI 安全机制要求有
效的Kerberos 基础结构。
plain.so.1 PLAIN,支持验证和授权。
此外,EXTERNAL安全机制插件和INTERNAL用户标准化插件内置在libsasl.so.1 中。
EXTERNAL机制支持验证和授权。如果外部安全源提供该机制,则该机制支持完整性和保
密性。如果用户名需要,INTERNAL插件将添加领域名称。
目前,Solaris 10 发行版不提供任何auxprop 插件。要使CRAM-MD5 和DIGEST-MD5 机制
插件在服务器端能完全运行,用户必须提供auxprop 插件以检索明文口令。PLAIN 插件还
需要其他的支持,以对口令进行验证。支持口令验证的有:对服务器应用程序的回调、
auxprop 插件、saslauthd 或pwcheck。Solaris 发行版中未提供salauthd 和pwcheck 守护进
程。要获取更好的互操作性,可使用mech_list SASL 选项将服务器应用程序限制为可完全
运行的那些机制。
SASL 环境变量
缺省情况下,客户机验证名称被设置为getenv("LOGNAME")。客户机或插件可以重置此变
量。
SASL 选项
使用可在/etc/sasl/app.conf 文件中设置的选项,可以在服务器端修改libsasl 和插件的行
为。变量app 是服务器定义的应用程序名称。服务器app 的文档应指定该应用程序名称。
Solaris 10 发行版支持以下选项:
auto_transition 用户成功进行纯文本验证后自动将其转换到其他机制。
auxprop_login 列出要使用的辅助属性插件的名称。
canon_user_plugin 选择要使用的canon_user 插件。
mech_list 列出允许服务器应用程序使用的机制。
pwcheck_method 列出用于验证口令的机制。目前,auxprop 是唯一允许的值。
SASL(参考)
308 系统管理指南:安全性服务• 2006 年9 月
reauth_timeout 设置缓存验证信息以便进行快速重新验证的时间(以分钟为单
位)。此选项由DIGEST-MD5 插件使用。将此选项设置为0 将禁用
重新验证。
Solaris 10 发行版不支持以下选项:
plugin_list 列出可用机制。不使用该选项是因为它会更改动态装入插件的行为。
saslauthd_path 定义用于与saslauthd 守护进程通信的saslauthd 门的位置。Solaris 10 发
行版中不包括saslauthd 守护进程。因此,也不包括此选项。
keytab 定义GSSAPI 插件使用的keytab 文件的位置。可使用KRB5_KTNAME 环境
变量代替此选项来设置缺省keytab 位置。
Cyrus SASL 中不包括以下选项。但是,Solaris 10 发行版中添加了这些选项:
use_authid 创建GSS 客户机安全性上下文时获取客户机凭证而不是使用缺省凭证。缺省
情况下,将使用缺省客户机Kerberos 身份。
log_level 为服务器设置需要的日志级别。
 
 
以上文章转自于 : http://developers.sun.com.cn/
阅读(666) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~