欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

安全加密之-PAM

程序员文章站 2024-03-09 08:11:23
...

时间: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 库文件的都可以受其控制

  • 认证过程:
graph LR

A[application]-->B[libpam.so]
B[/etc/pam.d/application]-->C[/lib*/secure/*.so]
C[/lib*/secure/*.so]-->D[/lib*/secure/*.conf]

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

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中

回归正题格式为:
type control module-path module-arguments

type control module-path module-arguments
auth require /lib64/secure xxx
account x
password x
-type x
  • type

    auth:账号的认证或授权
    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下的各个模块的配置文件)
本文转自 lajifeiwomoshu 51CTO博客,原文链接:http://blog.51cto.com/lajifeiwomoshu/2061652