荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Lg (创造人生的传奇), 信区: Linux
标  题: 基于PAM的用户认证
发信站: BBS 荔园晨风站 (Sun Nov 29 21:06:21 1998), 站内信件 (WWW POST)

任何要授予用户特权的程序都要能够进行用户认证。当您登入系统时,您需要提供
用 户名和口令,而后登入
进程据此以检验登入的合法性---确认您就是该用户。
还有除口 令认证之外的其他认证形式,而且口令的存
储方式也是各不相同的。

PAM(可插拔认证模块)方式允许系统管理员设置多种认证措施而无须重新
编译要进 行认证的程序。使用
PAM,您通过编辑一个配置文件来决定认证模块如何插入到程序
之中。大多数红帽子LINUX用户无须改动这个
配置文件。因为如果使用RPM来安装程 序的话,系统会自动做有关改动。
但是,如果您想定制认证模块的话,就需要理解配 置文件内容。

11.2.1 PAM 模块

PAM定义了四种类型的模块。auth模块提供实际的认证过程,可能
是提示口令输入并 检查输入的口令,设置保密字如用户组或KERBEROS通行证。
account模块负责检查并 确认是否可以进行认证(比如,帐户是否到
期,用户此时此刻是否可以登入,等等)。 password模块被用来设置口令。一
旦用户认证通过,session模
块将被用来做使用户使用 其帐户前的初始化工作,如安装用户的HOME目录啦,
使能用户的电子邮箱啦,等等。

这些模块可以堆叠,多次使用。比如:rlogin通常使用至少两种认证方法,
如果“rhosts” 认证成功了,就允许建立连接,否则还要进行标准的口令认证。

随时可以加入新的模块,而PAM感知的程序可以被配置来使用它。举个例子,
如果您 有一个一次性口令计算系统,可以写出一个模块来(系统中包含有如何
书写模块的文 档资料),PAM感知的程序无须重新编译就可
以使用这个新的一次性口令计算器。

11.2.2 服务

每个使用PAM的程序定义它自己的服务名称。login程序定义其服务类型为login,ftpd
程序 定义其服务类型为ftp,等等。一般来说,服务类型就是存取该服务的程序的名
字,而不 是提供服务的程序。

11.2.3 配置文件

目录/etc/pam.d被用来配置所有的PAM应用程序。(在早期的PAM版本中用的
是 /etc/pam.conf;但是若/etc/pam.d不存在的话,仍旧会找/etc/pam.conf
,不过记住,这是一个 过时的文件。)。每一个应用程序
(确切的说是服务)都有它自己的配置文件。 一个真实的文件可能如下:

      #%PAM-1.0
      auth      required  /lib/security/pam_securetty.so
      auth      required  /lib/security/pam_pwdb.so shadow nullok
      auth      required  /lib/security/pam_nologin.so
      account   required  /lib/security/pam_pwdb.so
      password  required  /lib/security/pam_cracklib.so
      password  required  /lib/security/pam_pwdb.so shadow
                                               nullok use_authtok
      session   required  /lib/security/pam_pwdb.so

第一行是注释。任何以#开头的行都是注释。以下的三行排列着用于login认证的三个
 模块其中第一行用以确认用户是否以root登入,允许登入的tty被列在文件
/etc/securetty 中(如果文件存在的话)第二行将会使用户被提示输入
口令并校验口令。第三行表示 查文件/etc/nologin是否存在,如果存在
就显示其内容,而且如果用户不是root,则禁止 其登入。即便第一个模块失
败了,也要完成三个模块的校验。这是一种安全上的
考虑 ---这种设计永远不要让用户知道他或她们为什么会被拒绝,否则会让其
更容易突破认 证。您可以将“required”改成“requisite”来修改这种认
证方式。也就是说,如果有任 何“requisite”模块以失败返
回,整个PAM认证将终止再调用其它模块也以失败返回。

第五行表示任何必要的记帐信息要被记载。例如,如果设置使用影子口令,
pam_db.so 模块将被执行以检查
该帐户是否失效或者用户口令是否超期而需要修改。

第六行(该行需要折行来写)用以指定如果login程序改变用户的口令,它应当使用
 pam_pwdb.so来完成。
(这仅在auth模块检测到口令需要被改变时,例如一个影子口令 已经过期时才使用)

最后一行表示pam_pwdb.so模块将被用来管理当前的会话过程。而目前该模块什么也不做
; 它可以被替换为别的所需的模块。

要注意配置文件中每一行的顺序不是任意的。尽管required模块以什么顺序
被调用并没 有多大关系,但是还有其它一些控制符,其中optional很少在红帽子
LINUX中使用,而 sufficient 和requisite就要求行的顺序不能颠倒。

让我们来看一下rlogin的认证配置:

      auth  required    /lib/security/pam_securetty.so
      auth  sufficient  /lib/security/pam_rhosts_auth.so
      auth  required    /lib/security/pam_pwdb.so shadow nullok
      auth  required    /lib/security/pam_nologin.so

这和login的描述极为相似,但是其中比login的多一行模块描述,而且模块的顺序也
不同。 首先,pam_securetty.so模块将禁止以root从不安全的终端登入。这将有
效的阻止任何root方 式的远程登入。如果您不想禁止的话(在这种情况下,我们
建议您的机器要么没和Internet 相连,要么呆在一个配置良好的防火墙后面),把这一
行删掉就是了。其次,pam_nologin.so 模块将检查/etc/nologin,如上所述。第三
点,如果pam_rhosts_auth.so模块认证通过,PAM就立 即以成功返回而不再做任何
口令校验。如果pam_rhosts_auth.so认证失败,该失败将被忽略, 继续调用
pam_pwdb.so模块进行正常的口令认证。如果您在securetty认证失败后不想让系统继续
 以口令询问的话,您可以把pam_securetty.so模块的required 改为requisite。

11.2.4 影子口令

pam_pwdb.so模块会自动检测您是否使用影子口令以做出相应的调整。请查
看第 11.3 节获得更多有关操纵影子口令工具的信息。

11.2.5 更为详尽的信息

本章描述的仅仅是PAM的介绍性知识。更多的资料位于系统的/usr/doc/pam*,其中包含
 了系统管理员指南,模块书写手册,应用系统开发者手册,和PAM标准说明
DCE-RFC 86.0。同时,这些文档也可以从红帽子的WEB站点获得
,http://www.redhat.com/linux-info/pam/.

--
☆ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 210.39.0.47]
※ 修改:·cycker 於 May 23 19:48:18 修改本文·[FROM: 192.168.36.220]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店