通用 生效 资源 conf modules 没有 可选 文件数量 secure
时间:2018.1.16
作者:李强
参考:man,info,magedu 讲义, 万能的 internet
实验环境:VMware? Workstation 12 Pro ,Centos 6.9,Centos 7.4,SecureCRT Version 8.1.4
声明:以下英文纯属个人翻译,英文 B 级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠, 才能有限,希望不误人子弟为好.
Pluggable Authentication Modules
原由;
我们在系统中经常要用到各种认证,login 登录需要认证,ssh,telnet ,ftp 等需要认证,snmp,smtp 等也需要认证,总之既然大家都需要认证,那么找个人统一管理下好不好.PAM 有个各个认证模块,关于资源限制的,关于用户账号的,关于登录时间的,各个模块,当你的服务需要认证时,你只要把你的需求告诉 PAM,它就会根据 / etc/pam.d / 下你指定的认证机制来去调用 / etc/security 下各个库.
各种应用服务只需要提供服务就好,验证的事情就交给系统和 PAM 来处理,然后告诉你是提供还是拒绝服务.
只要 ldd 调用了 libpam.so 库文件的都可以受其控制
认证过程:
1. 使用者执行 / usr/bin/passwd 程序,并输入密码
graph LR
A[application]-->B[libpam.so]
B[/etc/pam.d/application]-->C[/lib*/secure/*.so]
C[/lib*/secure/*.so]-->D[/lib*/secure/*.conf]
2.passwd 开始调用 PAM 模块,PAM 模块会搜寻 passwd 程序的 PAM 相关设置文件,这个设置文件一般是在 / etc/pam.d / 里边的与程序同名的文件,即 PAM 会搜寻 / etc/pam.d/passwd 此设置文件
3. 经由 / etc/pam.d/passwd 设定文件的数据,取用 PAM 所提供的相关模块来进行验证
4. 将验证结果回传给 passwd 这个程序,而 passwd 这个程序会根据 PAM 回传的结果决定下一个动作(重新输入密码或者通过验证)
配置文件格式
man -k pam
查看各个 pam 中模块的使用帮助
man pam.conf
/etc/pam.d / 下的配置文件格式
因为其子系统太多,因此默认不存在 / etc/pam.conf 配置文件.而是放在各个子配置文件中.各个应用的 pam 认证规则配置存放在 / etc/pam.d 中
回归正题格式为:
auth:账号的认证或授权
type control module-path module-arguments
type control module-path module-arguments
auth require/lib64/secure xxx
account x
password x
-type x
type
account:与账号管理的非认证的功能:如用来限制/允许用户对某个服务的访问时间,当前有效的系统资源(最多可以登录多少账户),限制用户的位置(root用户只能通过tty终端登录)等
password:用户修改密码时密码复杂度检查机制等功能
session:用户获得服务之前或者使用服务之后需要进行的一些附加操作,比如记录打开或关闭数据的信息,监控目录等
-type:表示因为缺失而不能加载的模块将不记录到系统日志,对那些不总是安装在系统上的模块有用
control(PAM 库如何处理与该服务相关的 PAM 模块成功或失败情况, 两种方式实现:简单和复杂)
简单方式实现:一个关键字实现
require:一票否决,表示本模块必须成功才能通过
requisite:一票否决,同上
sufficient:一票通过,表示本模块返回成功则通过身份认证
optional:可选,它的成功与否不会对身份认证起关键作用,参考用
include:调用其他配置文件中定义的配置信息
复杂方式实现: 使用一个或多个"status=action"
[status1=action1 status2=action2....]
Status:检查结果的返回状态,success ,default
Action:ok,done,bad,die,ignore,reset
ok 模块通过继续检查
done 模块通过,返回最后结果给应用
bad 结果失败,继续检查
die 结果失败,返回失败结果给应用
ignore 结果忽略,不影响最后结果
reset 忽略已经得到的结果
module-path(模块路径,一般相对路径 / lib64/security 下模块)
pam_nologin.so 普通用户允许登录,如果/etc/nologin文件存在,非root用户不能登录,如果用shell是/sbin.nologin 登录时会显示/etc/nologin文件内容,并拒绝登录
pam_shells.so 控制登录终端类型,检查登录用户shell类型为 /etc/shells中的类型,方可登录
pam_securetty.so 只允许root登录在/etc/securetty列出的安全终端上
pam_limits.so 在用户级别实现对其可用的资源限制,例如:可打开的文件数量,可运行的进程数量,可使用的内存空间等.
修改限制的方式
1,ulimit命令,立即生效,单无法保存,只在当前会话有效
2,配置文件/etc/scurity/limits.conf,/etc/scurity/limits.d/*.conf
module-arguments (用来传递给该模块的参数,配置少时用参数,多时可以考虑 / etc/security 下的各个模块的配置文件)
安全加密之 - PAM
来源: http://www.bubuko.com/infodetail-2463674.html