centos7操作系统
在CentOS 7上实现密码复杂度策略设置
一.使用login.defs文件
解析:/etc/login.defs 是设置新建用户帐号限制的文件。该文件里的配置对root用户无效。/etc/login.defs 文件用于在Linux创建用户时,对用户的一些基本属性做默认设置,例如指定用户 UID 和 GID 的范围,用户的过期时间,密码的最大长度等
可用参数
PASS_MAX_DAYS PASS_MIN_DAYS PASS_MIN_LEN PASS_WARN_AGE UID_MIN UID_MAX GID_MIN GID_MAX CREATE_HOME UMASK 077 USERGROUPS_ENAB ENCRYPT_METHOD
二./etc/security/pwquality.conf详解
可用参数
1 retry=N:定义登录/修改密码失败时,可以重试的次数; 2 Difok=N:定义新密码中必须有几个字符要与旧密码不同。但是如果新密码中有1/2以上的字符与旧密码不同时,该新密码将被接受 3 minlen=N:定义用户密码的最小长度 4 dcredit=N:定义用户密码中必须包含多少个数字 5 ucredit=N:定义用户密码中必须包含多少个大写字母 6 lcredit=N:定义用户密码中必须包含多少个小些字母 7 ocredit=N:定义用户密码中必须包含多少个特殊字符(除数字、字母之外) 8 minclass=N: 密码组成至少拥有的字符种类(数字,大写字母小写字母特殊字符) 9 maxrepeat=N: 密码组成允许的最长连续字母长度 10 maxclassrepeat=N: the maximum number of allowed consecutive(连续)characters of the same class in the new password 11 12 其中 N=-1表示,至少有一个 |对于密码策略 <0表示最少要含有 >0表示最多 13 N=0 不检查 14 N=1
三 使用PAM pwquality模块完成 关键词: /etc/pam.d/system-auth
linux对应的密码策略模块有:pam_passwdqc 和 pam_pwquality 。其中pam_passwdqc模块对应的是/etc/login.defs,pam_pwquality对应的是/etc/security/pwquality.conf
如果直接在system-auth文件修改的话可能要加一下参数 但是如果直接找到文件的话就可以直接修改文件对应参数的数字
1 vi /etc/pam.d/system-auth
#进入system-auth文件后源文件为
由上面的pam模块文件内容看,可以将pam配置文件分为四列,
- 第一列代表模块类型
- 第二列代表控制标记
- 第三列代表模块路径
- 第四列代表模块参数
文件解析
第一列
1. auth组件:认证接口(authentication) 要求验证密码
2.account组件:检测用户是否允许访问.检测用户是否过期或则在末端时间内能否登陆
3.password组件:设置并验证密码
4.session组件:配置和管理用户sesison
第二列
1. required:该模块必须success才能进行继续。即使失败用户也不会立刻获知,直到所有相关模块完成
2.requisite:该模块必须success才能使认证继续进行. 如果模块失败则立刻停止执行
3.suffifient:如果失败则忽略
4.optinal:忽略结果,不管是否失败
第三列
PAM模块 | 结合管理类型 | 说明 | ||
pam_unix.so |
auth |
提示用户输入密码,并与/etc/shadow文件相比对.匹配返回0 |
||
account | 检查用户的账号信息(包括是否过期等).帐号可用时,返回0. | |||
password | 修改用户的密码. 将用户输入的密码,作为用户的新密码更新shadow文件 | |||
pam_shells.so |
auth account |
如果用户想登录系统,那么它的shell必须是在/etc/shells文件中之一的shell | ||
pam_deny.so |
account auth password session |
该模块可用于拒绝访问 | ||
pam_permit.so |
auth account password session |
模块任何时候都返回成功. | ||
pam_securetty.so | auth | 如果用户要以root登录时,则登录的tty必须在/etc/securetty之中. | ||
pam_listfile.so |
auth account password session |
访问应用程的控制开关 | ||
pam_cracklib.so | password |
这个模块可以插入到一个程序的密码栈中,用于检查密码的强度. |
||
pam_limits.so | session | 定义使用系统资源的上限,root用户也会受此限制,可以通过/etc/security/limits.conf或/etc/security/limits.d/*.conf来设定 |