概述
本文主要內(nèi)容設(shè)定系統(tǒng)密碼的一般性原則,并按次原則在centos7上實(shí)踐和測試。
密碼安全
- 所有密碼都會以單向哈希的形式保存在可讀的 /etc/passwd 文件中
- 影子密碼可通過在/etc/shadow 文件中保存密碼哈希值,該文件只能由 root 用戶讀取
該設(shè)置什么樣的密碼
- 牢記長密比短而復(fù)雜的密碼強(qiáng)
- 可以使用系統(tǒng)自帶的
pwmake命令來生成密碼
# pwmake 56 //數(shù)字代表熵值,該值建議不少于56,
eNted4pYHIm!
# pwmake 128
=OKPumT4jOhjolApYzYxbuBOlof
pwmake可以指定最小熵值為56 位,這對于不常出現(xiàn)暴力破解的系統(tǒng)和服務(wù)密碼,這個熵值已足夠。對于攻擊者無法直接訪問哈希密碼文件的運(yùn)用程序, 64 位就足以適用于此類運(yùn)用程序。當(dāng)攻擊者可能獲取直接訪問哈希密碼的權(quán)限,或密碼被用作加密鑰匙時,對于此類情況應(yīng)使用 80 到 128 位。如果您無法明確指定一個具體的熵值,pwmake 將會使用默認(rèn)值。創(chuàng)建一個 128 位的密碼。熵值產(chǎn)生于 /dev/urandom
禁止使用以下類型密碼
- 使用字典里的單詞,外語單詞,逆序單詞,或僅使用數(shù)字。
- 使用少于 10 字符的密碼或密碼短語。
- 使用鍵盤布局的系列鍵。
- 寫下您的密碼。
- 在密碼中使用個人信息,如出生日期、周年紀(jì)念日、家庭成員姓名、或?qū)櫸锩帧?/li>
- 在不同的機(jī)器上使用相同的密碼短語或密碼。
密碼管理原則
- 設(shè)置一個強(qiáng)密碼給個人用戶使用
- 用戶創(chuàng)建自己的密碼,但要驗(yàn)證密碼是否安全,并且強(qiáng)制用戶定期更改密碼
一個完整的實(shí)踐范例
實(shí)踐的目標(biāo)
- 保證用戶密碼符合強(qiáng)密碼要求(通過pam_pwquality實(shí)現(xiàn))
當(dāng)用戶被要求創(chuàng)建或更改密碼時,可以使用
passwd命令行實(shí)用程序,這就是PAM-檢測軟件 ( 可插入驗(yàn)證模塊(Pluggable Authentication Modules)) ,可檢查密碼是否過短或是否容易被破解。這個檢查過程是由pam_pwquality.soPAM 模塊執(zhí)行的。pam_pwquality模塊是根據(jù)一系列規(guī)則,用于檢查密碼的強(qiáng)度。其程序有兩個步驟:首先,它檢查所提供的密碼是否能在字典中找到。如果不能,它將繼續(xù)進(jìn)行另外一些額外檢查。pam_pwquality與 其他 PAM 模塊一起堆疊在/etc/pam.d/passwd文件下的密碼部分。而自定義規(guī)則將在/etc/security/pwquality.conf配置文件中具體說明。
- 鎖定登錄嘗試失敗超過三次的用戶賬戶
- 限定密碼有效期為90天
操作步驟
1. 保證用戶密碼符合強(qiáng)密碼要求
這個需要修改兩個文件
- /etc/pam.d/passwd
- /etc/security/pwquality.conf
先在/etc/pam.d/passwd添加以下的內(nèi)容,這樣才能夠使用pam_quality
password required pam_pwquality.so retry=3
然后在/etc/security/pwquality.conf中添加以下的內(nèi)容
difok = 5 //新密碼與舊密碼至少有5個字符不相同
minlen = 10 //強(qiáng)制密碼不少于10位
minclass = 4 //密碼要包含4種類型的字符(大寫、特殊字符、數(shù)字、字母)
maxsequence = 3 //檢測是否有3個連續(xù)順序的字符,如:1234,abcd
maxrepeat = 3 //檢測是否有連續(xù)重復(fù)的3個字符1111
- 注意,這個文件本身自帶一些默認(rèn)值
- 且等號前后要有個空格,否則無效
- 由于root 用戶是施行密碼創(chuàng)建規(guī)則的人,盡管有出現(xiàn)警告消息,他也能夠?yàn)樽约夯蚱胀ㄓ脩粼O(shè)置任何不符合規(guī)則的密碼。
測試,當(dāng)不滿足4種類型的字符的要求時
[hyc@testdev1 ~]$ passwd
Changing password for user hyc.
Changing password for hyc.
(current) UNIX password:
New password:
BAD PASSWORD: The password contains less than 4 character
2. 鎖定登錄嘗試失敗超過三次的用戶賬戶
- 需要使用
pam_faillock模塊 - 需要修改文件/etc/pam.d/system-auth 文件和/etc/pam.d/password-auth 文件中的 auth 區(qū)段
- 注意順序
- 將登錄嘗試失敗的數(shù)據(jù)儲存在 /var/run/faillock 目錄下每位用戶的獨(dú)立文件中。
先修改/etc/pam.d/system-auth 文件和/etc/pam.d/password-auth 文件中的 auth 區(qū)段,在兩文件里分別添加以下的內(nèi)容:
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600
再在兩文件的account區(qū)段分別添加以下的內(nèi)容:
account required pam_faillock.so
測試,當(dāng)連續(xù)3次密碼錯誤后,用戶將被鎖定10分鐘,次時,如果root用戶執(zhí)行以下命令,將用以下的提示
# su - hyc
Last login: Mon Dec 30 16:26:00 CST 2019 from 192.168.3.65 on pts/2
Last failed login: Mon Dec 30 17:16:21 CST 2019 from 192.168.3.65 on ssh:notty
There were 3 failed login attempts since the last successful login.
#cat /var/run/faillock/hyc //該文件記錄了登錄失敗的IP
192.168.3.65 192.168.3.65 192.168.3.65
使用faillock查看登錄失敗的用戶
可以查看用戶自上次成功登錄后,每個用戶失敗登的情況,
[root@testdev1 ~]# faillock
hyc:
When Type Source Valid
2019-12-30 17:28:27 RHOST 192.168.3.65 V
2019-12-30 17:30:36 RHOST 192.168.3.65 V
2019-12-30 17:31:19 RHOST 192.168.3.65 V
root:
When Type Source Valid
怎樣解除用戶鎖定
faillock --user <username> --reset
[root@testdev1 ~]# faillock --user hyc --reset
You have mail in /var/spool/mail/root
[root@testdev1 ~]# faillock
hyc:
When Type Source Valid
root:
When Type Source Valid
[root@testdev1 ~]#
以上是針對非root用戶的,如果希望對root也有效,則須在/etc/pam.d/system-auth 文件和 /etc/pam.d/password-aut文件中的pam_faillock 條目里添加 even_deny_root 選項(xiàng):
auth required pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=600
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=600
auth sufficient pam_faillock.so authsucc audit deny=3 even_deny_root unlock_time=600
限定密碼有效期
可以使用chage命令來指定期限,格式如下:
chage -M 90 <username>
- -M 選項(xiàng)指定該密碼有效的最長天數(shù),要禁用密碼過期功能,通常在
-M選項(xiàng)后使用值99999