PAM 认证机制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAM 认证机制相关的知识,希望对你有一定的参考价值。

PAM 认证机制

v PAM:Pluggable Authentication Modules

ü  认证库:文本文件,mysql NIS LDAP等 等

ü Sun 公司于1995  年开发的 一种 与 认证 相关的通用框架 机制

ü PAM 是关注如何为服务验证用户的 API, 通过提供一些动

态链接库和一套统一的API ,将系统提供的服务和该服务的

认证方式分开

ü  使得系统管理员可以灵活地根据需要给不同的服务配置不

同的认证方式而无需更改服务程序

ü  一种认证框架,自身不做认证

 

PAM 认证机制

v  它提供了对所有服务进行认证的中央机制,适用于login ,远

程登录(telnet,rlogin,fsh,ftp,点对点协议(PPP )),su等 等

应用程序中。系统管理员通过PAM配置文件来制定不同应用

程序的不同认证策略;应用程序开发者通过在服务程序中使

PAM API(pam_xxxx( )) 来实现对认证方法的调用;而

PAM 服务模块的开发者则利用PAM SPI 来编写模块(主要是

引出一些函数pam_sm_xxxx( ) PAM 接口库调用),将不

同的认证机制加入到系统中;PAM接口库(libpam )则读取

配置文件,将应用程序和相应的PAM服务模块联系起来。

技术分享

pam 认证原理

v PAM 认证一般遵循这样的顺序:Service( 服务) PAM(配置文

) pam_*.so

v PAM 认证首先要确定那一项服务,然后加载相应的PAM 的配

置文件位于 /etc/pam.d) ,最后调用认证文件

/lib/security ) 进行安全认证

技术分享

PAM 认证机制

v PAM 认证过程:

1. 使用 者执行/usr/bin/passwd  程序,并输入 密码

2.passwd 开始呼叫PAM 模块,PAM 模块会搜寻passwd 程序的

PAM 相关设定文件,这个设定文件一般是在/etc/pam.d/里 里

边的与程序同名的文件 ,即 即PAM 会搜寻/etc/pam.d/passed

这个设置 文件

3. 经由/etc/pam.d/passwd 设定文件的数据,取用PAM 所提

供的相关模块来进行 验证

4. 将 验证结果回传给passwd 这个程序,而passwd 这个程序会

