針對Centos7下的系統用戶的密碼規則複雜度的設置,處於安全考慮,說明以下:git
1、設置密碼規則算法
1)密碼長度、有效期
/etc/login.defs文件是當建立用戶時的一些規劃,好比建立用戶時,是否須要家目錄,UID和GID的範圍;用戶的期限等等,這個文件是能夠經過root來定義的。vim
PASS_MAX_DAYS 90 —-兩次改變密碼之間相距的最大天數,密碼有效最大天數 PASS_MIN_DAYS 6 —-兩次改變密碼之間相距的最小天數,爲零時表明任什麼時候候均可以更改密碼 PASS_MIN_LEN 6 —-密碼最小長度 PASS_WARN_AGE 30 —-在密碼過時以前警告的天數 注意:以上只對以後新增的用戶有效,若是要修改已存在的用戶密碼規則,須要使用chage命令
2)查看用戶的密碼規則安全
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)"bash
[root@kevin ~]# vim /etc/login.defs # line 25: set 60 for Password Expiration PASS_MAX_DAYS 60
4)設置可用密碼的最短天數。 至少在改變它以後,用戶必須至少使用他們的密碼。 此設置僅在建立用戶時纔會產生影響,而不會影響到現有用戶。 若是設置爲現有用戶,請運行命令"chage -m(days)(user)"ui
[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)"spa
[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文件中ssr
[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)爲新密碼設置所需的最少字符類數(種類⇒大寫字母/小寫字母/數字/特殊字符)unix
[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)設置舊密碼中不能出現的新密碼中的字符數
[root@kevin ~]# vim /etc/security/pwquality.conf # add to the end difok = 5
17)檢查新密碼中是否包含用戶passwd項的GECOS字段中長度超過3個字符的單詞
[root@kevin ~]# vim /etc/security/pwquality.conf # add to the end gecoscheck = 1
18)設置不能包含在密碼中的Ssace分隔列表
[root@kevin ~]# vim /etc/security/pwquality.conf # add to the end badwords = denywords1 denywords2 denywords3
19)爲新密碼設置散列/密碼算法。 (默認是sha512)
[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
2、帳戶鎖定策略實現
策略要求以下: - 設定鎖定的閾值爲5次 - 鎖定時間爲5分鐘即300秒 - 必須全部用戶都受限,包括root 1)修改配置文件/etc/pam.d/system-auth-ac,寫入策略 [root@server ~]# vim /etc/pam.d/system-auth-ac auth required pam_env.so auth required pam_tally2.so even_deny_root deny=5 unlock_time=60 auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so account required pam_unix.so account required pam_tally2.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account required pam_permit.so 2)修改配置文件/etc/pam.d/password-auth-ac) [[root@server ~]# vimm /etc/pam.d/password-auth-ac auth required pam_env.so auth required pam_tally2.so deny=5 unlock_time=60 auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so account required pam_unix.so account required pam_tally2.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account required pam_permit.so 3)查看用戶鎖定狀態 [root@ server pam.d]# pam_tally2 -u wangshibo Login Failures Latest failure From wangshibo 7 12/20/16 14:02:55 192.168.10.86 4)解鎖狀態 [root@kevin ~]# pam_tally2 -r -u wangshibo Login Failures Latest failure From wangshibo 0