介紹

今天,Fedora 提供了多種方式來提高我們賬戶的身份認證的安全性。當然,它有我們熟悉的用戶名密碼登錄方式,它也同樣提供了其他的身份認證選項,比如生物識別、指紋、智能卡、一次性密碼,甚至是 詢問-響應(challenge-response)身份認證。

每種認證方式都有明確的優缺點。這點本身就可以成為一篇相當冗長的文章的主題。Fedora 雜誌之前就已經介紹過了這其中的一些選項:

  • 在 Fedora 中使用 YubiKey4
  • Fedora 28:在 OpenSSH 中更好的支持智能卡

在現在的 Fedora 版本中,最安全的方法之一就是離線硬體詢問-響應。它也同樣是最容易部署的方法之一。下面是具體方法。

詢問-響應認證

從技術上來講,當你輸入密碼的時候,你就正在響應用戶名詢問。離線的詢問、響應包含了這些部分:首先是需要你的用戶名,接下來,Fedora 會要你提供一個加密的物理硬體的令牌。令牌會把另一個其存儲的加密密鑰通過 可插入式身份認證(Pluggable Authentication Module)模塊(PAM)框架來響應詢問。最後,Fedora 才會提示你輸入密碼。這可以防止其他人僅僅使用了找到的硬體令牌,或是隻使用了賬戶名密碼而沒有正確的加密密鑰。

這意味著除了你的賬戶名密碼之外,你必須事先在你的操作系統中註冊了一個或多個加密硬體令牌。你必須保證你的物理硬體令牌能夠匹配你的用戶名。

一些詢問-響應的方法,比如一次性密碼(OTP),在硬體令牌上獲取加密的代碼密鑰,然後將這個密鑰通過網路傳輸到遠程身份認證伺服器。然後這個伺服器會告訴 Fedora 的 PAM 框架,這是否是該用戶的一個有效令牌。如果身份認證伺服器在本地網路上,這個方法非常好。但它的缺點是如果網路連接斷開或是你在沒有網的遠程端工作。你會被鎖在系統之外,直到你能通過網路連接到身份認證伺服器。

有時候,生產環境會採用通過 Yubikey 使用一次性密碼(OTP)的設置,然而,在家庭或個人的系統上,你可能更喜歡詢問-響應設置。一切都是本地的,這種方法不需要通過遠程網路調用。下面這些過程適用於 Fedora 27、28 和 29.

準備

硬體令牌密鑰

首先,你需要一個安全的硬體令牌密鑰。具體來說,這個過程需要一個 Yubikey 4、Yubikey NEO,或者是最近發布的、同樣支持 FIDO2 的 Yubikey 5 系列設備。你應該購買它們中的兩個,一個做備份,以避免其中一個丟失或遭到損壞。你可以在不同的工作地點使用這些密鑰。較為簡單的 FIDO 和 FIDO U2F 版本不適用於這個過程,但是非常適合使用 FIDO 的在線服務。

備份、備份,以及備份

接下來,為你所有的重要數據製作備份,你可能想在克隆在 VM 裏的 Fedora 27/28/29 裏測試配置,來確保你在設置你自己的個人工作環境之前理解這個過程。

升級,然後安裝

現在,確定你的 Fedora 是最新的,然後通過 dnf 命令安裝所需要的 Fedora Yubikey 包。

$ sudo dnf upgrade
$ sudo dnf install ykclient* ykpers* pam_yubico*

如果你使用的是 VM 環境,例如 Virtual Box,確保 Yubikey 設備已經插進了 USB 口,然後允許 VM 控制的 USB 訪問 Yubikey。

配置 Yubikey

確認你的賬戶訪問到了 USB Yubikey:

$ ykinfo -v
version: 3.5.0

如果 Yubikey 沒有被檢測到,會出現下面這些錯誤信息:

Yubikey core error: no yubikey present

接下來,通過下面這些 ykpersonalize 命令初始化你每個新的 Yubikey。這將設置 Yubikey 配置插槽 2 使用 HMAC-SHA1 演算法(即使少於 64 個字元)進行詢問響應。如果你已經為詢問響應設置好了你的 Yubikey。你就不需要再次運行 ykpersonalize 了。

ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -oserial-api-visible

一些用戶在使用的時候將 YubiKey 留在了他們的工作站上,甚至用於對虛擬機進行詢問-響應。然而,為了更好的安全性,你可能會更願意使用手動觸發 YubiKey 來響應詢問。

