Linux如何設(shè)置密碼復(fù)雜度?
對(duì)于 Linux 系統(tǒng)管理員來(lái)說(shuō),用戶管理是最重要的事之一。這涉及到很多因素,實(shí)現(xiàn)強(qiáng)密碼策略是用戶管理的其中一個(gè)方面。移步后面的 URL 查看如何 在 Linux 上生成一個(gè)強(qiáng)密碼。它會(huì)限制系統(tǒng)未授權(quán)的用戶的訪問(wèn)。
所有人都知道 Linux 的默認(rèn)策略很安全,然而我們還是要做一些微調(diào),這樣才更安全。弱密碼有安全隱患,因此,請(qǐng)?zhí)貏e注意。移步后面的 URL 查看生成的強(qiáng)密碼的密碼長(zhǎng)度和分值。本文將教你在 Linux 中如何實(shí)現(xiàn)最安全的策略。
在大多數(shù) Linux 系統(tǒng)中,我們可以用 PAM(可插拔認(rèn)證模塊)來(lái)加強(qiáng)密碼策略。在下面的路徑可以找到這個(gè)文件。
- 在紅帽系列的系統(tǒng)中,路徑:
/etc/pam.d/system-auth
。 - Debian 系列的系統(tǒng)中,路徑:
/etc/pam.d/common-password
。
關(guān)于默認(rèn)的密碼過(guò)期時(shí)間,可以在 /etc/login.defs
文件中查看詳細(xì)信息。
為了更好理解,我摘取了文件的部分內(nèi)容:
# vi /etc/login.defs
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
詳細(xì)解釋:
PASS_MAX_DAYS
:一個(gè)密碼可使用的最大天數(shù)。PASS_MIN_DAYS
:兩次密碼修改之間最小的間隔天數(shù)。PASS_MIN_LEN
:密碼最小長(zhǎng)度。PASS_WARN_AGE
:密碼過(guò)期前給出警告的天數(shù)。
我們將會(huì)展示在 Linux 中如何實(shí)現(xiàn)下面的 11 個(gè)密碼策略。
- 一個(gè)密碼可使用的最大天數(shù)
- 兩次密碼修改之間最小的間隔天數(shù)
- 密碼過(guò)期前給出警告的天數(shù)
- 密碼歷史記錄/拒絕重復(fù)使用密碼
- 密碼最小長(zhǎng)度
- 最少的大寫字母?jìng)€(gè)數(shù)
- 最少的小寫字母?jìng)€(gè)數(shù)
- 最少的數(shù)字個(gè)數(shù)
- 最少的其他字符(符號(hào))個(gè)數(shù)
- 賬號(hào)鎖定 — 重試
- 賬號(hào)解鎖時(shí)間
密碼可使用的最大天數(shù)是什么?
這一參數(shù)限制一個(gè)密碼可使用的最大天數(shù)。它強(qiáng)制用戶在過(guò)期前修改他/她的密碼。如果他們忘記修改,那么他們會(huì)登錄不了系統(tǒng)。他們需要聯(lián)系管理員才能正常登錄。這個(gè)參數(shù)可以在 /etc/login.defs
文件中設(shè)置。我把這個(gè)參數(shù)設(shè)置為 90 天。
# vi /etc/login.defs
PASS_MAX_DAYS 90
密碼最小天數(shù)是什么?
這個(gè)參數(shù)限制兩次修改之間的最少天數(shù)。舉例來(lái)說(shuō),如果這個(gè)參數(shù)被設(shè)置為 15 天,用戶今天修改了密碼,那么在 15 天之內(nèi)他都不能修改密碼。這個(gè)參數(shù)可以在 /etc/login.defs
文件中設(shè)置。我設(shè)置為 15 天。
# vi /etc/login.defs
PASS_MIN_DAYS 15
密碼警告天數(shù)是什么?
這個(gè)參數(shù)控制密碼警告的前置天數(shù),在密碼即將過(guò)期時(shí)會(huì)給用戶警告提示。在警告天數(shù)結(jié)束前,用戶會(huì)收到日常警告提示。這可以提醒用戶在密碼過(guò)期前修改他們的密碼,否則我們就需要聯(lián)系管理員來(lái)解鎖密碼。這個(gè)參數(shù)可以在 /etc/login.defs
文件中設(shè)置。我設(shè)置為 10 天。
# vi /etc/login.defs
PASS_WARN_AGE 10
注意: 上面的所有參數(shù)僅對(duì)新賬號(hào)有效,對(duì)已存在的賬號(hào)無(wú)效。
密碼歷史或拒絕重復(fù)使用密碼是什么?
這個(gè)參數(shù)控制密碼歷史。它記錄曾經(jīng)使用過(guò)的密碼(禁止使用的曾用密碼的個(gè)數(shù))。當(dāng)用戶設(shè)置新的密碼時(shí),它會(huì)檢查密碼歷史,如果他們要設(shè)置的密碼是一個(gè)曾經(jīng)使用過(guò)的舊密碼,將會(huì)發(fā)出警告提示。這個(gè)參數(shù)可以在 /etc/pam.d/system-auth
文件中設(shè)置。我設(shè)置密碼歷史為 5。
# vi /etc/pam.d/system-auth
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5
密碼最小長(zhǎng)度是什么?
這個(gè)參數(shù)表示密碼的最小長(zhǎng)度。當(dāng)用戶設(shè)置新密碼時(shí),系統(tǒng)會(huì)檢查這個(gè)參數(shù),如果新設(shè)的密碼長(zhǎng)度小于這個(gè)參數(shù)設(shè)置的值,會(huì)收到警告提示。這個(gè)參數(shù)可以在 /etc/pam.d/system-auth
文件中設(shè)置。我設(shè)置最小密碼長(zhǎng)度為 12。
# vi /etc/pam.d/system-auth
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12
try_first_pass retry=3
:在密碼設(shè)置交互界面,用戶有 3 次機(jī)會(huì)重設(shè)密碼。
設(shè)置最少的大寫字母?jìng)€(gè)數(shù)?
這個(gè)參數(shù)表示密碼中至少需要的大寫字母的個(gè)數(shù)。這些是密碼強(qiáng)度參數(shù),可以讓密碼更健壯。當(dāng)用戶設(shè)置新密碼時(shí),系統(tǒng)會(huì)檢查這個(gè)參數(shù),如果密碼中沒(méi)有大寫字母,會(huì)收到警告提示。這個(gè)參數(shù)可以在 /etc/pam.d/system-auth
文件中設(shè)置。我設(shè)置密碼(中的大寫字母)的最小長(zhǎng)度為 1 個(gè)字母。
# vi /etc/pam.d/system-auth
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12 ucredit=-1
設(shè)置最少的小寫字母?jìng)€(gè)數(shù)?
這個(gè)參數(shù)表示密碼中至少需要的小寫字母的個(gè)數(shù)。這些是密碼強(qiáng)度參數(shù),可以讓密碼更健壯。當(dāng)用戶設(shè)置新密碼時(shí),系統(tǒng)會(huì)檢查這個(gè)參數(shù),如果密碼中沒(méi)有小寫字母,會(huì)收到警告提示。這個(gè)參數(shù)可以在 /etc/pam.d/system-auth
文件中設(shè)置。我設(shè)置為 1 個(gè)字母。
# vi /etc/pam.d/system-auth
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12 lcredit=-1
設(shè)置密碼中最少的數(shù)字個(gè)數(shù)?
這個(gè)參數(shù)表示密碼中至少需要的數(shù)字的個(gè)數(shù)。這些是密碼強(qiáng)度參數(shù),可以讓密碼更健壯。當(dāng)用戶設(shè)置新密碼時(shí),系統(tǒng)會(huì)檢查這個(gè)參數(shù),如果密碼中沒(méi)有數(shù)字,會(huì)收到警告提示。這個(gè)參數(shù)可以在 /etc/pam.d/system-auth
文件中設(shè)置。我設(shè)置為 1 個(gè)數(shù)字。
# vi /etc/pam.d/system-auth
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12 dcredit=-1
設(shè)置密碼中最少的其他字符(符號(hào))個(gè)數(shù)?
這個(gè)參數(shù)表示密碼中至少需要的特殊符號(hào)的個(gè)數(shù)。這些是密碼強(qiáng)度參數(shù),可以讓密碼更健壯。當(dāng)用戶設(shè)置新密碼時(shí),系統(tǒng)會(huì)檢查這個(gè)參數(shù),如果密碼中沒(méi)有特殊符號(hào),會(huì)收到警告提示。這個(gè)參數(shù)可以在 /etc/pam.d/system-auth
文件中設(shè)置。我設(shè)置為 1 個(gè)字符。
# vi /etc/pam.d/system-auth
password requisite pam_cracklib.so try_first_pass retry=3 minlen=12 ocredit=-1
設(shè)置賬號(hào)鎖定?
這個(gè)參數(shù)控制用戶連續(xù)登錄失敗的最大次數(shù)。當(dāng)達(dá)到設(shè)定的連續(xù)失敗登錄次數(shù)閾值時(shí),鎖定賬號(hào)。這個(gè)參數(shù)可以在 /etc/pam.d/system-auth
文件中設(shè)置。
# vi /etc/pam.d/system-auth
auth required pam_tally2.so onerr=fail audit silent deny=5
account required pam_tally2.so
設(shè)定賬號(hào)解鎖時(shí)間?
這個(gè)參數(shù)表示用戶解鎖時(shí)間。如果一個(gè)用戶賬號(hào)在連續(xù)認(rèn)證失敗后被鎖定了,當(dāng)過(guò)了設(shè)定的解鎖時(shí)間后,才會(huì)解鎖。設(shè)置被鎖定中的賬號(hào)的解鎖時(shí)間(900 秒 = 15分鐘)。這個(gè)參數(shù)可以在 /etc/pam.d/system-auth
文件中設(shè)置。
# vi /etc/pam.d/system-auth
auth required pam_tally2.so onerr=fail audit silent deny=5 unlock_time=900
account required pam_tally2.so