
假设你已经在你的 Linux 系统上使用了 PAM (Pluggable Authentication Modules,插入式验证模块),这些年几乎所有的 Linux 发行版都在使用它。
准备工作
安装 PAM 的 cracklib 模块,cracklib 能提供额外的密码检查能力。
Debian、Ubuntu 或 Linux Mint 系统上:
$ sudo apt-get install libpam-cracklib
CentOS、Fedora、RHEL 系统已经默认安装了 cracklib PAM 模块,所以在这些系统上无需执行上面的 *** 作。
为了强制实施密码策略,我们需要修改 /etc/pam.d 目录下的 PAM 配置文件。一旦修改,策略会马上生效。
注意:此教程中的密码策略只对非 root 用户有效,对 root 用户无效。
禁止使用旧密码
找到同时有 “password” 和 “pam_unix.so” 字段并且附加有 “remember=5” 的那行,它表示禁止使用最近用过的5个密码(己使用过的密码会被保存在 /etc/security/opasswd 下面)。
Debian、Ubuntu 或 Linux Mint 系统上:
$ sudo vi /etc/pam.d/common-password password [success=1 default=ignore] pam_unix.so obscure sha512 remember=5
CentOS、Fedora、RHEL 系统上:
$ sudo vi /etc/pam.d/system-auth password sufficient pamunix.so sha512 shadow nullok tryfirstpass useauthtok remember=5
设置最短密码长度
找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “minlen=10” 的那行,它表示最小密码长度为(10 - 类型数量)。这里的 “类型数量” 表示不同的字符类型数量。PAM 提供4种类型符号作为密码(大写字母、小写字母、数字和标点符号)。如果你的密码同时用上了这4种类型的符号,并且你的 minlen 设为10,那么最短的密码长度允许是6个字符。
Debian、Ubuntu 或 Linux Mint 系统上:
$ sudo vi /etc/pam.d/common-password password requisite pam_cracklib.so retry=3 minlen=10 difok=3
CentOS、Fedora、RHEL 系统上:
$ sudo vi /etc/pam.d/system-auth password requisite pam_cracklib.so retry=3 difok=3 minlen=10
设置密码复杂度
找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1” 的那行,它表示密码必须至少包含一个大写字母(ucredit),两个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit)。
Debian、Ubuntu 或 Linux Mint 系统上:
$ sudo vi /etc/pam.d/common-password password requisite pam_cracklib.so retry=3 minlen=10 difok=3 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
CentOS、Fedora、RHEL 系统上:
$ sudo vi /etc/pam.d/system-auth password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1
设置密码过期期限
编辑 /etc/login.defs 文件,可以设置当前密码的有效期限,具体变量如下所示:
$ sudo vi /etc/login.defs PASSMAXDAYS 150 PASSMINDAYS 0 PASSWARNAGE 7
这些设置要求用户每6个月改变他们的密码,并且会提前7天提醒用户密码快到期了。
如果你想为每个用户设置不同的密码期限,使用 chage 命令。下面的命令可以查看某个用户的密码限期:
$ sudo chage -l xmodulo Last password change : Dec 30, 2013 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
默认情况下,用户的密码永不过期。
下面的命令用于修改 xmodulo 用户的密码期限:
$ sudo chage -E 6/30/2014 -m 5 -M 90 -I 30 -W 14 xmodulo
上面的命令将密码期限设为2014年6月3日。另外,修改密码的最短周期为5天,最长周期为90天。密码过期前14天会发送消息提醒用户,过期后帐号会被锁住30天。
linux中需要锁定账号的情况为:
用户在指定时间内输入错误密码的次数达到了相应的次数,账户锁定策略就会将该用户禁用。
linux对账户的锁定功能比windows的要更加广泛,强大,windows组策略中的限制,只是在系统层面的限制。
而linux借助pam(Pluggable Authentication Modules,插件式认证模块)的强大,不单止可以系统层面实现,还能在各中支持pam的应用中实现这种安全锁定策略。
linux中PAM通过提供一些动态链接库和一套统一的API,将系统提供的服务和该服务的认证方式分开,使得系统管理员可以灵活地根据需要给不同的服务配置不同的认证方式而无需更改服务程序,同时也便于向系统中添加新的认证手段。
PAM最初是集成在Solaris中,目前已移植到其它系统中,如Linux、SunOS、HP-UX9.0等。
PAM的配置是通过单个配置文件/etc/pam.conf。RedHat还支持另外一种配置方式,即通过配置目录/etc/pam.d/,且这种的优先级要高于单个配置文件的方式。
扩展资料:
在 Linux 中锁定、解锁和检查给定用户帐户的状态的 *** 作:
找到同时有“password”和“pam_unix.so”字段并且附加有“remember=5”的那行,它表示禁止使用最近用过的5个密码(己使用过的密码会被保存在/etc/security/opasswd下面)。
找到同时有“password”和“pam_cracklib.so”字段并且附加有“minlen=10”的那行,它表示最小密码长度为(10-类型数量)。这里的“类型数量”表示不同的字符类型数量。PAM提供4种类型符号作为密码(大写字母、小写字母、数字和标点符号)。
如果密码同时用上了这4种类型的符号,并且你的minlen设为10,那么最短的密码长度允许是6个字符。
使用配置目录/etc/pam.d/,该目录下的每个文件的名字对应服务名,例如ftp服务对应文件/etc/pam.d/ftp。
如果名为xxxx的服务所对应的配置文件/etc/pam.d/xxxx不存 在,则该服务将使用默认的配置文件/etc/pam.d/other。每个文件由如下格式的文本行所构成:
module-typecontrol-flagmodule-patharguments;每个字段的含义和/etc/pam.conf中的相同。
密码复杂度通过/etc/pam.d/system-auth这个文件来实现的。
参考资料:百度百科-Linux
你的意思就是每次设置密码的时候不能和上一次密码重复是吧,密码策略在/etc/pam.d/system-auth里修改password中充分条件sufficient的那一行,需要加载pam_unix.so静态库文件,后面在加一些参数,如果你没有那一行的话,就需要自己加了,是充分条件啊,我的环境是rhel6的,完整一行的内容是passwordsufficientpam_unix.so sha512 shadow nullok try_first_pass use_authtok rememeber=3 ,看到木有,就是需要加remember=3,3次嘛
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)