如何在 Linux 上设置密码策略

如何在 Linux 上设置密码策略,第1张

用户帐号管理是系统管理员最重要的工作之一。而密码安全是系统安全中最受关注的一块。在本教程中,我将为大家介绍如何在 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天。

1、Linux对应的密码策略模块有:pam_passwdqc 和 pam_pwquality 。其中pam_passwdqc模块对应的是/etc/login.defs,pam_pwquality对应的是/etc/security/pwquality.conf   ,  我记得默认就包含用户名与密码不能一致。linux设置密码复杂程度

2、模块的添加方法:/etc/pam.d/passwd

password    required    pam_pwquality.so retry=3

3、模块的配置方法有两种:

一、password  required pam_pwquality.so dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0

二、添加到/etc/security/pwquality.conf 中

4、/etc/security/pwquality.conf详解:

retry=N:定义登录/修改密码失败时,可以重试的次数;

Difok=N:定义新密码中必须有几个字符要与旧密码不同。但是如果新密码中有1/2以上的字符与旧密码不同时,该新密码将被接受;

minlen=N:定义用户密码的最小长度;

dcredit=N:定义用户密码中必须包含多少个数字;

ucredit=N:定义用户密码中必须包含多少个大写字母;

lcredit=N:定义用户密码中必须包含多少个小些字母;

ocredit=N:定义用户密码中必须包含多少个特殊字符(除数字、字母之外);

其中 =-1表示,至少有一个

5、/etc/login.defs详解:

PASS_MAX_DAYS   99999     #密码的最大有效期, 99999:永久有期

PASS_MIN_DAYS   0          #是否可修改密码,0可修改,非0多少天后可修改

PASS_MIN_LEN    5          #密码最小长度,使用pam_cracklib module,该参数不再有效

PASS_WARN_AGE   7         #密码失效前多少天在用户登录时通知用户修改密码

6、实际生产环境配置

/etc/security/pwquality.conf :

minlen = 8

minclass = 1

maxrepeat = 0

maxclassrepeat = 4

lcredit = -1

ucredit = -1

dcredit = -1

ocredit = -1

difok=5

/etc/login.defs:

PASS_MAX_DAYS 90

PASS_MIN_LEN 12

PASS_MIN_DAYS 7

PASS_WARN_AGE 30

UMASK 077

一、password  required pam_pwquality.so dcredit=-1 ucredit=-1 ocredit=-1 lcredit=0

二、添加到/etc/security/pwquality.conf 中

4、/etc/security/pwquality.conf详解:

retry=N:定义登录/修改密码失败时,可以重试的次数;

Difok=N:定义新密码中必须有几个字符要与旧密码不同。但是如果新密码中有1/2以上的字符与旧密码不同时,该新密码将被接受;

minlen=N:定义用户密码的最小长度;

dcredit=N:定义用户密码中必须包含多少个数字;

ucredit=N:定义用户密码中必须包含多少个大写字母;

lcredit=N:定义用户密码中必须包含多少个小些字母;

ocredit=N:定义用户密码中必须包含多少个特殊字符(除数字、字母之外);

其中 =-1表示,至少有一个

5、/etc/login.defs详解:

PASS_MAX_DAYS   99999     #密码的最大有效期, 99999:永久有期

PASS_MIN_DAYS   0          #是否可修改密码,0可修改,非0多少天后可修改

PASS_MIN_LEN    5          #密码最小长度,使用pam_cracklib module,该参数不再有效

PASS_WARN_AGE   7         #密码失效前多少天在用户登录时通知用户修改密码

6、实际生产环境配置

/etc/security/pwquality.conf :

minlen = 8

minclass = 1

maxrepeat = 0

maxclassrepeat = 4

lcredit = -1

ucredit = -1

dcredit = -1

ocredit = -1

difok=5

/etc/login.defs:

PASS_MAX_DAYS 90

PASS_MIN_LEN 12

PASS_MIN_DAYS 7

PASS_WARN_AGE 30

UMASK 077

用户帐号管理是系统管理员最重要的工作之一。而密码安全是系统安全中最受关注的一块。本文将为大家介绍如何在 Linux 上设置系统用户密码复杂度策略。密码复杂度假设你已经在你的 Linux 系统上使用了 PAM (Pluggable Authentication Modules,插入式验证模块),因为这些年所有的 Linux 发行版都在使用它。一、准备工作安装 PAM 的 cracklib 模块,cracklib 能提供额外的密码检查能力。Debian、Ubuntu 或 Linux Mint 系统上:1$sudoapt-getinstalllibpam-cracklibCentOS、Fedora、RHEL 系统已经默认安装了 cracklib PAM 模块,所以在这些系统上无需执行上面的 *** 作。为了强制实施密码策略,我们需要修改 /etc/pam.d 目录下的 PAM 配置文件。一旦修改,策略会马上生效。注意:此教程中的密码策略只对非 root 用户有效,对 root 用户无效。二、禁止使用旧密码找到同时有 “password” 和 “pam_unix.so” 字段并且附加有 “remember=5” 的那行,它表示禁止使用最近用过的5个密码(己使用过的密码会被保存在 /etc/security/opasswd 下面)。Debian、Ubuntu 或 Linux Mint 系统上:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8180718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存