默认教学计划
931人加入学习
(20人评价)
Linux运维基础
价格 ¥ 599.00
该课程属于 高校公益行 | 网络安全实践训练营 请加入后再学习

可动态加载验证模块:

    在Linux中执行有些程序时,这些程序在执行前首先要对启动它的用户进行认证,符合一定的要求之后才允许执行,例如login, su等

    在Linux中进行身份或是状态的验证程序是由PAM来进行的,因为可以按需要动态的对验证的内容进行变更,所以可以大大提高验证的灵活性。PAM本身不会执行验证,而是借助策略和模块来验证

    Linux各个发行版中,PAM使用的验证模块一般存放在/lib64/security/目录下,可以使用ls命令进行查看本计算机支持哪些验证控制方式,一般的PAM模块名字例如pam_unix.so,模块可以随时在这个目录下添加和删除,这不会直接影响程序运行,具体的影响在PAM的配置目录下。

    PAM的配置文件位于/etc/pam.d/下面。ls命令可以看到所有支持PAM模块的服务以及这些服务使用PAM的配置。(注:/etc/pam.d/other 为服务PAM配置文件没有匹配的PAM时使用的默认配置文件)

 

查看服务是否支持PAM验证模块:

    ldd service_dir(服务所在目录) | grep libpam

如:ldd /usr/sbin/vsftpd | grep libpam

 

PAM配置文件的格式:

type control modules [modules_args]

第一列代表模块类型, 第二列代表控制标记, 第三列代表模块路径:要调用模块的位置。一般是在/lib/security文件中, 第四列是模块参数。

 

type:

auth: 用来对用户的身份进行识别.如:提示用户输入密码,或判断用户是否为root

account:对帐号的各项属性进行检查.如:是否允许登录,是否达到最大用户数,或是root用户是否允许在这个终端登录等

session:这个模块用来定义用户登录前的及用户退出后所要进行的操作.如:登录连接信息,用户数据的打开与关闭,挂载文件系统等.

passwd:使用用户信息来更新.如:修改用户密码

 

control:

required: 表示即使某个模块对用户的验证失败,也要等所有的模块都执行完毕后,PAM 才返回错误信息。这样做是为了不让用户知道被哪个模块拒绝。如果对用户验证成功,所有的模块都会返回成功信息

requisite: 与required相似,但是如果这个模块返回失败,则立刻向应用程序返回失败,表示此类型失败.不再进行同类型后面的操作.

sufficient:表示如果一个用户通过这个模块的验证,PAM结构就立刻返回验证成功信息(即使前面有模块fail了,也会把 fail结果忽略掉),把控制权交回应用程序。后面的层叠模块即使使用requisite或者required 控制标志,也不再执行。如果验证失败,sufficient 的作用和 optional 相同

optional:表示即使本行指定的模块验证失败,也允许用户接受应用程序提供的服务,一般返回PAM_IGNORE(忽略).

include:引用其他的配置文件,把匹配权交给其他配置文件(如果其他配置跳出,则整个匹配结束)

substack:引用其他的配置,把匹配权交给其他配置文件(如果其他配置跳出,则仅仅跳出子匹配)

 

modules:匹配认证模块

[展开全文]

名称解析和验证是两个独立运行的机制

login:
rppt-nsswitch.conf-passwd:files
123--nsswitch.conf--shadow:files
authentication:123--sha512(salt)--/etc/shadow compare

名称解析 libnss库
authentication:独立验证机制

nsswitcgh:file db nis ldap
authentication:file db nis ldap kerberos 等


authentication:

PAM;嵌入式认证模块 本身自己是不会执行验证的 需要借助策略或者模块来认证
模块所在路径

ldd命令:可以查看某个服务所支持的模块
后面直接加服务的绝对路径

可看到vsftp所支持的模块

/etc/pam.d/service_name (系统中支持pam认证的服务名称)
/etc/pam.d/other(系统中支持pam认证的服务没有匹配到任何条目时候,配置到other)

/etc/pam.d/service_name 格式
类型 控制标准 模块 (模块参数) 如下图

类型:
authentication:身份认证 匹配用户名和密码
account:检查用户名和密码的有效性(是否被锁定? 被限制登录? 有效期内?)
password:检查修改密码时。密码是否符合标准
session:当用户登录到操作系统后 规定了用户访问的时间或者以什么形式来访问 其实就是检查用户会话相关属性
一般情况下 必须设置 第一个 一般设置 前两个

控制标准:
required:一票否定权 不会影响后续 会继续匹配下面的条目 最后会不匹配
requisite:一票否定权 不会匹配下面的条目 直接给用户返回出结果
sufficient:一票同意权 不匹配下面的条目 直接给用户返回出结果(慎用!)
optional:不影响最终的结果
include:引用其他的配置文件 把匹配权交给其他配置文件(其他配置文件跳出 则结束)
substack:也是引用其他配置文件 把匹配权交给其他配置文件(如果其他配置文件跳出 但是仅仅只跳出 当前交给的配置文件)

匹配认证模块:

 

[展开全文]

名称解析:libnss库

 

认证——

PAM 嵌入式认证模块,PAM本身不会执行验证,借助策略和模块来认证

ldd 查看某个服务所支持的模块 ldd service_path

/etc/pam.d/service_name(系统中支持Pam认证的服务名称)

格式:type  control  modules

type

auth 身份验证,匹配用户名和密码

account  检查用户名和密码的有效性

password  检查修改密码时,密码是否符合标准

session  检查用户会话相关属性

control 

required:一票否决权,继续匹配下面的条目,最后不匹配

requisite  一票否决权,不匹配下面的条目,直接反馈给用户结果

sufficient 一票同意权,不匹配下面条目,直接反馈结果(慎用)

include  引用其他的配置文件,把匹配权交给其他配置文件(如果其他配置跳出,则整个匹配结束)

optional  不影响最终结果

substack  引用其他的配置文件,把匹配权交给其他配置文件(仅跳出子匹配)

module 匹配认证模块

 

/etc/pam.d/other (当系统中支持Pam认证的服务没有匹配到任何条目时,匹配other中的配置)

 

[展开全文]

nsswitch.conf:名称解析

login

root--nsswitch.conf-passwd:files

123--nsswitch.conf--shadow:files

名称解析:libnss

authentication:独立验证机制

名称解析和验证是两套独立运行的机制

nsswitchfiles db nis ldap

authenticationfiles db nis ldap kerberos

authentication

PAM:嵌入式认证模块,PAM本身不会执行验证,借助策略和模块来验证

ldd:查看某个服务所支持的模块

语法:ldd service_path

/etc/pam.d/service_name(系统中支持pam认证的服务名称)

/etc/pam.d/oeher(当系统中支持pam认证的服务没有匹配到任何条目时,匹配other中的配置)

/etc/pam.d/service_name格式

type control modules [modules_args]

type:

authentication):身份验证,匹配用户名和密码

account:检查用户名和密码的有效性

password:检查修改密码时,密码是否符合标准

session:检查用户会话相关属性

control

required:一票否决权,继续匹配下面的条目,最后不会匹配(保护系统的安全性)

requirst:一票否决权,不匹配下面的条目,直接给用户返回结果

sufficient:一票同意权,不匹配下面的条目,直接给用户返回结果(慎用)

optional:不影响最终结果

include:引用其他的配置文件,把匹配权交给其他的配置文件(如果其他配置跳出。则整个匹配结束)

substack:引用其他的配置,把匹配权交给其他配置(如果其他配置跳出,则仅仅跳出子匹配)

modules:匹配认证模块

[展开全文]

授课教师

课程特色

视频(102)
下载资料(1)