根据PAM 回传的结果决定下一个动作(重新输入密码或者通

PAM 认证机制

v PAM 相关文件

ü  模块 文件目录:/lib64/security/*.so

ü  环境相关的设 置:/etc/security/

ü  主配置文件:/etc/pam.conf,默认不存在

ü  为每种应用模块提供一个专用的配置文件:

/etc/pam.d/APP_NAME

ü  注意:如/etc/pam.d 存在,/etc/pam.conf

PAM 认证机制

v  通用 配置文件/etc/pam.conf格式

application type control module-path arguments

v  专用配置文件/etc/pam.d/*  格式

type control  module-path  arguments

v  说明:

ü  服务 名( (application) )

telnet login ftp 等,服务名字“OTHER ”代表所有没

有在该文件中明确配置的其它服务

ü  模块类型( (module-type) )

ü control PAM 库该如何处理与该服务相关的PAM 模块的成

功或失败情况

ümodule-path  用来 指明本模块对应的程序文件的 路径名

ü Arguments 用来 传递给该模块的参数

90

PAM 认证机制

v  模块类型(module-type) )

ü Auth  账号的认证和授权

ü Account  与账号管理相关的非认证类的功能 ,如:用来限

/ 允许用户对某个服务的访问时间,当前有效的系统资源

( 最多可以有多少个用户) ,限制用户的位置( 例如:root用 用

户只能从控制台登录)

ü Password  用户修改密码时密码复杂度检查机制等功能

ü Session  用户获取到服务之前或使用服务完成之后需要进

行一些附加的操作 ,如:记录打开/ 关闭数据的信息,监视

目录等

ü -type  表示因为缺失而不能加载的模块将不记录到系统日

, 对于那些不总是安装在系统上的模块有用

 

PAM 认证机制

v Control:

PAM 库如何处理与该服务相关的PAM 模块成功或失败情况

v  两种方式实现:

简单和复杂

v  简单方式实现:一个关健词实现

ü required : : 一票否决, 表示本模块必须返回成功才能通过

认证,但是如果该模块返回失败,失败结果也不会立即通

知用户,而是要等到同一type 中的所有模块全部执行完毕

再将失败结果返回给应用程序。 即为 必要条件

(就算失败了也继续向下看,但最终结果是失败的)

PAM 认证机制

v requisite : :  一票否决, 该模块必须返回成功才能通过认证,

但是一旦该模块返回失败,将不再执行同一type 内的任何模

块,而是直接将控制权返回给应用程序。是一个必要条件

v sufficient : : 一票通过, 表明本模块返回成功则通过身份认

证的要求,不必再执行同一type内的其它模块,但如果本模

块返回失败可忽略, 即为 充分条件

v optional  :表明本模块是可选的,它的成功与否不会对身份

认证起关键作用,其返回值一般被忽略

v include: :  调用其他的配置文件中定义的配置信息

PAM 认证机制

v  复杂 详细实现: 使用一个或多个“status=action”

ü[status1=action1 status2=action …]

Status:检查结果的返回状态

Action: 采取行为 ok done die bad ignore reset

ü ok 模块通过,继续检查

ü done  模块通过,返回最后结果给应用

ü bad  结果失败,继续检查

ü die  结果失败,返回失败结果给应用

ü ignore  结果忽略,不影响最后结果

ü reset  忽略已经得到的结果

94

PAM 认证机制

vmodule-path:  模块路径

ü  相对路径:

/lib64/security目录下的模块可使用相对路径

如:pam_shells.so pam_limits.so

ü  绝对路径:

v  模块通过读取配置文件完成用户对系统资源的使用控制

/etc/security/*.conf

v  注意 :修改PAM 配置文件将马上 生效

v  建议:编辑pam 规则时 ,保持至少打开 一个root 会话,以防止

root 身份验证 错误

v Arguments 用来传递给该模块的参数

 

pam 文档说明

v/user/share/doc/pam-*

v rpm -qd pam:查看pam的文档

v man –k pamman 帮助里pam模块的使用

v man 名 模块名 man rootok

v 《 《The Linux-PAM System Administrators‘ Guide

用户必须使用的shells类型:

技术分享

PAM 模块示例

v  模块: :pam_shells

v  功能:检查有效shell

v man pam_shells

v  示例:不允许使用/bin/csh的用户本地登录

vim /etc/pam.d/login

auth required pam_shells.so

vim /etc/shells

 去掉 /bin/csh

useradd –s /bin/csh testuser

testuser将不可登录

tail /var/log/secure

 

技术分享

技术分享

在完整的模块中人为的添加一个模块(第一行),改完立马生效

 

 

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享


PAM 模块示例

v  模块:pam_securetty.so

v  功能: 只允许root 用户在/etc/securetty 列出的安全终端上

登陆

v  示例: 允许root telnet 登陆

vi /etc/ pam.d/login

#auth required pam_securetty.so # 将这一行加上注释

或者/etc/securetty文件中加入

pts/0,pts/1…pts/n

 

PAM 模块示例

v  模块:pam_nologin.so

v  功能: 如果/etc/nologin文件存在, 将导致非root 用户不能登陆

,如果 用户shell /sbin/nologin  时,当该用户登陆时,会显示/etc/nologin.txt文件内容,并拒绝登陆

技术分享

PAM 模块示例

v  模块:pam_limits.so

v  功能:在用户级别实现对其可使用的资源的限制,例如:可

打开的文件数量,可运行的进程数量,可用内存空间技术分享

v  修改限制的实现方式:

ü (1)  ulimit 命令,立即生效,但无法保存

目前各种资源的默认限制:

技术分享

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

技术分享

-u 最大用户进程数

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

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

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

/etc/security/limits.d/*.conf

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

<domain> <type> <item> <value>

PAM 认证机制

pam_limits.so

v<domain>  应用于哪些对象

ü Username  单个用户

ü @group  组内所有用户

ü * 所有用户

v<type>  限制的类型

ü Soft  软限制, 普通用户自己可以修改

ü Hard  硬限制, root 用户设定,且通过kernel 强制生效

ü - 二者同时限定

v<item>  限制的资源

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

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

v<value>  指定具体值

示例:pam_limits.so

v  限制用户最多打开的文件数和运行进程 数

v/etc/pam.d/system-auth

session required pam_limits.so

v vim /etc/security/limits.conf

apache – nofile 10240 apache 用户可打开10240 个文件

student hard nproc 20  不能运行 超过20 个进程

 

 

技术分享

技术分享

技术分享

技术分享

技术分享



本文出自 “13280264” 博客,转载请与作者联系!

以上是关于PAM 认证机制的主要内容,如果未能解决你的问题,请参考以下文章

PAM 认证机制

62PAM认证机制

PAM认证机制

[转帖]Linux-PAM认证机制

linux系统之pam模块

系统安全——PAM模块