pam模块

Pam模块属于一个认证模块,通过提供一些动态链接库和一套统一的API,将系统提供的服务 和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。
配置文件/etc/pam.conf /etc/pam.d/
模块查看 man -k pam

四个认证模式参数

1、认证管理auth(authentication management)
主要是接受用户名和密码,进而对该用户的密码进行认证,并负责设置用户的一些私密信息。
2、帐户管理account(account management)
主要是检查帐户是否被允许登录系统,帐号是否已经过期,帐号的登录是否有时间段的
限制等等。
3、密码管理passwd(password management)
主要是用来修改用户的密码。
4、会话管理session(session management)
主要是提供在接入之后的限制。

四个认证过程参数

required,requisite,sufficient,optional。
required 表示本模块必须返回成功才能通过认证,但是如果该模块返回失败的话,失败结果也不会立即通知用户,而是要等到同一stack 中的所有模块全部执行完毕再将失败结果返回给应用程序。可以认为是一个必要条件。
requisite 与required类似,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行同一stack内的任何模块,而是直 接将控制权返回给应用程序。是一个必要条件。注:这种只有RedHat支持,Solaris不支持。
sufficient 表明本模块返回成功已经足以通过身份认证的要求,不必再执行同一stack内的其它模块,但是如果本模块返回失败的话可以 忽略。可以认为是一个充分条件。
optional表明本模块是可选的,它的成功与否一般不会对身份认证起关键作用,其返回值一般被忽略。
一般的模式就是:
认证模式  认证过程  模块 参数 
有的模块没参数只有配置了模块 在制定的配置文件中可以配置具体参数。  一般在/etc/security/文件中 有的也在/etc/中 有的可以自己调整。
一些模块的应用。
securetty.so:用于限制root可以的登录环节在某一台终端无法登陆的情况。
用于限制root在某台终端无法登录,一般用于login环节。
用于auth模式 没有参数 有配置文件/etc/securetty里面的终端代表可以登录,如果终端注释则代表无法登录。
写法: auth required pam_securetty.so 
nologin.so:用于限制普通用户的登录,如果设置任何普通用户将无法登录。
让普通用户无法登录,一般用于login,sshd等环节
用于auth,acct模式  有参数可以设置配置文件的路径 有配置文件默认路径 /etc/nologin 配置文件默认没有创建,如果创建则代表普通用户无法登录,文件不需要有内容,文件的内容是当普通用户被拒绝登录时弹出的显示。
写法:auth required pam_nologin.so file=/root/nologin
listfile.so:用于用户,用户组,终端,ip的验证
可以限制用户,组终端等的登录。可以用于各种登录环节
可以用于任何模式。
参数: item=[tty|user|rhost|ruser|group|shell] 限制类型
sense=[allow|deny] 黑白名单
file=/path/filename 文件路径
onerr=[succeed|fail] 黑白名单的返回 一般互相匹配、
有配置文件需要自己创建。
写法: auth required pam_listfile.so \ onerr=fail item=user sense=allow file=/etc/loginusers
cracklib.so:用于限制密码的健壮性
限制密码的长度,大小写,基于用户名等等  用于passwd或者在总的system-auth中
system-auth是一个很重要的环节 很多文件都通过include包括了他。
有参数 关于设置密码类型的参数,非常多需要查阅man 8 pam_cracklib 没有配置文件。 用于password模式
password required pam_cracklib.so difok=3 minlen=15
tally2.so:用于限制密码输入错误的次数以及选项
用于各种需要密码验证的环节  用于auth,acct模块
参数:
pam模块
用法:auth required pam_tally2.so deny=4 even_deny_root
wheel.so:用于su环节可以在切换时候不需要密码
用于各种需要密码验证的环节  用于auth,acct模块
参数:
pam模块
用法(在su中):auth sufficient pam_rootok.so
time.so:用于在某一段时间限制用户的各种登录
配置文件/etc/security/time.conf 配置文件用法 服务;终端;用户;时间段 如: sshd;*;!root;Al0800-1800
没有参数  用于各种登录环节  只能使用acct模块
limits.so:用于限制用户登录之后的各种资源使用
只能使用acct模块 用于login sshd等登录的环节
参数
pam模块
配置文件路径 /etc/security/limits.conf
pam模块
第一个组或者用户 第二个软线硬线  第三个模式 第四个值
模式如下
pam模块