Linux中國

如何為登錄和 sudo 設置雙因子認證

安全就是一切。我們生活的當今世界,數據具有令人難以置信的價值,而你也一直處於數據丟失的風險之中。因此,你必須想盡辦法保證你桌面系統和伺服器中數據的安全。結果,管理員和用戶就會創建極其複雜的密碼、使用密碼管理器甚至其它更複雜的東西。但是,如果我告訴你你可以只需要一步,至多兩步就能登錄到你的 Linux 伺服器或桌面系統中呢?多虧了 Google 身份驗證器,現在你可以做到了。並且,配置也極其簡單。

我會給你簡要介紹為登錄和 sudo 設置雙因子認證的步驟。我基於 Ubuntu 16.04 桌面系統進行介紹,但這些步驟也適用於其它伺服器。為了實現雙因子認證,我會使用 Google 身份驗證器

這裡有個非常重要的警告:一旦你設置了認證,沒有一個從認證器中獲得的由 6 個數字組成的驗證碼你就不可能登錄賬戶(或者執行 sudo 命令)。這也給你增加了一步額外的操作,因此如果你不想每次登錄到 Linux 伺服器(或者使用 sudo)的時候都要拿出你的智能手機,這個方案就不適合你。但你也要記住,這額外的一個步驟也給你帶來一層其它方法無法給予的保護。

話不多說,開始吧。

安裝必要的組件

安裝 Google 身份驗證器 Google Authenticator ,首先要解決兩個問題。一是安裝智能機應用。下面是如何從 Google 應用商店安裝的方法:

  1. 在你的安卓設備中打開 Google 應用商店
  2. 搜索 google 身份驗證器 Google Authenticator
  3. 找到並點擊有 Google Inc. 標識的應用
  4. 點擊安裝
  5. 點擊「接受」
  6. 等待安裝完成

接下來,我們繼續在你的 Linux 機器上安裝這個認證器。步驟如下:

  1. 打開一個終端窗口
  2. 輸入命令 sudo apt-get install google-authenticator
  3. 輸入你的 sudo 密碼並敲擊回車
  4. 如果有彈窗提示,輸入 y 並敲擊回車
  5. 等待安裝完成

接下來配置使用 google-authenticator 進行登錄。

配置

要為登錄和 sudo 添加雙因子認證只需要編輯一個文件,即 /etc/pam.d/common-auth。打開並找到如下一行:

auth    [success=1 default=ignore]      pam_unix.so nullok_secure

在這行上面添加:

auth required pam_google_authenticator.so

保存並關閉文件。

下一步就是為系統中的每個用戶設置 google-authenticator(否則他們就不能登錄了)。為了簡單起見,我們假設你的系統中有兩個用戶:jack 和 olivia。首先為 jack 設置(我們假設這是我們一直使用的賬戶)。

打開一個終端窗口並輸入命令 google-authenticator。之後會問你一系列的問題(每個問題你都應該用 y 回答)。問題包括:

  • 是否允許更新你的 "/home/jlwallen/.google_authenticator" 文件 (y/n) y
  • 是否禁止多個用戶使用同一個認證令牌?這會限制你每 30 秒內只能登錄一次,但能增加你注意到甚至防止中間人攻擊的可能 (y/n)
  • 默認情況下令牌時長為 30 秒即可,為了補償客戶端和伺服器之間可能出現的時間偏差,我們允許使用當前時間之前或之後的其它令牌。如果你無法進行時間同步,你可以把這個時間窗口由默認的 1:30 分鐘增加到 4 分鐘。是否希望如此 (y/n)
  • 如果你嘗試登錄的計算機沒有針對暴力破解進行加固,你可以為驗證模塊啟用速率限制。默認情況下,限制攻擊者每 30 秒不能嘗試登陸超過 3 次。是否啟用速率限制 (y/n)

一旦完成了問題回答,你就會看到你的密鑰、驗證碼以及 5 個 緊急刮碼 emergency scratch code 。把這些刮碼列印出來並保存。你可以在無法使用手機的時候使用它們(每個刮碼僅限使用一次)。密鑰用於你在 Google 身份驗證器上設置賬戶,驗證碼是你能當下就能夠立即使用(如果需要)的一次性驗證碼。

設置應用

現在你已經配置好了用戶 jack。在設置用戶 olivia 之前,你需要在 Google 身份驗證器應用上為 jack 添加賬戶(LCTT 譯註:實際操作情形中,是為 jack 的手機上安裝的該應用創建一個賬戶)。在打開應用,點擊「菜單」按鈕(右上角三個豎排點)。點擊「添加賬戶」然後點擊「輸入提供的密鑰」。在下一個窗口(圖1),你需要輸入你運行 google-authenticator 應用時提供的 16 個數字的密鑰。給賬戶取個名字(以便你記住這用於哪個賬戶),然後點擊「添加」。

圖1: 在 Google Authenticator 應用上新建賬戶

(LCTT 譯註:Google 身份驗證器也可以掃描你在伺服器上設置時顯示的二維碼,而不用手工輸入密鑰)

添加完賬戶之後,你就會看到一個 6 個數字的密碼,你每次登錄或者使用 sudo 的時候都會需要這個密碼。

最後,在系統上設置其它賬戶。正如之前提到的,我們會設置一個叫 olivia 的賬戶。步驟如下:

  1. 打開一個終端窗口
  2. 輸入命令 sudo su olivia
  3. 在智能機上打開 Google 身份驗證器
  4. 在終端窗口(圖2)中輸入(應用提供的) 6 位數字驗證碼並敲擊回車
  5. 輸入你的 sudo 密碼並敲擊回車
  6. 以新用戶輸入命令 google-authenticator,回答問題並記錄生成的密鑰和驗證碼。

成功為 olivia 用戶設置好之後,用 google-authenticator 命令,在 Google 身份驗證器應用上根據用戶信息(和之前為第一個用戶添加賬戶相同)添加一個新的賬戶。現在你在 Google 身份驗證器應用上就會有 jack 和 olivia 兩個賬戶了。(LCTT 譯註:在實際操作情形中,通常是為 jack 和 olivia 兩個人的手機分別設置。)

圖2: 為 sudo 輸入 6位數字驗證碼

好了,就是這些。每次你嘗試登錄系統(或者使用 sudo) 的時候,在你輸入用戶密碼之前,都會要求你輸入提供的 6 位數字驗證碼。現在你的 Linux 機器就比添加雙因子認證之前安全多了。雖然有些人會認為這非常麻煩,我仍然推薦使用,尤其是那些保存了敏感數據的機器。

via: https://www.linux.com/learn/how-set-2-factor-authentication-login-and-sudo

作者:JACK WALLEN 譯者:ictlyh 校對:wxy


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

對這篇文章感覺如何?

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

    You may also like

    Leave a reply

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

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

    More in:Linux中國