如何在 Linux 上強制用戶更改密碼

已發表: 2022-01-29
來自 sshd 的“密碼失敗”消息。
伊利亞·蒂切夫/Shutterstock

密碼是帳戶安全的基石。 我們將向您展示如何在 Linux 網絡上重置密碼、設置密碼有效期以及強制更改密碼。

密碼已存在近 60 年

自 1960 年代中期首次引入密碼以來,我們一直在向計算機證明我們就是我們所說的自己。 必要性是發明之母,麻省理工學院開發的兼容分時系統需要一種方法來識別系統中的不同人員。 它還需要防止人們看到彼此的文件。

Fernando J. Corbato 提出了一個方案,為每個人分配一個唯一的用戶名。 為了證明某人是他們所說的人,他們必須使用私人密碼才能訪問他們的帳戶。

密碼的問題在於它們的操作就像一把鑰匙。 任何有鑰匙的人都可以使用它。 如果有人找到、猜測或計算出您的密碼,該人就可以訪問您的帳戶。 在多因素身份驗證普遍可用之前,密碼是唯一能阻止未經授權的人(威脅行為者,在網絡安全方面)進入您的系統的方法。

廣告

可以將 Secure Shell (SSH) 建立的遠程連接配置為使用 SSH 密鑰而不是密碼,這很棒。 但是,這只是一種連接方式,不包括本地登錄。

顯然,密碼管理至關重要,使用這些密碼的人的管理也是如此。

相關:如何從 Linux Shell 創建和安裝 SSH 密鑰

密碼剖析

無論如何,是什麼讓密碼變得更好? 那麼,一個好的密碼應該具有以下所有屬性:

  • 這是不可能猜測或弄清楚的。
  • 你沒有在其他任何地方使用過它。
  • 它沒有涉及數據洩露。

Have I Been Pwned (HIBP) 網站包含超過 100 億套被洩露的憑據。 數字如此之高,其他人很可能使用了與您相同的密碼。 這意味著您的密碼可能在數據庫中,即使不是您的帳戶被破壞。

如果您的密碼在 HIBP 網站上,這意味著它在威脅參與者的蠻力和字典攻擊工具在嘗試破解帳戶時使用的密碼列表中。

