pam认证原理
1.PAM认证一般遵循这样的顺序:Service(服务)→PAM(配置文件)→pam_*.so
2.PAM认证首先要确定那一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
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认证机制
PAM相关文件
用配置文件/etc/pam.conf
专用配置文件/etc/pam.d/*
说明:
1. 服务名(application)telnet、login、ftp等,服务名字“OTHER”代表所有没有在该文件中明确配置的其它服务
5. Arguments 用来传递给该模块的参数
模块类型(module-type)
6. Control:PAM库如何处理与该服务相关的PAM模块成功或失败情况
两种方式实现:简单和复杂
简单方式实现:一个关健词实现
required :一票否决,表示本模块必须返回成功才能通过认证,但是如果该模块返回失败,失败结果也不会立即通知用户,而是要等到同一type中的所有模块全部执行完毕再将失败结果返回给应用程序。即为必要条件
requisite :一票否决,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一type内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件
sufficient :一票通过,表明本模块返回成功则通过身份认证的要求,不必再执行同一type内的其它模块,但如果本模块返回失败可忽略,即为充分条件
optional :表明本模块是可选的,它的成功与否不会对身份认证起关键作用,其返回值一般被忽略
include: 调用其他的配置文件中定义的配置信息
复杂详细实现:使用一个或多个“status=action”
module-path: 模块路径
1. 相对路径:
/lib64/security目录下的模块可使用相对路径 如:pam_shells.so、pam_limits.so
2. 绝对路径:
a.模块通过读取配置文件完成用户对系统资源的使用控制/etc/security/*.conf
b.注意:修改PAM配置文件将马上生效
c. 建议:编辑pam规则时,保持至少打开一个root会话,以防止root身份验证错误
3. Arguments 用来传递给该模块的参数
pam文档说明
/user/share/doc/pam-*
rpm -qd pam
man –k pam_
man 模块名 如man rootok
《The Linux-PAM System Administrators' Guide》
PAM模块示例
v 模块:pam_securetty.so
v 功能:只允许root
1. Pam 功能模块存放位置:
2.配置文件
3.为每个应用模块提供配置文件:
调用过程:
5.1 用的shell在/etc/shells 里就能登陆,否则就登陆不了
在该文件加上shells检测,required,一票否决
把该shell注释掉
现在发现该shell登陆不了
本地登陆出现问题,更改 vim login
该终端注释掉 ,(如果上面改的不是login界面,将不受影响)
在字符界面登陆不上
日志会有记录
2. 模块二:limit
限制root安全登陆,在/etc/securetty里就能登陆,否则就登陆不了
root账户不能通过telnet登录上去
在/etc/securetty文件中加入pts/0,pts/1…pts/n
在vi /etc/pam.d/login
#auth required pam_securetty.so #将这一行加上注释
3. 模块:pam_nologin.so
v 功能:如果/etc/nologin文件存在,将导致非root用户不能登陆,如果用户shell是/sbin/nologin时,当该用户登陆时,会显
示/etc/nologin.txt文件内容,并拒绝登陆
查看一下该模块功能
touch该文件就会发现,用户登陆不了
普通用户登陆不了
root用户可以登录
如果该文件有内容,也会显示出来
root可以
好了,现在可以删除/etc/nologin,要不然以后普通用户都登陆不了
4. 模块: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_limits.so
v <domain> 应用于哪些对象
ü Username 单个用户
ü @group 组内所有用户
ü * 所有用户
v <type> 限制的类型
ü Soft 软限制,普通用户自己可以修改
ü Hard 硬限制,由root用户设定,且通过kernel强制生效
ü - 二者同时限定
v <item> 限制的资源
ü nofile 所能够同时打开的最大文件数量,默认为1024
ü nproc 所能够同时运行的进程的最大数量,默认为1024
v <value> 指定具体值
查看一下功能
登陆之后使用资源,怎么控制:ulimit
修改:
修改配置文件:/etc/security/limits.conf, /etc/security/limits.d/*.conf
限制用户进程数:
查看运行进程:
好了,到此小编已经把PAM介绍完了,欢迎指错。
https://blog.51cto.com/menglin/1969908















































