标签: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 pam:man 帮助里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介绍
原文地址:http://13290264.blog.51cto.com/13280264/1969840