Linux 系统为用户设置复杂密码度策略

假设你已经在你的 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天。

设置完后,验证效果如下:

时间: 2024-07-31 07:22:11

Linux 系统为用户设置复杂密码度策略的相关文章

Linux系统init级别设置错误导致系统不能正常启动怎么办?

  Linux系统init级别设置错误导致系统不能正常启动怎么办? 1.在Linux启动过程中,按Esc键进入Grub界面. 2.按e修改当前Linux系统的配置. 3.选择第二行,按e键,并按如下步骤执行 1)在出现的命令行后加1(单用户模式); 2)按Enter键接收操作并后退到当前Linux配置页面; 3)按b重启Linux. 4.重启后进入Linux系统,修改/etc/inittab文件.将init级别改成你想要的,比如我在这里改成3(完整多用户模式). id:3:initdefault

win8.1系统电脑怎么设置开机密码

win8.1系统电脑怎么设置开机密码 1.电脑开机后,点击"桌面"图标; 2.在左下角右键单击开始图标,再点击"控制面板"; 3.进入"所有控制面板项"界面,点击"用户帐户; 4.点击"在电脑设置中更改我的帐户信息"; 5.选择"登录选项"--在帐户密码处点击"添加"; 6.创建密码:输入相关的密码及提示信息--点击"下一步"; 7.点击"完成&q

linux下passwd用户设置与修改密码

出于系统安全考虑,Linux系统中的每一个用户除了有其用户名外,还有其对应的用户口令.因此使用useradd命令增加时,还需使用passwd命令为每一位新增加的用户设置口令:用户以后还可以随时用passwd命令改变自己的口令. 该命令的一般格式为: passwd [用户名] 其中用户名为需要修改口令的用户名.只有超级用户可以使用"passwd 用户名"修改其他用户的口令,普通用户只能用不带参数的passwd命令修改自己的口令 passwd 语法结构: 首先,大家一定要知道"男

Linux系统Apache用户授权和访问控制

用户授权和访问控制 你也许在访问某些网站时会遇到过这样的情况,当你点击某个连接时,你的浏览器会弹出一个身份验证的对话框,要求输入账号及密码,如果没有,就无法继续浏览了.有人会以为这是用CGI做出来的,其实不然,这是WWW服务器的用户授权和访问控制机制在发挥作用. 你是否还记得在设置Apache服务环境的过程中,有--..<./Directory>这个指令,可以对不同的目录提供不同的保护.但是这样的设定,需要重新启动服务器才会生效,灵活性较差,通过AccessFile指令指定访问控制文件的方式则

Linux系统下用户进程死循环问题解决方法

在进行Linux系统操作的时候,有时候会遇到一次用户态进程死循环,即系统反应迟钝.进程挂死等问题,那么遇到这些问题又该如何解决呢?下面小编就给大家介绍下一次用户态进程死循环的问题该如何处理. 1.问题现象 业务进程(用户态多线程程序)挂死,操作系统反应迟钝,系统日志没有任何异常.从进程的内核态堆栈看,看似所有线程都卡在了内核态的如下堆栈流程中: [root@vmc116 ~]# cat /proc/27007/task/11825/stack [<ffffffff8100baf6>] reti

Linux系统时间怎么设置

Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟.系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置.当Linux启动时,硬件时钟会去读取系统时钟的 设置,然后系统时钟就会独立于硬件运作. Linux 中的所有命令(包括函数)都是采用的系统时钟设置.在Linux中,用于时钟查看和设置的命令主要有date.hwclock和clock.其 中,clock和hwclo

linux系统日期时间设置查看命令

1.date命令 date命令的功能是显示和设置系统日期和时间. 该命令的一般格式为: date [选项] 显示时间格式(以+开头,后面接格式) date 设置时间格式 命令中各选项的含义分别为: -d datestr, --date datestr 显示由datestr描述的日期 -s datestr, --set datestr 设置datestr 描述的日期 -u, --universal 显示或设置通用时间  代码如下 复制代码 查看系统时间 # date 设置系统时间 # date -

Linux系统普通用户添加80端口的方法

在Linux系统中,默认情况下只有root用户才可以绑定1024以下的端口,而普通用户需要绑定1024以下的端口,基本方法是使用的Nginx代理转发或者操作系统的iptables进行端口转发两种方法进行,本文将以tomcat为例,直接以普通用户运行tomcat,并使tomcat程序绑定80端口或者转发代理至tomcat的8080端口. 要使机器的80端口给客户端方法问,可以参考以下方式进行: iptables端口转发方式 Nginx代理模式 setcap方式  1.iptables方式 RHEL

Linux系统中用户管理的基本命令整理

  认识一下linux的权限管理其实认的不是你的用户名和密码而是识别的你的UID和GID说白了,就是你的用户ID和群组ID 代码如下: >cat /etc/passwd < p>root:x:0:0:root:/root:/bin/bash   daemon:x:1:1:daemon:/usr/sbin:/bin/sh 上边的0就是用户id,群组id也是0,当然是我现在的用户root 用户登录的时候,会根据你的用户名,譬如我的root来去/etc/passwd有没有这个用户,如果没有跳出