Linux中國

如何設置 Linux 系統的密碼策略

雖然 Linux 的設計是安全的,但還是存在許多安全漏洞的風險,弱密碼就是其中之一。作為系統管理員,你必須為用戶提供一個強密碼。因為大部分的系統漏洞就是由於弱密碼而引發的。本教程描述了在基於 DEB 系統的 Linux,比如 Debian、Ubuntu、Linux Mint 等和基於 RPM 系統的 Linux,比如 RHEL、CentOS、Scientific Linux 等的系統下設置像密碼長度密碼複雜度密碼有效期等密碼策略。

在基於 DEB 的系統中設置密碼長度

默認情況下,所有的 Linux 操作系統要求用戶密碼長度最少 6 個字元。我強烈建議不要低於這個限制。並且不要使用你的真實名稱、父母、配偶、孩子的名字,或者你的生日作為密碼。即便是一個黑客新手,也可以很快地破解這類密碼。一個好的密碼必須是至少 6 個字元,並且包含數字、大寫字母和特殊符號。

通常地,在基於 DEB 的操作系統中,密碼和身份認證相關的配置文件被存儲在 /etc/pam.d/ 目錄中。

設置最小密碼長度,編輯 /etc/pam.d/common-password 文件;

$ sudo nano /etc/pam.d/common-password

找到下面這行:

password [success=2 default=ignore] pam_unix.so obscure sha512

在末尾添加額外的文字:minlen=8。在這裡我設置的最小密碼長度為 8

password [success=2 default=ignore] pam_unix.so obscure sha512 minlen=8

保存並關閉該文件。這樣一來,用戶現在不能設置小於 8 個字元的密碼。

在基於 RPM 的系統中設置密碼長度

在 RHEL、CentOS、Scientific Linux 7.x 系統中, 以 root 身份執行下面的命令來設置密碼長度。

# authconfig --passminlen=8 --update

查看最小密碼長度,執行:

# grep "^minlen" /etc/security/pwquality.conf

輸出樣例:

minlen = 8

在 RHEL、CentOS、Scientific Linux 6.x 系統中,編輯 /etc/pam.d/system-auth 文件:

# nano /etc/pam.d/system-auth

找到下面這行並在該行末尾添加:

password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8

如上設置中,最小密碼長度是 8 個字元。

在基於 DEB 的系統中設置密碼複雜度

此設置會強制要求密碼中應該包含多少類型,比如大寫字母、小寫字母和其他字元。

首先,用下面命令安裝密碼質量檢測庫:

$ sudo apt-get install libpam-pwquality

之後,編輯 /etc/pam.d/common-password 文件:

$ sudo nano /etc/pam.d/common-password

為了設置密碼中至少有一個大寫字母,則在下面這行的末尾添加文字 ucredit=-1

password requisite pam_pwquality.so retry=3 ucredit=-1

設置密碼中至少有一個小寫字母,如下所示。

password requisite pam_pwquality.so retry=3 lcredit=-1

設置密碼中至少含有其他字元,如下所示。

password requisite pam_pwquality.so retry=3 ocredit=-1

正如你在上面樣例中看到的一樣,我們設置了密碼中至少含有一個大寫字母、一個小寫字母和一個特殊字元。你可以設置被最大允許的任意數量的大寫字母、小寫字母和特殊字元。

你還可以設置密碼中被允許的字元類的最大或最小數量。

下面的例子展示了設置一個新密碼中被要求的字元類的最小數量:

password requisite pam_pwquality.so retry=3 minclass=2

在基於 RPM 的系統中設置密碼複雜度

在 RHEL 7.x / CentOS 7.x / Scientific Linux 7.x 中:

設置密碼中至少有一個小寫字母,執行:

# authconfig --enablereqlower --update

查看該設置,執行:

# grep "^lcredit" /etc/security/pwquality.conf

輸出樣例:

lcredit = -1

類似地,使用以下命令去設置密碼中至少有一個大寫字母:

# authconfig --enablerequpper --update

查看該設置:

