Chinaunix首页 | 论坛 | 博客
  • 博客访问: 719073
  • 博文数量: 191
  • 博客积分: 10987
  • 博客等级: 上将
  • 技术积分: 1925
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-22 09:52
文章分类

全部博文(191)

文章存档

2014年(10)

2011年(11)

2010年(38)

2009年(132)

分类: LINUX

2009-06-30 16:47:46

PAM 的全名是插入式验证模块(Pluggable Authentication Moule .是红帽系统中用来确认用户身份和决定用户可以做哪些工作的子系统。提供了很好的验证和授权的功能。

PAM利用各种模块来执行真正验证与授权的工作。

一:PAM的组成

1pam的客户端

   使用Pam功能的应用程序被称为 PAM 客户端;如:/etc/login 就是个PAM客户端。

2PAM的内核

   使用 /lib/libpam.so 这个共享链接库来实现

3PAM的模块

   /lib/security/* 下的所有模块来提供客户端的功能。

二:PAM 客户端服务文件

   每一个PAM客户端一般有一个服务文件,必须存在于/etc/pam.d/中;如:login 这个PAM客户端就有一个login这个服务文件。目录对应关系:              /bin/login应用程序ßà/etc/pam.d/login服务文件ßà/lib/security/模块.so

   关系:

服务文件决定模块在什么时候如何被应用程序使用。

    格式:

        TYPE  FLAG  PATH  [ARGS]…..

    解释:

        TYPE: 模块的类型

        FLAG: 控制的类型

        PATH: 模块的名称

        ARGS: 参数

   1TYPE 字段

    auth        验证用户身份,输入账户和密码;验证的确是这个用户。

    account     授权用户;基于用户表,时间,密码的有效期来决定是否允许访问。

                批准某个账户的使用。如:某个账户登录几次不成功则锁定该账户。

    password    更新验证凭证,如:密码更新等;禁止用户尝试反复登录。

                控制密码的修改

    session      记录会话日志;限制用户登陆的次数。

   2FLAG 字段

   

控制值

该模块执行结果

动作

最终返回结果

required

成功

继续执行下一个模块

看其他模块的结果

失败

失败

requisite

成功

继续执行下个模块

看其他模块的结果

失败

stop

失败

sufficient

成功

stop

成功

失败

继续执行下一个模块

看其他模块的结果

include

成功

继续执行下一个模块

看其他模块的结果

失败

optional

无关

执行指定的PAM用户端设置中相同的TYPE的模块

看其他模块的结果

 

required-------------必须通过,若失败继续测试下一个模块

requisite------------失败后停止测试

sufficient-----------通过则返回成功,失败则忽略测试,继续检查

optional------------通过与否无关

include--------------返回在被调用的文件中配置的测试的总体控制值

 

3PATH字段:

默认执行模块完整路径: /lib/security

4ARGS字段:

  参数:可以从下面两个目录获取模块的参数已经改模块的用法。

  /usr/share/doc/pam-VERSION/   系统PAM文件

  /usr/share/doc/pam-NAME_VERSION/ 这是第三方提供的模块文件目录

三:system-auth  配置文件

 几乎所有的PAM客户端都会有这个配置文件,它是一个全局配置文件。

四:常用PAM模块

  完整路径:/lib/security

   1:  pam_unix.so        模块

   2 pam_deny.so       模块

   3 pam_permit.so     模块  

   4 pam_rootok.so     模块       ####对管理员无条件允许通过

   5 pam_cracklib.so    模块       ####相关配置文件/etc/security/system_auth

   6 pam_limits.so      模块       ####相关配置文件 /etc/security/limits.conf

   7 pam_tally.so       模块       ####相关配置文件/etc/pam.d/system_auth

   8 pam_access.so     模块       ####相关配置文件 /etc/security/access.conf

   9 pam_listfile.so     模块       #####相关配置文件:自己建立配置文件

*模块的使用方法参见:/usr/share/doc/pam-VERSION/txts/* 文档资料

五:常用模块分析

1 pam_access认证模块

  所属类型:account

  功能描述:该模块提供基于登录用户名、客户ip/主机名、网络号以及登录终端号的访问控制。缺省的,该模块的配置文件是/etc/security/access.conf,可以使用accessfile参数指定自定义的配置文件。
  
可带参数:accessfile=/path/to/file.conf

   /etc/security/access.conf 格式:

           权限 : 用户 : 来源  

  ----权限字段:  +  表示允许  - 表示禁止

  ---用户字段:  用户名,组名,多个值的时候,空格分开,ALL表示所有的

  ---来源字段:  ALL表示任意主机,LOCAL表示本地主机,主机名,IP地址,

                域名(以“.”开始);网络号(以“.”结束)。

                EXCEPT操作符来表示除了之外。

 1.2 实例:

     Pam客户端/bin/login ,即二进制文件login 是需要PAM模块来进行验证的。

     查询某个应用程序是否应用PAM模块,使用ldd命令

     如:查询login是否应用PAM模块,

       ldd  /bin/login  |grep “libpam.so”

        libpam.so.0  => /lib/libpam.so.0 (xxxxxxxx)        ####表示需要PAM模块

编辑其相应的配置文件/etc/pam.d/login  

加入:

  account     required   /lib/security/pam_access.so

 

再编辑/etc/security/access.conf 文件

****  只允许用户apple 访问本地系统,其他用户拒绝登陆本系统。

              -:ALL EXCEPT apple:LOCAL

###当登录字符终端时候,只有apple可以进入,其他用户被拒绝了(root除外)。

 

2pam_cracklib认证模块

   2.1 所属类型:password

   功能描述:该模块对用户密码提供强健性检测。比如密码长度、密码的复杂程度等等、

   参数:

   --debug:显示调试日志

   --type=TEXT

   --retry=N:修改密码时,出现错误的次数

   --minlen=N:密码最少字符数

   --dcredit=N:至少有N个数字

   --ucredit=N:至少有N个大写字符

   --lcredit=N:至少有N个小写字符

   --ocredit=N:至少有N个其他字符

编辑/etc/pam.d/system-auth  对应服务文件/etc/pam.d/passwd

添加:

    password   requisite   pam_cracklib.so  retry=3 minlen=8 dcredit=1 ucredit=1 lcredit=1 ocredit=1  debug

 

3:  pam_tally认证模块

   3.1 所属类型:account

  功能描述:当普通用户错误输入密码超过规定的值时候,就锁定用户。

   参数:

     Onerr=fail|succeed  能打开文件,这个决定了模块应该如何反应

     Magic_root 表示如何这个模块是由一个uid=0的用户触发,那么计数器就不会增加

     deny=N   尝试N次后,第N+1次将锁定该用户

     lock_time=N  锁定时间为N

   ulock_time=N  解锁N秒之后,超时N秒之后将再次锁定,将由管理员来解锁

   per_user

   no_lock_time  /var/log/faillog 日志里不记录尝试失败的次数

   no_reset   成功登入后不记录次数

   audit   如果用户找不到,就把用户记录进入系统日志

   silent   静默模式,不打印信息

   no_log_info  不记录日志

   编辑/etc/pam.d/system_auth

    添加:

      account   required  pam_tally.so deny=3   ####用户第四次输入错误将被系统锁定

 

4pam_limits认证模块

    4.1 所属类型:account

       功能描述:限制用户使用系统的资源。

       配置文件:/etc/security/limits.conf

       添加:

       apple          hard          maxlogin       2

       表示用户apple使用两个虚拟终端登入系统,使用第三个的时候,将被系统拒绝

 

5pam_listfile认证模块

   5.1 所属类型:auth

功能描述:拒绝或允许用户登陆远程系统;pam_listfile模块会确认要求登录的用户账号与允许的账号名单是否冲突,必须建立一个允许登录或者拒绝登录的名单。

列如:auth required pam_listfile item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

 配置文件:自定义配置文件  

      实例:拒绝用户apple 远程登录系统

      在服务文件/etc/pam.d/sshd 添加如下:

    auth    required   pam_listfile.so   item=user   sense=deny  file=/etc/denyuser onerr=secceed 

      创建,编辑文件/etc/denyuser

      echo “apple” > /etc/denyuser

       说明:apple将不能ssh远程登入系统

 

6 pam_nologin认证模块

    描述:pam_nologin模块会确认/etc/nologin文件是否存在,如果存在,普通用户则会验证失败,只允许root用户登录

 

7 pam_security认证模块

    描述:pam_security模块只会对root有影响。当root账户登录时,pam_security会参考/etc/securetty目录中的console列表,以决定root是否可以登录,避免用户从不安全的终端登录

 

***********************未完***************************

阅读(1437) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~