1. pam_securetty.so
类型:auth
作用:只对root有限定,限定root登陆的终端,系统默认的“安全”中断保存在/etc/securetty中
pam_access.so
类型:account
作用:基于登录名,主机名或者所属域,ip地址或者网络,终端编号(类似于/etc/securetty)。默认的配置文件为/etc/security/access.conf
2. pam_tally2.so
类型:auth
作用:当用户输入密码的错误次数超过指定次数时,锁定账户
参数:
onerr=[fail|succeed]:
file=/path/to/counter:当登陆超过允许次数时,日志保存的地方。默认的为/var/log/tallylog。当开启的时候,每当登陆失败一次,则会写入一次,使用pam_tally2 可以读出
audit:如果用户找不到,则把此用户名记录到日志中
silent:不输出任何信息
no_log_info:不进行日志记录
deny=N:当用户连续输错n次是,在第n+1次锁定该用户,没有设定解锁解锁时间,则锁定之后需要手工解锁。解锁命令: pam_tally.so -u username --reset
lock_time=n:当输入密码错误一次时,在N秒内不能再次登陆该账户。
unlock_time=n:解锁时间,当账户被锁定时,过n秒后,该账户被解除锁定(清空/var/log/tallylog中的相关信息),配合deny参数使用
magic_root:当uid=0时,不会往/var/log/tallylog中写入计数,即这个PAM不生效
even_deny_root:对root用户生效(不加magic_root参数,对root也是不处理的)
root_unlock_time=n:是针对even_deny_root的,root用户的解锁时间
每当用户成功登陆过一次后,/var/log/tallylog中关于这个用户的记录就会清空
3. pam_cracklib
类型:password
作用:限定更改密码的长度以及复杂度
参数:
dubug:把修改密码的行为记录到日志中
retry=N:修改密码时,允许错误的次数,默认是1次
difok=N:新密码与旧密码不同的位数。如果超过一半不同,则通过验证,则忽略difok的设置
minlen=N:密码的最短长度(参考credit计算后的度量长度,非实际长度)
dcredit=N:N个以内的数字的字符长度计算值翻倍
ucredit=N:N个以内的大写字母的字符长度计算值翻倍
lcredit=N:N个以内的小写字母的字符长度计算值翻倍
ocredit=N:N个以内的特殊字符的字符长度计算值翻倍
minclass=N:密码组成的范围(数字,大小写字母,特殊字符)
maxrepeat=N:最多与上一个密码重复
4. pam_limits.so
类型:session
作用:限制资源的使用,默认的配置文件为/etc/security/limits.conf是全局的,/etc/security/limits.d/下存放各个子文件
5. pam_listfile.so
类型:auth
作用:验证用户是否能够登陆
参数:
item=[tty|user|rhost|ruser|group|shell]:控制的对象
sense=[allow|deny]:控制的方法
file=/path/filename:文件的路径,每个占一行
onerr=[succeed|fail]:指定某类事件发生时的返回值。
实例:
auth required pam_listfile.so onerr=succeed item=user sense=deny file=/etc/ftpusers
保存在/etc/ftpusers中的用户,是不允许的。
6. pam_nologin.so
类型:auth
作用:用于拒绝除root外的不同用户的登陆(当/etc/nologin存在,或者重新制定file的情况下)
参数:auth
file=/path/nologin:如果文件存在,当拒绝用户登陆的时候,同时会输出该文件中保存的内容。默认文件为/etc/nologin。
详细内容请参考:http://www.91ri.org/5157.html
----------------------------------------------------------
PAM配置文件的每一行的格式:Module-type Control-flag Module-path Arguments
模块类型 控制字符 模块路径 模块参数
Module-type:
auth:确定有关用户认证的两方面。第一,他确认用户就是他们自己,这通过应用程序提示用户输入密码 或者其他正式身份的办法。第二,这类模块会赋予成员资格。
account:处理非认证级的账号管理。典型的用法是基于一天的不同时间来限制、允许访问某服务,确认账号是否被锁定。限制当前可用的系统资源(最大用户数)或者限制特定用户—root只能从控制台登陆。
session:一系列有关动作,只在用户得到/失去服务时要做的事。这包括记录用户的登录/退出、挂载必要的目录等。限制用户使用资源数量(进程数、CPU时间、打开文件数等等)。
password:设置密码。
Control-flag:
required:表示本模块必须返回成功才能通过认证,但是如果该模块返回失败的话,失败结果也不会立即 通知用户,而是要等到同一stack中的所有模块全部执行完毕再将失败结果返回给应用程序。可以认为是一个必要条件。
requisite:与required类似,该模块必须返回成功才能通过认证,但是一旦该模块返回失败,将不再执行 同一stack内的任何模块,而是直接将控制权返回给应用程序。是一个必要条件。注:Solaris不支持。
sufficient:表明本模块返回成功已经足以通过身份认证的要求,不必再执行同一stack内的其它模块,但是 如果本模块返回失败的话可以忽略。可以认为是一个充分条件。
optional:表明本模块是可选的,它的成功与否一般不会对身份认证起关键作用,其返回值一般被忽略。
include,从字面就知道什么意思了。包含另外一个配置文件。
Module-path:
RedHat的PAM module存放目录默认是在/lib/security(32位系统)或/lib64/security(64位系统)。在各个模块的配置文件里,不用写绝对路径,直接写这个默认目录下面的模块名就可以了。当然,也可以写绝对路径。
Arguments:
各个模块的参数都不一样,具体的要开发者的man手册。无效参数不会对结果有影响,但是会被日志记录 下来。首先,看看/lib64/security有没有这个模块,再:man 模块名
转载于:https://blog.51cto.com/foolishfish/1372738