# grep "^ucredit" /etc/security/pwquality.conf

輸出樣例:

ucredit = -1

設置密碼中至少有一個數字,執行:

# authconfig --enablereqdigit --update

查看該設置,執行:

# grep "^dcredit" /etc/security/pwquality.conf

輸出樣例:

dcredit = -1

設置密碼中至少含有一個其他字元,執行:

# authconfig --enablereqother --update

查看該設置,執行:

# grep "^ocredit" /etc/security/pwquality.conf

輸出樣例:

ocredit = -1

RHEL 6.x / CentOS 6.x / Scientific Linux 6.x systems 中,以 root 身份編輯 /etc/pam.d/system-auth 文件:

# nano /etc/pam.d/system-auth

找到下面這行並且在該行末尾添加:

password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

如上設置中,密碼必須要至少包含 8 個字元。另外,密碼必須至少包含一個大寫字母、一個小寫字母、一個數字和一個其他字元。

在基於 DEB 的系統中設置密碼有效期

現在,我們將要設置下面的策略。

  1. 密碼被使用的最長天數。
  2. 密碼更改允許的最小間隔天數。
  3. 密碼到期之前發出警告的天數。

設置這些策略,編輯:

$ sudo nano /etc/login.defs

在你的每個需求後設置值。

PASS_MAX_DAYS 100
PASS_MIN_DAYS 0
PASS_WARN_AGE 7

正如你在上面樣例中看到的一樣,用戶應該每 100 天修改一次密碼,並且密碼到期之前的 7 天開始出現警告信息。

請注意,這些設置將會在新創建的用戶中有效。

為已存在的用戶設置修改密碼的最大間隔天數,你必須要運行下面的命令:

$ sudo chage -M <days> <username>

設置修改密碼的最小間隔天數,執行:

$ sudo chage -m <days> <username>

設置密碼到期之前的警告,執行:

$ sudo chage -W <days> <username>

顯示已存在用戶的密碼,執行:

$ sudo chage -l sk

這裡,sk 是我的用戶名。

輸出樣例:

Last password change : Feb 24, 2017
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7

正如你在上面看到的輸出一樣,該密碼是無限期的。

修改已存在用戶的密碼有效期,

$ sudo chage -E 24/06/2018 -m 5 -M 90 -I 10 -W 10 sk

上面的命令將會設置用戶 sk 的密碼期限是 24/06/2018。並且修改密碼的最小間隔時間為 5 天,最大間隔時間為 90 天。用戶賬號將會在 10 天后被自動鎖定,而且在到期之前的 10 天前顯示警告信息。

在基於 RPM 的系統中設置密碼效期

這點和基於 DEB 的系統是相同的。

在基於 DEB 的系統中禁止使用近期使用過的密碼

你可以限制用戶去設置一個已經使用過的密碼。通俗的講,就是說用戶不能再次使用相同的密碼。

為設置這一點,編輯 /etc/pam.d/common-password 文件:

$ sudo nano /etc/pam.d/common-password

找到下面這行並且在末尾添加文字 remember=5

password        [success=2 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512 remember=5

上面的策略將會阻止用戶去使用最近使用過的 5 個密碼。

在基於 RPM 的系統中禁止使用近期使用過的密碼

這點對於 RHEL 6.x 和 RHEL 7.x 和它們的衍生系統 CentOS、Scientific Linux 是相同的。

以 root 身份編輯 /etc/pam.d/system-auth 文件,

# vi /etc/pam.d/system-auth

找到下面這行,並且在末尾添加文字 remember=5

password     sufficient     pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

現在你了解了 Linux 中的密碼策略,以及如何在基於 DEB 和 RPM 的系統中設置不同的密碼策略。

就這樣,我很快會在這裡發表另外一天有趣而且有用的文章。在此之前請保持關注。如果您覺得本教程對你有幫助,請在您的社交,專業網路上分享並支持我們。

via: https://www.ostechnix.com/how-to-set-password-policies-in-linux/

作者:SK 選題:lujun9972 譯者:liujing97 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國