天天看点

nsswitch&PAM认证框架

一、nsswitch概述

  1.nsswitch:network/name  service  switch

      nsswitch网路名称服务解析是通用框架,与各种类型存储进行交互的公共模块化实现;

实现:/usr/lib64/libnss*,/lib64/libnss*

框架模块:libnss;驱动模块:libnss_files-

  2.配置文件:/etc/nsswitch.conf

     (1)格式   

          为每一种用到解析库的应用通过配置定义其位置,格式======解析库: store1  store2  …=======

          解析库可以为文件、关系型数据管理系统(MySQL)、NIS、LDAP、DNS

例如:passwd: files        密码通过文件解析

             hosts: files  dns    hosts通过文件解析,若没有再通过dns解析

    (2)查找结果和状态

           每种种存储中的查找结果状态:STATSU => success | notfound | unavail | tryagain

           对应于每种状态结果的行为(action):return| continue

例子:

hosts:files  nis [NOTFOUND=return]  dns

  3.getent命令:get  entries,从指明库中查找指定名称

         getent  DATABASE  [key]

二、PAM概述

  1.pam:pluggableauthenticationmodule,可插入式认证模块

       通用框架,提供了与各种类型存储进行交互的公共实现、以及多种辅助类的功能:/lib64/security/*

       提供认证库有多种类型的存储:文件、关系型数据管理系统、LDAP、NIS… ...

nsswitch&PAM认证框架

  2.配置文件:

   (1)为各种调用了pam的应用提供其专用配置

             通用:/etc/pam.conf,可为每一种调用pam完成认证功能的应用程序提供配置;

             专用:/etc/pam.d/*,通常专用于为某种特定的应用程序提供配置;通常每个应用会使用一个单独的配置文件;

   (2)配置文件格式

通用配置文件:application    type    control    module-path    module-arguments

专用配置文件:type    control    module-path  module-arguments

  3.配置文件格式详解

      (1)type:检查的功能类别

  可能使用一个或者多个进行限定认证

auth

账号的认证和授权;

account

与账号管理相关的非认证类的功能;

password

用户修改密码时密码复杂度检查机制;

session

用户获取到服务之前或使用服务完成之后需要进行一些附加性操作;

      (2)control:同一种功能的多个检查之间如何进行组合;

             1)简单实现:使用一个关键词来定义控制

         required:必须通过检查;否则,即为失败;无论成功还是失败,都需继续由后续同种功能的其它模块进行检查;

         requisite:一票否决;检测失败就直接返回失败;检测成功,则由由后续同种功能的其它模块进行检查;

         sufficient:一票通过,检测成功就直接返回成功;检测失败,则由由后续同种功能的其它模块进行检查;

         optional:可选的,参考性控制机制;

         include:调用其它配置文件中的同种功能的检测机制;

             2)详细实现:使用一个或多个“status=action”

[status1=action1,status2=action2, ...]

status:返回状态

action:采取的行为,比如ok,done, die, bad, ignore, ...

      (3)module-path:模块文件路径;

    相对路径:相对于/lib64/security/目录而言;

    绝对路径:可位于任何可访问路径;

      (4)module-arguments:模块的专用参数;

三、pam_limits.so:资源限制

 1.pam_linits.so    

        在用户级别实现对其可使用的资源的限制,例如可打开的文件数量,可运行的进程数量,可用内存空间;

  2.修改限制的实现方式:

     (1)ulimit命令:用于调整软限制;

    -n        最多的打开的文件描述符个数

    -u        最大用户进程数

    -S        使用 `soft'(软)资源限制

    -H       使用 `hard'(硬)资源限制

     (2)配置文件:/etc/security/limits.conf,/etc/security/limits.d/*.conf

  配置文件:每行一个定义;

 格式:<domain>       <type>  <item>  <value>

<domain>:应用于哪些对象

username

@group

*:所有用户

<type>:限制的类型

soft:软限制,普通用户自己可以修改;

hard:硬限制,由root用户设定,且通过kernel强制生效;

-:软硬使用相同限制;

<item>:限制的资源类型

nofile:所能够同时打开的最大文件数量;默认为1024;

nproc:所能够同时运行的进程的最大数量;默认为1024;

继续阅读