一、設定密碼規則
1)密碼長度、有效期
/etc/login.defs檔案是當建立使用者時的一些規劃,比如建立使用者時,是否需要家目錄,UID和GID的範圍;使用者的期限等等,這個檔案是可以透過root來定義的。
1
2
3
4
5
6
PASS_MAX_DAYS 90 —-兩次改變密碼之間相距的最大天數,密碼有效最大天數
PASS_MIN_DAYS 6 —-兩次改變密碼之間相距的最小天數,為零時代表任何時候都可以更改密碼
PASS_MIN_LEN 6 —-密碼最小長度
PASS_WARN_AGE 30 —-在密碼過期之前警告的天數
注意:以上只對之後新增的使用者有效,如果要修改已存在的使用者密碼規則,需要使用chage命令
2)檢視使用者的密碼規則
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
Last password change : Sep 11, 2018
Password expires : Sep 30, 2030
Password inactive : never
Account expires : never
Minimum number of days between password change : 6
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
翻譯過來:
最近一次密碼修改時間 : 9月 11, 2018
密碼過期時間 : 9月 30, 2030
密碼失效時間 :從不
帳戶過期時間 :從不
兩次改變密碼之間相距的最小天數 :6
兩次改變密碼之間相距的最大天數 :90
在密碼過期之前警告的天數 :7
=============================================================
chage是用了修改賬戶有效期限的命令。
注意:不要用該命令給root使用者加上有效期,如果密碼過期,再加上後文說的/etc/shadow檔案加鎖禁止修改,會導致root提示修改密碼,
無法成功修改密碼,從而無法登陸。 如果要修改密碼過期時間為"從不"
修改方法:
# chage -M 90 -m 6 -W 30 test
# chage -M 99999 kevin
# chage -l username 檢視系統賬戶的當前設定
# chage -M 600 fzwb_word 修改fzwb_word賬戶密碼的有效天數為600天。過了這個天數,賬戶密碼無效
# chage -E "Jun 16, 2016" fzwb_word 設定fzwb_word賬戶的具體到期時間。過了這個日期,賬戶就無效。預設是never (fzwb_word為ftp的賬戶賬戶)
注意:
chage -M 針對的是賬戶密碼過期時間。
chage -E 這個命令針對的是賬戶過期時間
設定賬戶過期時間,除了使用chage -E命令,還可以使用usermod -e命令
# usermod -e "Jun 16, 2016" fzwb_word 設定fzwb_word賬戶的具體到期時間。預設是never (fzwb_word為ftp的賬戶賬戶)
下面命令檢視, fzwb_word 這個賬戶的時間到 2015 年 6 月 10 號就到期了!!
修改為 2016 月 6 月 16 號到期!
[root@kevin ~]# chage -l fzwb_word
Minimum: 0
Maximum: 99999
Warning: 7
Inactive: -1
Last Change: Jun 15, 2012
Password Expires: Never
Password Inactive: Never
Account Expires: Jun 10, 2015
[root@kevin ~]# usermod -e "Jun 16, 2016" fzwb_word
Account Expires: Jun 16, 2016
--------------------------------------------------------------------------------
可以使用chage命令來手動修改賬戶的相關屬性:
格式:chage [選項] 賬戶名
[選項]
-m:密碼可更改的最小天數。為零時代表任何時候都可以更改密碼。
-M:密碼保持有效的最大天數。
-w:賬戶密碼到期前,提前收到警告資訊的天數。
-E:帳號到期的日期。過了這天,此帳號將不可用。
-d:上一次更改的日期。
-i:停滯時期。如果一個密碼已過期這些天,那麼此帳號將不可用。
-l:例出當前的設定。由非特權賬戶來確定他們的密碼或帳號何時過期。
例項如下:
[root@kevin ~]# chage -l wangshibo
Last password change : Mar 09, 2017 //賬戶建立時間
Password expires : Aug 30, 2022 //賬戶密碼過期時間
Account expires : never //賬戶過期時間
Minimum number of days between password change : 0
Maximum number of days between password change : 2000
[root@kevin ~]# usermod -e "Jun 16, 2018" wangshibo
Last password change : Mar 09, 2017
Password expires : Aug 30, 2022
Account expires : Jun 16, 2018
[root@kevin ~]# chage -M 20 wangshibo
Password expires : Mar 29, 2017
Maximum number of days between password change : 20
[root@kevin ~]# chage -E "Jun 2, 2020" wangshibo
Account expires : Jun 02, 2020
3) 設定密碼過期的天數。 使用者必須在幾天內更改密碼。 此設定僅在建立使用者時才會產生影響,而不會影響到現有使用者。 如果設定為現有使用者,請執行命令"chage -M(days)(user)"
[root@kevin ~]# vim /etc/login.defs
# line 25: set 60 for Password Expiration
PASS_MAX_DAYS 60
4)設定可用密碼的最短天數。 至少在改變它之後,使用者必須至少使用他們的密碼。 此設定僅在建立使用者時才會產生影響,而不會影響到現有使用者。 如果設定為現有使用者,請執行命令"chage -m(days)(user)"
# line 26: set 2 for Minimum number of days available
PASS_MIN_DAYS 2
5)在到期前設定警告的天數。 此設定僅在建立使用者時才會產生影響,而不會影響到現有使用者。 如果設定為存在使用者,請執行命令"chage -W(days)(user)"
# line 28: set 7 for number of days for warnings
PASS_WARN_AGE 7
6)5次更改密碼不能有重複(即最近5次使用過的密碼就不能再用作新密碼了),並且每次修改密碼都會將歷史密碼記錄在/etc/security/opasswd檔案中
[root@kevin ~]# vim /etc/pam.d/system-auth
# near line 15: prohibit to use the same password for 5 generation in past
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
7)設定最小密碼長度。 使用者不能將密碼長度設定為小於此引數
[root@kevin ~]# authconfig --passminlen=8 --update
[root@kevin ~]# grep "^minlen" /etc/security/pwquality.conf
minlen = 8
8)為新密碼設定所需的最少字元類數(種類⇒大寫字母/小寫字母/數字/特殊字元)
[root@kevin ~]# authconfig --passminclass=2 --update
[root@kevin ~]# grep "^minclass" /etc/security/pwquality.conf
minclass = 2
9)在新密碼中設定允許的連續相同字元的最大數量
[root@kevin ~]# authconfig --passmaxrepeat=3 --update
[root@kevin ~]# grep "^maxrepeat" /etc/security/pwquality.conf
maxrepeat = 3
10)在新密碼中設定同一類的最大允許連續字元數
[root@kevin ~]# authconfig --passmaxclassrepeat=4 --update
[root@kevin ~]# grep "^maxclassrepeat" /etc/security/pwquality.conf
maxclassrepeat = 4
11)新密碼中至少需要一個小寫字元
[root@kevin ~]# authconfig --enablereqlower --update
[root@kevin ~]# grep "^lcredit" /etc/security/pwquality.conf
lcredit = -1
12)新密碼中至少需要一個大寫字元
[root@kevin ~]# authconfig --enablerequpper --update
[root@kevin ~]# grep "^ucredit" /etc/security/pwquality.conf
ucredit = -1
13)新密碼中至少需要一位數字
[root@kevin ~]# authconfig --enablereqdigit --update
[root@kevin ~]# grep "^dcredit" /etc/security/pwquality.conf
dcredit = -1
14)新密碼中至少需要一個其他字元
[root@kevin ~]# authconfig --enablereqother --update
[root@kevin ~]# grep "^ocredit" /etc/security/pwquality.conf
ocredit = -1
15)在新密碼中設定單調字元序列的最大長度(ex⇒’12345’,’fedcb’)
[root@kevin ~]# vim /etc/security/pwquality.conf
# add to the end
maxsequence = 3
16)設定舊密碼中不能出現的新密碼中的字元數
difok = 5
17)檢查新密碼中是否包含使用者passwd項的GECOS欄位中長度超過3個字元的單詞
gecoscheck = 1
18)設定不能包含在密碼中的Ssace分隔列表
badwords = denywords1 denywords2 denywords3
19)為新密碼設定雜湊/密碼演算法。 (預設是sha512)
[root@kevin ~]# authconfig --test | grep hashing
password hashing algorithm is sha512
[root@kevin ~]# authconfig --passalgo=md5 --update
password hashing algorithm is md5
一、設定密碼規則
1)密碼長度、有效期
/etc/login.defs檔案是當建立使用者時的一些規劃,比如建立使用者時,是否需要家目錄,UID和GID的範圍;使用者的期限等等,這個檔案是可以透過root來定義的。
1
2
3
4
5
6
PASS_MAX_DAYS 90 —-兩次改變密碼之間相距的最大天數,密碼有效最大天數
PASS_MIN_DAYS 6 —-兩次改變密碼之間相距的最小天數,為零時代表任何時候都可以更改密碼
PASS_MIN_LEN 6 —-密碼最小長度
PASS_WARN_AGE 30 —-在密碼過期之前警告的天數
注意:以上只對之後新增的使用者有效,如果要修改已存在的使用者密碼規則,需要使用chage命令
2)檢視使用者的密碼規則
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
Last password change : Sep 11, 2018
Password expires : Sep 30, 2030
Password inactive : never
Account expires : never
Minimum number of days between password change : 6
Maximum number of days between password change : 90
Number of days of warning before password expires : 7
翻譯過來:
最近一次密碼修改時間 : 9月 11, 2018
密碼過期時間 : 9月 30, 2030
密碼失效時間 :從不
帳戶過期時間 :從不
兩次改變密碼之間相距的最小天數 :6
兩次改變密碼之間相距的最大天數 :90
在密碼過期之前警告的天數 :7
=============================================================
chage是用了修改賬戶有效期限的命令。
注意:不要用該命令給root使用者加上有效期,如果密碼過期,再加上後文說的/etc/shadow檔案加鎖禁止修改,會導致root提示修改密碼,
無法成功修改密碼,從而無法登陸。 如果要修改密碼過期時間為"從不"
修改方法:
# chage -M 90 -m 6 -W 30 test
# chage -M 99999 kevin
# chage -l username 檢視系統賬戶的當前設定
# chage -M 600 fzwb_word 修改fzwb_word賬戶密碼的有效天數為600天。過了這個天數,賬戶密碼無效
# chage -E "Jun 16, 2016" fzwb_word 設定fzwb_word賬戶的具體到期時間。過了這個日期,賬戶就無效。預設是never (fzwb_word為ftp的賬戶賬戶)
注意:
chage -M 針對的是賬戶密碼過期時間。
chage -E 這個命令針對的是賬戶過期時間
設定賬戶過期時間,除了使用chage -E命令,還可以使用usermod -e命令
# usermod -e "Jun 16, 2016" fzwb_word 設定fzwb_word賬戶的具體到期時間。預設是never (fzwb_word為ftp的賬戶賬戶)
下面命令檢視, fzwb_word 這個賬戶的時間到 2015 年 6 月 10 號就到期了!!
修改為 2016 月 6 月 16 號到期!
[root@kevin ~]# chage -l fzwb_word
Minimum: 0
Maximum: 99999
Warning: 7
Inactive: -1
Last Change: Jun 15, 2012
Password Expires: Never
Password Inactive: Never
Account Expires: Jun 10, 2015
[root@kevin ~]# usermod -e "Jun 16, 2016" fzwb_word
[root@kevin ~]# chage -l fzwb_word
Minimum: 0
Maximum: 99999
Warning: 7
Inactive: -1
Last Change: Jun 15, 2012
Password Expires: Never
Password Inactive: Never
Account Expires: Jun 16, 2016
--------------------------------------------------------------------------------
可以使用chage命令來手動修改賬戶的相關屬性:
格式:chage [選項] 賬戶名
[選項]
-m:密碼可更改的最小天數。為零時代表任何時候都可以更改密碼。
-M:密碼保持有效的最大天數。
-w:賬戶密碼到期前,提前收到警告資訊的天數。
-E:帳號到期的日期。過了這天,此帳號將不可用。
-d:上一次更改的日期。
-i:停滯時期。如果一個密碼已過期這些天,那麼此帳號將不可用。
-l:例出當前的設定。由非特權賬戶來確定他們的密碼或帳號何時過期。
例項如下:
[root@kevin ~]# chage -l wangshibo
Last password change : Mar 09, 2017 //賬戶建立時間
Password expires : Aug 30, 2022 //賬戶密碼過期時間
Password inactive : never
Account expires : never //賬戶過期時間
Minimum number of days between password change : 0
Maximum number of days between password change : 2000
Number of days of warning before password expires : 7
[root@kevin ~]# usermod -e "Jun 16, 2018" wangshibo
[root@kevin ~]# chage -l wangshibo
Last password change : Mar 09, 2017
Password expires : Aug 30, 2022
Password inactive : never
Account expires : Jun 16, 2018
Minimum number of days between password change : 0
Maximum number of days between password change : 2000
Number of days of warning before password expires : 7
[root@kevin ~]# chage -M 20 wangshibo
[root@kevin ~]# chage -l wangshibo
Last password change : Mar 09, 2017
Password expires : Mar 29, 2017
Password inactive : never
Account expires : Jun 16, 2018
Minimum number of days between password change : 0
Maximum number of days between password change : 20
Number of days of warning before password expires : 7
[root@kevin ~]# chage -E "Jun 2, 2020" wangshibo
[root@kevin ~]# chage -l wangshibo
Last password change : Mar 09, 2017
Password expires : Mar 29, 2017
Password inactive : never
Account expires : Jun 02, 2020
Minimum number of days between password change : 0
Maximum number of days between password change : 20
Number of days of warning before password expires : 7
3) 設定密碼過期的天數。 使用者必須在幾天內更改密碼。 此設定僅在建立使用者時才會產生影響,而不會影響到現有使用者。 如果設定為現有使用者,請執行命令"chage -M(days)(user)"
1
2
3
[root@kevin ~]# vim /etc/login.defs
# line 25: set 60 for Password Expiration
PASS_MAX_DAYS 60
4)設定可用密碼的最短天數。 至少在改變它之後,使用者必須至少使用他們的密碼。 此設定僅在建立使用者時才會產生影響,而不會影響到現有使用者。 如果設定為現有使用者,請執行命令"chage -m(days)(user)"
1
2
3
[root@kevin ~]# vim /etc/login.defs
# line 26: set 2 for Minimum number of days available
PASS_MIN_DAYS 2
5)在到期前設定警告的天數。 此設定僅在建立使用者時才會產生影響,而不會影響到現有使用者。 如果設定為存在使用者,請執行命令"chage -W(days)(user)"
1
2
3
[root@kevin ~]# vim /etc/login.defs
# line 28: set 7 for number of days for warnings
PASS_WARN_AGE 7
6)5次更改密碼不能有重複(即最近5次使用過的密碼就不能再用作新密碼了),並且每次修改密碼都會將歷史密碼記錄在/etc/security/opasswd檔案中
1
2
3
[root@kevin ~]# vim /etc/pam.d/system-auth
# near line 15: prohibit to use the same password for 5 generation in past
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
7)設定最小密碼長度。 使用者不能將密碼長度設定為小於此引數
1
2
3
[root@kevin ~]# authconfig --passminlen=8 --update
[root@kevin ~]# grep "^minlen" /etc/security/pwquality.conf
minlen = 8
8)為新密碼設定所需的最少字元類數(種類⇒大寫字母/小寫字母/數字/特殊字元)
1
2
3
[root@kevin ~]# authconfig --passminclass=2 --update
[root@kevin ~]# grep "^minclass" /etc/security/pwquality.conf
minclass = 2
9)在新密碼中設定允許的連續相同字元的最大數量
1
2
3
[root@kevin ~]# authconfig --passmaxrepeat=3 --update
[root@kevin ~]# grep "^maxrepeat" /etc/security/pwquality.conf
maxrepeat = 3
10)在新密碼中設定同一類的最大允許連續字元數
1
2
3
[root@kevin ~]# authconfig --passmaxclassrepeat=4 --update
[root@kevin ~]# grep "^maxclassrepeat" /etc/security/pwquality.conf
maxclassrepeat = 4
11)新密碼中至少需要一個小寫字元
1
2
3
[root@kevin ~]# authconfig --enablereqlower --update
[root@kevin ~]# grep "^lcredit" /etc/security/pwquality.conf
lcredit = -1
12)新密碼中至少需要一個大寫字元
1
2
3
[root@kevin ~]# authconfig --enablerequpper --update
[root@kevin ~]# grep "^ucredit" /etc/security/pwquality.conf
ucredit = -1
13)新密碼中至少需要一位數字
1
2
3
[root@kevin ~]# authconfig --enablereqdigit --update
[root@kevin ~]# grep "^dcredit" /etc/security/pwquality.conf
dcredit = -1
14)新密碼中至少需要一個其他字元
1
2
3
[root@kevin ~]# authconfig --enablereqother --update
[root@kevin ~]# grep "^ocredit" /etc/security/pwquality.conf
ocredit = -1
15)在新密碼中設定單調字元序列的最大長度(ex⇒’12345’,’fedcb’)
1
2
3
[root@kevin ~]# vim /etc/security/pwquality.conf
# add to the end
maxsequence = 3
16)設定舊密碼中不能出現的新密碼中的字元數
1
2
3
[root@kevin ~]# vim /etc/security/pwquality.conf
# add to the end
difok = 5
17)檢查新密碼中是否包含使用者passwd項的GECOS欄位中長度超過3個字元的單詞
1
2
3
[root@kevin ~]# vim /etc/security/pwquality.conf
# add to the end
gecoscheck = 1
18)設定不能包含在密碼中的Ssace分隔列表
1
2
3
[root@kevin ~]# vim /etc/security/pwquality.conf
# add to the end
badwords = denywords1 denywords2 denywords3
19)為新密碼設定雜湊/密碼演算法。 (預設是sha512)
1
2
3
4
5
6
[root@kevin ~]# authconfig --test | grep hashing
password hashing algorithm is sha512
[root@kevin ~]# authconfig --passalgo=md5 --update
[root@kevin ~]# authconfig --test | grep hashing
password hashing algorithm is md5