Pam.d

一、口令长度、口令过期时间设置→/etc/login.defs

口令长度、口令过期时间设置 需要修改/etc/login.defs 文件来实现。

在/etc/login.defs 文件,里面几个选项具体配置含义如下:

PASS_MAX_DAYS 180 #密码最长过期天数 
PASS_MIN_DAYS 30 #密码最小过期天数 
PASS_MIN_LEN 8 #密码最小长度 
PASS_WARN_AGE 30 #密码过期警告天数

Password aging  controls:  Maximum number of days a password may be used.  Minimum number of days allowed between password changes.  Minimum acceptable password length.  Number of days warning given before a password expires.  99999  5  7  it Min/max values for automatic uid selection in useradd  UID_MIN  UID_MAX  500  60000  # Min/max values for automatic gid selection in groupadd  GID_MIN  GIO-MAX  500  60000

二、口令复杂度、登录失败次数限制、账号锁定时间等→/etc/pam.d/system-auth & /etc/pam.d/password-auth

system-auth 用于控制本地策略,password-auth 用于控制远程的策略

vim /etc/pam.d/system-auth

![I his f required required optional pam_env so fgrintd . so gam nullOk try _ first_pass succeed _ if. so uid quiet pam pam_deny. 50 unix.so pam succeed_if. 50 uid < See quiet pam_ pam_permit . so cr•acklib.so retry—3 type= pam_unix_ so sha512 shad'* nullok use_authtok deny . 50 pam_ key init. so gam limits. SO L success-I default-ignore] seNice in crond quiet use_uid ](img/59a2f7601d41c863e6000134.png)

一、验证类型
auth 验证用户身份,提示用户输入用户名和密码
account 基于用户表、时间、密码有效期,决定是否允许访问
password 专门用于密码修改
session 运行日志记录,或者限制用户登录次数,资源使用
二、控制
required 验证失败仍然继续,但返回 fail(不知道错在哪里)
requisite 验证失败立即结束,返回 fail
sufficient 验证成功立即返回,不再继续,否则忽略结果并继续
optional 无论结果如何,均不会影响(通常与 session 结合使用)
include 用于包含其它的配置文件
三、模块
都放在本地库目录下,我们这里是在/lib64/security/下,32 位系统是在/lib/security/ 下
pam_cracklib.s 密码策略

示例:

password requisite pam_cracklib.so try_first_pass retry=2 difok=3 minlen=8 ucredit=-1 lcredit=-1 ocredit=-1 type=
try_first_pass #验证前一次密码,不通过提示用户重新输入,依据密码字典
retry=2 #尝试次数:2,修改密码只给 2 次机会,用完退出
difok=3 #最少不同字符:3
minlen=8 #最小密码长度:8
ucredit=-1 #最少大写字母:1
lcredit=-1 #最少小写字母:1
dcredit=2 #1 个数字算 2 位,为了完整,补充在这里
ocredit=-1 #最少标点符号:1
type= #密码提示信息,一般用于提示用户关于密码组合要求的简单描述,可以为空。 内容例如是“至少 8 位,大写字母、小写字母、标点符号至少 1 个,至少 3 类组合”。
/usr/share/cracklib/pw_dict #密码字典路径,默认不需要设置,为了完整补充在这里

*说明:root 用户不受限制,并且 root 用户给其它用户重置密码也不受此限制

  • pam_tally2.so 控制用户登录行为,用于设置 Linux 用户 连续 n 次输入错误密码登录,自动锁定 x 分钟或永久锁定(这里的永久锁定指除非进行手工解 锁,否则会一直锁定)

示例:

auth required pam_tally2.so deny=3 unlock_time=15 even_deny_root root_unlock_time=20
……
account required pam_tally2.so

注:分别加在pam_unix.so之上

deny #连续输入错误密码的次数 lock_time 每次错误后锁定时间,单位为秒,一般不设置
unlock_time #连续输入错误密码被锁后,自动解锁时间
even_deny_root #根用户特别配置,符合上述条件一样被锁定(该功能慎用)
root_unlock_time #根用户自动解锁时间,配合 even_deny_root 一起使用防止永久锁定

相关命令:

pam_tally2 --user #查看用户密码输入错误次数
pam_tally2 --user --reset #重置密码错误计数器
  • pam_listfile.so 据某种规则来对用户进行访问控制的功能

示例:

# vim /etc/pam.d/sshd

account    required     pam_listfile.so item=user sense=deny file=/etc/denyuser
item=[tty|user|rhost|ruser|group|shell]:定义所采用的规则
onerr=succeed|fail:定义当出现错误(比如无法打开配置文件)时的缺省返回值
sense=allow|deny:定义当再配置文件中找到符合条件的项目时的返回值;如果没有找到符合条件的项目,则返回相反的值
file=filename:指定配置文件
apply=user|@group:定义采用非user和group的规则时,这些规则所应用的对象
  • pam_time.so 限制允许登录的时间

# vim /etc/pam.d/sshd

account    required     pam_time.so

# vim /etc/security/time.conf

sshd;*;*;MoTuWeThFrSaSu1200-1300 # services;ttys;users;times
  • pam_rootok.so root用户切换至其他用户时是否需要密码

# vim /etc/pam.d/su

auth        sufficient      pam_rootok.so

*XPAM-I.Ø  auth  Uncomment  *auth  # Uncorrnent  auth  auth  auth  account  account  password  session  session  session  the  the  sufficient  fol lowing line  sufficient  fol 10" ing line  requi red  substack  Include  suffi ri ent  include  include  incl ude  include  opt i ona I  pam_rootok. so  to implicitly trust users in the "wheel" group.  pam_Bhee1 .so trust use_uid  to require a user to be in the "*heel" group.  . so use_uid group—wheel  system-auth  post login  uid  system-auth  system-auth  system-auth  postlogin  pam_xauth . so  = use_uid quiet img

  • pam_wheel.so 限制某个组内的用户无法使用su

# vim /etc/pam.d/su

auth       required        pam_wheel.so use_uid group=wheel