PAM介绍


PAM介绍

PAM(Pluggable Authentication Module)是一个可插入式认证模块,在Linux系统中,各种不同的应用程序都需要完成认证功能,为了实现统一调配,把所有需要认证的功能做成一个模块(认证机制特别复杂的除外,如:https),当特定的程序需要完成认证功能的时候,就去调用PMA的认证模块,这些模块都位于系统中的/lib64/security(/lib/security:32位操作系统)目录下,但并不是所有的模块都是用来完成认证的,有些模块是为了实现PAM的某些高级功能而存在的,其中PMA的认证库是由glibc提供的,应用程序最终使用哪个PAM模块,取决于/etc/pma.d/*这个目录下的定


PAM:可插入验证模块,应用与验证分离

pam:  Pluggable Authentication Module

glibc: GNU C standard Library


/etc/pam.conf

查询某个pam一般在/etc/pam.d/目录下

ls /etc/pam.d/* |grep ssh

/etc/pam.d/*


具体示例分析:

/etc/pam.d/sshd

#%PAM-1.0

auth       required     pam_sepermit.so

auth       required     pam_listfile.so item=group sense=allow file=/etc/security/allow-groups

auth       include      password-auth

account    required     pam_nologin.so

account    include      password-auth

password   include      password-auth

# pam_selinux.so close should be the first session rule

session    required     pam_selinux.so close

session    required     pam_loginuid.so

# pam_selinux.so open should only be followed by sessions to be executed in the user context

session    required     pam_selinux.so open env_params

session    optional     pam_keyinit.so force revoke

session    include      password-auth


验证阶段

分四个管理阶段:不同的阶段完成整个用户登录到登录成功再到退出之前整个过程的管理,同一个阶段

可以有多个模块来共同完成管理,但是这些模块都是依次从上到下的顺序进行,四个阶段必须是

   auth-->account-->password-->session的顺序进行.每个阶段代表的意思如下:

(1)auth 验证授权阶段,验证用户是否存在,对应的密码是否正确

(2)account 验证帐号阶段,验证用户是否有效,是否被禁止登录或者是否被允许登录,帐号是否过期

(3)password 密码阶段,用户约束密码修改的时候策略以及和密码相关的任何操作

(4)session 会话阶段,用来约束用户成功登录系统之后的一切操作。


控制标记:

(1)required 必要条件,该模块必须通过验证,如果验证失败不会马上返回失败的结果,而是等同一个阶段后续的模块判断完成之后才返回失败的结果。


(2)requisite 必要条件,该模块必须通过验证,如果验证失败马上返回失败的结果,不会继续验证同一个阶段后续的模块。

(3)sufficient 充要条件,只要该条件成立,而且该条件前面的必要条件模块也成立了,那么马上返回成功结果,无需再继续验证同一个阶段后续的模块,如果该条件的模块验证失败,它就会变成可选条件,不影响整个阶段的验证,会继续完成后续的判断。

(4)optional 可选条件,不影响判断结果的条件

(5)include 包含指定的配置文件(相当于把对应的配置文件的同一个阶段的所有选项加载该行




模块


如果是32为系统则路径是/lib/security/,如果是64为系统则在/lib64/security/目录下

pam模块:pam_unix.so, pam_shells.so, pam_deny.so, pam_permit.so, pam_securetty.so, pam_listfile.so, pam_cracklib.so, pam_limits.so


实例

1限制root用户只能最多从tty2登录,不能远程使用sshd登录

cat /etc/securetty

console

tty1

tty2

cat /etc/pam.d/sshd

auth         required         pam_securetty.so

只有sshusers组的用户能使用ssh远程登录

groupadd sshusers            

vim /etc/pam.d/sshd          

auth       required     pam_listfile.so item=group sense=allow file=/etc/se vim /etc/security/allow-groups
sshusers                                          



UID为500的用户su到管理员无需输入管理员密码;

vi /etc/pam.d/su

authsufficientpam_succed_if.so uid=500 use_uid quiet


你可能感兴趣的:(pam)