要添加手動詢問按鈕觸發器,請添加 -ochal-btn-trig 選項,這個選項可以使得 Yubikey 在請求中閃爍其 LED。等待你在 15 秒內按下硬體密鑰區域上的按鈕來生成響應密鑰。

$ ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac-lt64 -ochal-btn-trig -oserial-api-visible

為你的每個新的硬體密鑰執行此操作。每個密鑰執行一次。完成編程之後,使用下面的命令將 Yubikey 配置存儲到 ~/.yubico

$ ykpamcfg -2 -v
debug: util.c:222 (check_firmware_version): YubiKey Firmware version: 4.3.4

Sending 63 bytes HMAC challenge to slot 2
Sending 63 bytes HMAC challenge to slot 2
Stored initial challenge and expected response in /home/chuckfinley/.yubico/challenge-9992567.

如果你要設置多個密鑰用於備份,請將所有的密鑰設置為相同,然後使用 ykpamcfg 工具存儲每個密鑰的詢問-響應。如果你在一個已經存在的註冊密鑰上運行 ykpersonalize 命令,你就必須再次存儲配置信息。

配置 /etc/pam.d/sudo

現在要去驗證配置是否有效,在同一個終端窗口中,你需要設置 sudo 來要求使用 Yubikey 的詢問-響應。將下面這幾行插入到 /etc/pam.d/sudo 文件中。

auth required pam_yubico.so mode=challenge-response

將上面的 auth 行插入到文件中的 auth include system-auth 行的上面,然後保存並退出編輯器。在默認的 Fedora 29 設置中,/etc/pam.d/sudo 應該像下面這樣:

#%PAM-1.0
auth required pam_yubico.so mode=challenge-response
auth include system-auth
account include system-auth
password include system-auth
session optional pam_keyinit.so revoke
session required pam_limits.so
session include system-auth

保持這個初始的終端窗口打開,然後打開一個新的終端窗口進行測試,在新的終端窗口中輸入:

$ sudo echo testing

你應該注意到了 Yubikey 上的 LED 在閃爍。點擊 Yubikey 按鈕,你應該會看見一個輸入 sudo 密碼的提示。在你輸入你的密碼之後,你應該會在終端屏幕上看見 「testing」 的字樣。

現在去測試確保失敗也正常,啟動另一個終端窗口,並從 USB 插口中拔掉 Yubikey。使用下面這條命令驗證,在沒有 Yubikey 的情況下,sudo 是否會不再正常工作。

$ sudo echo testing fail

你應該立刻被提示輸入 sudo 密碼,但即使你輸入了正確密碼,登錄也應該失敗。

設置 Gnome 桌面管理器(GDM)

一旦你的測試完成後,你就可以為圖形登錄添加詢問-響應支持了。將你的 Yubikey 再次插入進 USB 插口中。然後將下面這幾行添加到 /etc/pam.d/gdm-password 文件中:

auth required pam_yubico.so mode=challenge-response

打開一個終端窗口,然後運行下面這些命令。如果需要,你可以使用其他的編輯器:

$ sudo vi /etc/pam.d/gdm-password

你應該看到 Yubikey 上的 LED 在閃爍,按下 Yubikey 按鈕,然後在提示符處輸入密碼。

修改 /etc/pam.d/gdm-password 文件,在已有的 auth substack password-auth 行上添加新的行。這個文件的頂部應該像下面這樣:

auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
auth required pam_yubico.so mode=challenge-response
auth substack password-auth
auth optional pam_gnome_keyring.so
auth include postlogin

account required pam_nologin.so

保存更改並退出編輯器,如果你使用的是 vi,輸入鍵是按 Esc 鍵,然後在提示符處輸入 wq! 來保存並退出。

結論

現在註銷 GNOME。將 Yubikey 插入到 USB 口,在圖形登錄界面上點擊你的用戶名。Yubikey LED 會開始閃爍。觸摸那個按鈕,你會被提示輸入你的密碼。

如果你丟失了 Yubikey,除了重置密碼之外,你還可以使用備份的 Yubikey。你還可以給你的賬戶增加額外的 Yubikey 配置。

如果有其他人獲得了你的密碼,他們在沒有你的物理硬體 Yubikey 的情況下,仍然不能登錄。恭喜!你已經顯著提高了你的工作環境登錄的安全性了。


via: fedoramagazine.org/logi

作者:nabooengineer 選題:lujun9972 譯者:hopefully2333 校對:wxy

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


推薦閱讀:
相關文章