安全RPC 概述
第15 章• 使用验证服务(任务) 287
解密对话密钥
服务器从客户机接收传输内容时,将发生以下情况:
1. 服务器的本地keyserver 在公钥数据库中查找客户机的公钥。
2. keyserver 使用客户机的公钥以及服务器的密钥来推导公用密钥。此公用密钥与客户机计
算所得的公用密钥相同。只有服务器和客户机才能计算公用密钥,因为此计算过程需要
知道其中一个密钥。
3. 内核使用公用密钥对此对话密钥进行解密。
4. 内核调用keyserver 以使用解密的对话密钥对客户机的时间标记进行解密。
在服务器上存储信息
服务器对客户机的时间标记进行解密之后,将在凭证表中存储四个信息项:
客户机的计算机名称
对话密钥
窗口
客户机的时间标记
服务器存储前三项供将来使用,存储客户机的时间标记以防止重放。服务器只接受时间上
晚于最新时间标记的时间标记。因此,可保证拒绝任何重放的事务。
注– 调用方的名称将隐含在这些事务中,此调用方必须通过某种方式进行验证。keyserver 不
能使用DES 验证来验证调用方,因为keyserver 使用DES 时会导致死锁。为了避免死锁,
keyserver 将通过用户ID (user ID, UID) 来存储密钥,并且只将请求授予本地root 进程。
将检验器返回到客户机
服务器将检验器返回到客户机,其中包括以下内容:
服务器在其凭证高速缓存中记录的索引ID
减1 的客户机时间标记(由对话密钥加密)
从客户机的时间标记中减1 的原因是确保此时间标记已过时。过时的时间标记不能再用作
客户机检验器。
验证服务器
客户机将接收检验器并验证服务器。客户机知道只有服务器才能发送检验器,因为只有服
务器知道客户机发送的时间标记。
处理事务
对于第一个事务之后的每一个事务,客户机都在其下一个事务中将索引ID 返回到服务器。
客户机还发送另一个加密的时间标记。服务器会将使用对话密钥加密的减1 的客户机时间
标记发送回来。
安全RPC 概述
288 系统管理指南:安全性服务• 2006 年9 月
管理安全RPC(任务列表)
以下任务列表说明为NIS、NIS+ 和NFS 配置安全RPC 的过程。
任务说明参考
1. 启动keyserver。确保可以创建密钥以对用户进行验证。第289 页中的“如何重新启动安全RPC
Keyserver”
2. 在NIS+ 主机上设置
凭证。
确保主机上的root 用户可以在NIS+ 环境中
进行验证。
第290 页中的“如何为NIS+ 主机设置
Diffie-Hellman 密钥”
3. 为NIS+ 用户提供密
钥。
使用户可以在NIS+ 环境中进行验证。第291 页中的“如何为NIS+ 用户设置
Diffie-Hellman 密钥”
4. 在NIS 主机上设置凭
证。
确保主机上的root 用户可以在NIS 环境中进
行验证。
第292 页中的“如何为NIS 主机设置
Diffie-Hellman 密钥”
5. 为NIS 用户提供密
钥。
使用户可以在NIS 环境中进行验证。第293 页中的“如何为NIS 用户设置
Diffie-Hellman 密钥”
6. 通过验证共享NFS 文
件。
使NFS 服务器可以使用验证来安全地保护共
享的文件系统。
第294 页中的“如何通过Diffie-Hellman 验证共
享NFS 文件”
使用安全RPC 管理验证
通过要求对已挂载NFS 文件系统的使用进行验证,可以增强网络的安全性。
如何重新启动安全RPC Keyserver
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《System
Administration Guide: Basic Administration》中的第2 章,“WorkingWith the Solaris
Management Console (Tasks)”。
检验keyserv 守护进程是否正在运行。
# svcs \*keyserv\*
STATE STIME FMRI
disabled Dec_14 svc:/network/rpc/keyserv
如果keyserver 服务未联机,则启用此服务。
# svcadm enable network/rpc/keyserv
1
2
3
使用安全RPC 管理验证
第15 章• 使用验证服务(任务) 289
如何为NIS+ 主机设置Diffie-Hellman 密钥
应该针对NIS+ 域中的每个主机执行此过程。以root 身份运行keylogin 命令之后,服务器
便会具有mech_dh 的GSS-API 接收器凭证,而客户机具有GSS-API 启动器凭证。
有关NIS+ 安全性的详细说明,请参见《System Administration Guide: Naming and Directory
Services (NIS+)》。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《System
Administration Guide: Basic Administration》中的第2 章,“WorkingWith the Solaris
Management Console (Tasks)”。
在名称服务中启用publickey 表。
将以下行添加到/etc/nsswitch.conf 文件中:
publickey: nisplus
初始化NIS+ 客户机。
# nisinit -cH hostname
其中,hostname 是其表中包含客户机系统项的受信任NIS+ 服务器的名称。
将客户机添加到cred 表中。
键入以下命令:
# nisaddcred local
# nisaddcred des
使用keylogin 命令检验此设置。
如果系统提示键入口令,则表示此过程已经成功。
# keylogin
Password:
在NIS+ 客户机上为root 设置新密钥
以下示例使用主机pluto 将earth 设置为NIS+ 客户机。您可以忽略警告。系统将接受
keylogin 命令,检验earth 是否已正确设置为安全NIS+ 客户机。
# nisinit -cH pluto
NIS Server/Client setup utility.
This system is in the example.com. directory.
1
2
3
4
5
示例15–1
使用安全RPC 管理验证
290 系统管理指南:安全性服务• 2006 年9 月
Setting up NIS+ client ...
All done.
# nisaddcred local
# nisaddcred des
DES principal name :
Adding new key for (earth.example.com.)
Network password: <键入口令>
Warning, password differs from login password.
Retype password: <重新键入口令>
# keylogin
Password: <键入口令>
#
如何为NIS+ 用户设置Diffie-Hellman 密钥
应该针对NIS+ 域中的每个用户执行此过程。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《System
Administration Guide: Basic Administration》中的第2 章,“WorkingWith the Solaris
Management Console (Tasks)”。
在根主服务器上将用户添加到cred 表中。
键入以下命令:
# nisaddcred -p -P username.domain-name. des
请注意,在这种情况下,username.domain-name 必须以点(.) 结束。
通过以客户身份登录并键入keylogin 命令来检验此设置。
为NIS+ 用户设置新密钥
在以下示例中,将为用户jdoe 提供Diffie-Hellman 验证密钥。
1
2
3
示例15–2
使用安全RPC 管理验证
第15 章• 使用验证服务(任务) 291
# nisaddcred -p -P jdoe.example.com. des
DES principal name :
Adding new key for (jdoe.example.com.)
Password: <键入口令>
Retype password: <重新键入口令>
# rlogin rootmaster -l jdoe
% keylogin
Password: <键入口令>
%
如何为NIS 主机设置Diffie-Hellman 密钥
应该针对NIS 域中的每个主机执行此过程。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《System
Administration Guide: Basic Administration》中的第2 章,“WorkingWith the Solaris
Management Console (Tasks)”。
在名称服务中启用publickey 映射。
将以下行添加到/etc/nsswitch.conf 文件中:
publickey: nis
使用newkey 命令创建一个新的密钥对。
# newkey -h hostname
其中,hostname 是客户机的名称。
在NIS 客户机上为root 设置新密钥
在以下示例中,会将earth 设置为安全NIS 客户机。
# newkey -h earth
Adding new key for
New Password: <键入口令>
1
2
3
示例15–3
使用安全RPC 管理验证
292 系统管理指南:安全性服务• 2006 年9 月
Retype password: <重新键入口令>
Please wait for the database to get updated...
Your new key has been successfully stored away.
#
如何为NIS 用户设置Diffie-Hellman 密钥
应该针对NIS 域中的每个用户执行此过程。
只有系统管理员在登录到NIS 主服务器时才能为用户生成新密钥。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《System
Administration Guide: Basic Administration》中的第2 章,“WorkingWith the Solaris
Management Console (Tasks)”。
为用户创建新密钥。
# newkey -u username
其中,username 是用户的名称。系统将提示键入口令。您可以键入通用口令。将使用此通
用口令以加密格式存储私钥。
通知用户登录并键入chkey -p 命令。
此命令允许用户使用只有其自己知道的口令重新加密其私钥。
注– 可以使用chkey 命令为用户创建新密钥对。
在NIS 中设置并加密新用户密钥
在此示例中,超级用户将设置密钥。
# newkey -u jdoe
Adding new key for
New Password: <键入口令>
Retype password: <重新键入口令>
Please wait for the database to get updated...
开始之前
1
2
3
示例15–4
使用安全RPC 管理验证
第15 章• 使用验证服务(任务) 293
Your new key has been successfully stored away.
#
然后,用户jdoe 将使用私人口令对此密钥进行重新加密。
% chkey -p
Updating nis publickey database.
Reencrypting key for
Please enter the Secure-RPC password for jdoe: <键入口令>
Please enter the login password for jdoe: <键入口令>
Sending key change request to centralexample...
如何通过Diffie-Hellman 验证共享NFS 文件
此过程通过要求访问验证来保护NFS 服务器上的共享文件系统。
必须在网络中启用Diffie-Hellman 公钥验证。要在网络中启用验证,请执行以下操作之一:
第290 页中的“如何为NIS+ 主机设置Diffie-Hellman 密钥”
第292 页中的“如何为NIS 主机设置Diffie-Hellman 密钥”
成为超级用户或承担拥有系统管理配置文件的角色。
系统管理员角色拥有系统管理配置文件。要创建该角色并将其指定给用户,请参见第
186 页中的“配置RBAC(任务列表)”。
在NFS 服务器上,通过Diffie-Hellman 验证共享文件系统。
# share -F nfs -o sec=dh /filesystem
其中,filesystem 是要共享的文件系统。
-o sec=dh 选项意味着现在需要通过AUTH_DH 验证来访问文件系统。
在NFS 客户机上,通过Diffie-Hellman 验证挂载文件系统。
# mount -F nfs -o sec=dh server:filesystem mount-point
server 共享filesystem 的系统的名称
filesystem 共享的文件系统的名称,例如opt
mount-point 挂载点的名称,例如/opt
开始之前
1
2
3
使用安全RPC 管理验证
294 系统管理指南:安全性服务• 2006 年9 月
-o sec=dh 选项通过AUTH_DH 验证挂载文件系统。
使用安全RPC 管理验证
第15 章• 使用验证服务(任务) 295
296
使用PAM
本章介绍可插拔验证模块(Pluggable Authentication Module, PAM) 框架。PAM提供了一种向
Solaris 操作系统(Solaris Operating System, Solaris OS) 中“插入”验证服务的方法。PAM会在访
问系统时为多项验证服务提供支持。
第297 页中的“PAM(概述)”
第299 页中的“PAM(任务)”
第302 页中的“PAM配置文件(参考)”
PAM(概述)
使用可插拔验证模块(Pluggable Authentication Module, PAM) 框架,可以“插入”新的验证服
务,而无需更改系统登录服务,例如login、ftp 和telnet。还可以使用PAM将UNIX 登录
与其他安全机制(如Kerberos)进行集成。也可以使用此框架来“插入”帐户、凭证、会话以
及口令管理的机制。
使用PAM的益处
使用PAM框架,可以为用户验证配置系统登录服务(如ftp、login、telnet 或rsh)。
PAM提供的一些益处如下所示:
灵活的配置策略
按应用程序的验证策略
选择缺省验证机制的功能
在高安全性系统中要求提供多个口令的功能
易于最终用户使用
如果对于不同的验证服务口令都相同,则无需重新键入口令
可以提示用户输入多个验证服务的口令,而无需用户键入多个命令
可以将可选选项传送到用户验证服务
可以实现特定于站点的安全策略,而无需更改系统登录服务
16 第1 6 章
297
PAM组件
PAM软件由一个库、各种服务模块以及一个配置文件组成。其中还包括可利用这些PAM接
口的Solaris 命令或守护进程。
下图说明了系统登录应用程序、PAM库、pam.conf 文件和PAM服务模块之间的关系。
图16–1 PAM工作原理
系统登录应用程序(如ftp、telnet 和login)使用PAM 库来调用配置策略。配置策略在
pam.conf 文件中定义。pam.conf 文件定义要使用的模块,以及每个应用程序使用这些模块
的顺序。模块中的结果基于模块响应和已配置的控制标志。这些结果通过库传送回应用程
序。
PAM框架
PAM框架提供了一种使用堆叠借助多项服务来验证用户的方法。根据配置,系统可以提示
用户输入每种验证方法的口令。验证服务的使用顺序通过PAM配置文件确定。
PAM库可提供框架以装入相应模块和管理堆叠过程。PAM库提供了一种可在其中插入所有
模块的通用结构。有关更多信息,请参见pam_sm(3PAM) 手册页。
Solaris 10 发行版对PAM所做的更改
Solaris 10 发行版对可插拔验证模块(Pluggable Authentication Module, PAM) 框架做了以下更
改:
现在,pam_authtok_check 模块允许使用/etc/default/passwd 文件中的新可调参数执行
严格的口令检查。这些新参数定义以下各项:
用逗号分隔的字典文件列表,这些字典文件用于检查口令中的常用字典字
PAM(概述)
298 系统管理指南:安全性服务• 2006 年9 月
新口令与旧口令之间所需的最小差别
新口令中必须用到的字母字符或非字母字符的最少个数
新口令中必须用到的大写字母或小写字母的最少个数
允许的连续重复字符的个数
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) 手册页和第303 页中的
“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) 手册页。
PAM(任务)
本节介绍使PAM框架使用特定安全策略所需执行的一些任务。应注意与PAM配置文件关
联的某些安全问题。有关安全问题的信息,请参见第300 页中的“规划PAM实现”。
PAM(任务列表)
任务说明参考
规划PAM安装。开始软件配置过程之前,考虑配置问题并做出相
关决定。
阅读(634) | 评论(0) | 转发(0) |