Centos6下關於系統用戶密碼規則-運維筆記

 

隨着linux使用的廣泛,對於linux用戶以及系統的安全要求愈來愈高,而用戶密碼複雜程度是系統安全性高低的首要體現。所以如何對linux下用戶的密碼進行規則限制,以保證用戶必須使用複雜的密碼,杜絕用戶隨意使用簡單的密碼,從而提升用戶的安全性和系統的安全性。下面就不作過多贅述,直接以centos6版本爲例進行介紹:node

1)用戶密碼策略
Linux系統下的用戶密碼的有效期,是否能夠修改密碼能夠經過login.defs文件控制。linux

[root@bastion-IDC ~]# cat /etc/login.defs|grep -v "^#"|grep -v "^$"
MAIL_DIR	/var/spool/mail
PASS_MAX_DAYS	99999
PASS_MIN_DAYS	0
PASS_MIN_LEN	5
PASS_WARN_AGE	7
UID_MIN			  500
UID_MAX			60000
GID_MIN			  500
GID_MAX			60000
CREATE_HOME	yes
UMASK           077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512 

上述文件中的重要參數表示:
PASS_MAX_DAYS   99999     密碼的最大有效期, 99999:永久有期  
PASS_MIN_DAYS   0         是否可修改密碼,0表示可修改,非0表示多少天后可修改 
PASS_MIN_LEN    5         密碼最小長度,可是使用pam_cracklib.so模塊後,該參數再也不有效(這個參考下面密碼複雜度規則設定)  
PASS_WARN_AGE   7         密碼失效前多少天在用戶登陸時通知用戶修改密碼

2)用戶密碼複雜度規則設定,須要經過/etc/pam.d/system-auth文件實施(針對的是普通用戶狀態下修改密碼會生效,root用戶狀態下無效)centos6中默認是經過pam_cracklib.so模塊控制:web

[root@bastion-IDC ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
  
[root@bastion-IDC ~]# vim /etc/pam.d/system-auth
將文件中的下面兩行:
password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
改成:
password    requisite     pam_cracklib.so try_first_pass retry=3 type= minlen=8 ucredit=-2 lcredit=-4 dcredit=-1 ocredit=-1
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5
  
上面文件中參數分別說明設置密碼的時候要遵循下面的規則:
retry=3       定義登陸/修改密碼失敗時,能夠重試的次數;
type=xxx      當添加/修改密碼時,系統給出的缺省提示符是什麼,用來修改缺省的密碼提示文本。默認是不修改的,如上例。
minlen=8      定義用戶密碼的最小長度爲8位
ucredit=-2    定義用戶密碼中最少有2個大寫字母    (數字爲負數,表示至少有多少個大寫字母;數字爲正數,表示至多有多少個大寫字母;下面同理)
lcredit=-4    定義用戶密碼中最少有4個小寫字母
dcredit=-1    定義用戶密碼中最少有1個數字
ocredit=-1    定義用戶密碼中最少有1個特殊字符(除數字、字母以外)
remember=5    修改用戶密碼時最近5次用過的舊密碼就不能重用了
----------------------------------------------------------------------------
除了上面的幾個參數,還能夠設定下面的參數規則
difok=N       此選項用來規定新密碼中必需有N個字符與舊密碼不一樣。若是新密碼中有1/2以上的字符與舊密碼不一樣時,該新密碼就會被接受。
difignore=N   此選項用來設定在difok以前收到多少個字符時,difok設置會被忽略,缺省爲23。
minclass=N    此選項用來規定新密碼中的字符類別的最小數目,字符通常有四種類別:數字、大寫字母、小寫字母,以及特殊字符。

舒適提示:login.defs文件和/etc/pam.d/system-auth文件的規則設置對非root用戶起做用,在root用戶下則不會生效!若是設置root用戶密碼過時時間等,須要用change命令進行設置。示例以下:vim

以下密碼規則設置:
1)密碼有效期是3個月。即用戶建立180天后強制要求修改密碼。
2)密碼至少要過了5天后才能修改。
3)密碼最小長度是12位
4)密碼到期前的7天,用戶登陸時會提醒修改密碼

5)密碼輸入時最多可容許嘗試輸入3次密碼,3次不成功則退出密碼輸入界面。
6)新密碼中至少包括大寫字母2位、小寫字母至少2位,數字至少2位,特殊字符至少2位
7)新密碼中必須有4個字符與老密碼不一樣
8)修改用戶密碼時最近3次用過的舊密碼就不能重用了

則前4個密碼規則的配置:
[root@pinpoint-server ~]# vim /etc/login.defs
......
PASS_MAX_DAYS   180
PASS_MIN_DAYS   5
PASS_MIN_LEN    12
PASS_WARN_AGE   7

後4個密碼規則的配置:
[root@pinpoint-server ~]# vim /etc/pam.d/system-auth
......
password    requisite     pam_cracklib.so try_first_pass retry=3 type= minlen=12 ucredit=-2 lcredit=-2 dcredit=-2 ocredit=-2 difok=4
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=3
password    required      pam_deny.so

在root帳號下修改密碼,測試以上密碼規則設置後是否有效?
以下操做,說明以上設置在root帳號下無效
[root@pinpoint-server ~]# echo "123456"|passwd --stdin grace
Changing password for user grace.
passwd: all authentication tokens updated successfully.

那麼切換到非root帳號下修改密碼試試?
[grace@pinpoint-server ~]$ passwd 
Changing password for user grace.
Changing password for grace.
(current) UNIX password:         #輸入當前密碼123456
New password:                    #設置新密碼shibo@2018,不符合密碼規則
BAD PASSWORD: is too simple
New password:                    #設置新密碼kevin@201b,不符合密碼規則
BAD PASSWORD: is too simple
New password:                    #設置新密碼KeVI@2#8!w02,不符合密碼規則
Retype new password: 
passwd: all authentication tokens updated successfully.

說明以上的密碼規則設置在非root用戶下是生效的!!

3)Linux帳戶期限設定
Linux系統下可使用chage命令是用來修改賬號和密碼的有效期限。centos

需求場景:
公司給客戶開的ftp帳戶用於下載報社新聞稿件。這個是付費的,帳戶有時間限制。如果合同到期了,客戶想續約,就須要給這個ftp帳戶作延期。

注意下面修改帳戶有效期限的命令:
# 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@hlweb80 ~]# 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@hlweb80 ~]# usermod -e "Jun 16, 2016" fzwb_word
[root@hlweb80 ~]# 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@linux-node1 ~]# 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@linux-node1 ~]# usermod -e "Jun 16, 2018" wangshibo

[root@linux-node1 ~]# 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@linux-node1 ~]# chage -M 20 wangshibo

[root@linux-node1 ~]# 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@linux-node1 ~]# chage -E "Jun 2, 2020" wangshibo

[root@linux-node1 ~]# 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
相關文章
相關標籤/搜索