一個真正隨機的密碼(如 4HW@HpJDBr%*Wt@#b~aP)實際上是無懈可擊的,但是,當然,你永遠不會記得它。 我們強烈建議您為在線帳戶使用密碼管理器。 它們為您的所有在線帳戶生成複雜的隨機密碼,您不必記住它們——密碼管理器會為您提供正確的密碼。

對於本地帳戶,每個人都必須生成自己的密碼。 他們還需要知道什麼是可接受的密碼,什麼不是。 他們必須被告知不要在其他帳戶上重複使用密碼,等等。

廣告

此信息通常位於組織的密碼策略中。 它指示人們使用最少數量的字符、混合大小寫字母、包括符號和標點符號等等。

然而,根據卡內基梅隆大學一個團隊的一篇全新論文,所有這些技巧對密碼的穩健性幾乎沒有任何影響。 研究人員發現,密碼穩健性的兩個關鍵因素是它們至少有 12 個字符長且足夠強大。 他們使用許多軟件破解程序、統計技術和神經網絡來測量密碼強度。

一開始至少 12 個字符可能聽起來令人生畏。 但是,不要考慮密碼,而是用標點符號分隔的三四個不相關單詞的密碼短語。

例如,Experte Password Checker 表示破解“chicago99”需要 42 分鐘,但破解“chimney.purple.bag”需要 4000 億年。 它也很容易記住和輸入,並且只包含 18 個字符。

相關:為什麼你應該使用密碼管理器,以及如何開始

查看當前設置

在您更改與某人的密碼有關的任何內容之前,謹慎的做法是查看他們當前的設置。 使用passwd命令,您可以使用-S (狀態)選項查看它們的當前設置。 請注意,如果您正在使用其他人的密碼設置,您還必須將sudopasswd一起使用。

我們輸入以下內容:

 sudo passwd -S 瑪麗

一行信息打印到終端窗口,如下所示。

您在該簡短的響應中看到以下信息(從左到右):

  • 人員的登錄名。
  • 此處顯示以下三個可能的指標之一:
    • P:表示該帳戶具有有效的工作密碼。
    • L:表示該帳戶已被root帳戶的所有者鎖定。
    • NP:尚未設置密碼。
  • 上次更改密碼的日期。
  • 密碼最短使用期限:帳戶所有者執行密碼重置之間必須經過的最短時間(以天為單位)。 但是,root 帳戶的所有者始終可以更改任何人的密碼。 如果此值為 0(零),則對密碼更改的頻率沒有限制。
  • 密碼最長使用期限:帳戶所有者在達到此使用期限時會提示更改其密碼。 該值以天為單位,因此值 99,999 表示密碼永不過期。
  • 密碼更改警告期:如果強制執行密碼最長使用期限,帳戶所有者將收到更改密碼的提醒。 其中第一個將在重置日期之前發送此處顯示的天數。
  • 密碼不活動時間:如果有人在超過密碼重置期限的時間內沒有訪問系統,則此人的密碼不會被更改。 此值指示寬限期在密碼到期日期之後的天數。 如果在密碼過期後該帳戶在此天數內仍處於非活動狀態,則該帳戶將被鎖定。 值 -1 禁用寬限期。

設置最長密碼期限

要設置密碼重置期限,您可以使用帶有天數的-x (最長天數)選項。 您不要在-x和數字之間留有空格,因此您可以按如下方式鍵入:

 sudo passwd -x45 瑪麗

廣告

我們被告知到期值已更改,如下所示。

使用-S (狀態)選項檢查該值現在是否為 45:

 sudo passwd -S 瑪麗

現在,在 45 天內,必須為此帳戶設置一個新密碼。 提醒將在此之前 7 天開始。 如果未及時設置新密碼,該帳戶將立即被鎖定。

強制立即更改密碼

您還可以使用命令,以便您網絡上的其他人在下次登錄時必須更改密碼。為此,您可以使用-e (過期)選項,如下所示:

 sudo passwd -e 瑪麗

然後我們被告知密碼到期信息已更改。

讓我們檢查一下-S選項,看看發生了什麼:

 sudo passwd -S 瑪麗

廣告

上次更改密碼的日期設置為 1970 年的第一天。下次此人嘗試登錄時,他或她將不得不更改密碼。 他們還必須提供當前密碼,然後才能鍵入新密碼。

密碼重置屏幕。

您應該強制更改密碼嗎?

強迫人們定期更改密碼曾經是常識。 這是大多數安裝的常規安全步驟之一,被認為是一種良好的商業實踐。

現在的想法正好相反。 在英國,國家網絡安全中心強烈建議不要強制執行定期密碼更新,美國國家標準與技術研究院對此表示贊同。 兩個組織都建議僅在您知道或懷疑其他人知道現有密碼時才強制更改密碼。

強迫人們更改密碼變得單調並鼓勵使用弱密碼。 人們通常開始重複使用帶有日期或其他數字標記的基本密碼。 或者,他們會把它們寫下來,因為他們必須經常更改它們,他們不記得它們。

我們上面提到的兩個組織推薦以下密碼安全指南:

  • 使用密碼管理器:適用於在線帳戶和本地帳戶。
  • 打開雙因素身份驗證:無論這是一個選項,請使用它。
  • 使用強密碼:對於那些不能使用密碼管理器的帳戶來說,這是一個很好的選擇。 由標點或符號分隔的三個或更多單詞是一個很好的模板。
  • 切勿重複使用密碼:避免使用與其他帳戶相同的密碼,並且絕對不要使用“我已擁有”中列出的密碼。
廣告

上述提示將允許您建立一種安全的方式來訪問您的帳戶。 一旦你有了這些指導方針,就堅持下去。 如果密碼既強大又安全,為什麼還要更改密碼? 如果它落入壞人之手——或者你懷疑它已經落入壞人之手——那麼你可以改變它。

不過,有時,這個決定不在你的掌控之中。 如果強制執行密碼的權力發生變化,您將別無選擇。 你可以為你的案子辯護並表明你的立場,但除非你是老闆,否則你必須遵守公司的政策。

相關:您應該定期更改密碼嗎?

chage 命令

您可以使用chage命令更改有關密碼老化的設置。 該命令的名稱來自“更改老化”。 這就像去掉了密碼創建元素的passwd命令。

-l (列表)選項提供與passwd -S命令相同的信息,但以更友好的方式。

我們輸入以下內容:

 sudo chage -l eric 

另一個巧妙的方法是您可以使用-E (到期)選項設置帳戶到期日期。 我們將傳遞一個日期(採用年-月-日格式)以設置 2020 年 11 月 30 日的到期日期。在該日期,該帳戶將被鎖定。

我們輸入以下內容:

 sudo chage eric -E 2020-11-30 

接下來,我們鍵入以下內容以確保已完成此更改:

 sudo chage -l eric 

我們看到帳戶到期日期已從“從不”更改為 2020 年 11 月 30 日。

廣告

要設置密碼有效期,您可以使用-M (最長天數)選項以及密碼在必須更改之前可以使用的最長天數。

我們輸入以下內容:

 sudo chage -M 45 瑪麗

我們使用-l (list) 選項鍵入以下內容,以查看命令的效果:

 sudo chage -l 瑪麗

密碼到期日期現在設置為自我們設置之日起 45 天,如圖所示,即 2020 年 12 月 8 日。

為網絡上的每個人更改密碼

創建帳戶時,密碼使用一組默認值。 您可以定義最短、最長和警告日的默認值。 然後將它們保存在一個名為“/etc/login.defs”的文件中。

您可以鍵入以下內容以在gedit中打開此文件:

 須藤 gedit /etc/login.defs 

滾動到密碼時效控件。

gedit 編輯器中的密碼老化控制。

您可以編輯這些以滿足您的要求,保存您的更改,然後關閉編輯器。 下次創建用戶帳戶時,將應用這些默認值。

廣告

如果您想更改現有用戶帳戶的所有密碼到期日期,您可以使用腳本輕鬆完成。 只需鍵入以下內容即可打開gedit編輯器並創建一個名為“password-date.sh”的文件:

 sudo gedit 密碼-date.sh 

接下來,將以下文本複製到編輯器中,保存文件,然後關閉gedit

 #!/bin/bash

重置天數=28

$(ls /home) 中的用戶名
做
  sudo chage $username -M $reset_days
  echo $username 密碼過期更改為 $reset_days
完畢

這會將每個用戶帳戶的最大天數更改為 28,從而更改密碼重置頻率。 您可以調整reset_days變量的值以適合。

首先,我們鍵入以下內容以使我們的腳本可執行:

 chmod +x 密碼日期.sh 

現在,我們可以輸入以下內容來運行我們的腳本:

 sudo ./密碼-日期.sh 

然後處理每個帳戶,如下所示。

我們輸入以下內容來檢查“mary”的帳戶:

 sudo 更改 -l 瑪麗

廣告

最大天數已設置為 28,我們被告知將在 2020 年 11 月 21 日。您還可以輕鬆修改腳本並添加更多chagepasswd命令。


密碼管理是必須認真對待的事情。 現在,您擁有控制所需的工具。