通過詢問-響應身份認證提高桌面登錄安全
介紹
今天,Fedora 提供了多種方式來提高我們賬戶的身份認證的安全性。當然,它有我們熟悉的用戶名密碼登錄方式,它也同樣提供了其他的身份認證選項,比如生物識別、指紋、智能卡、一次性密碼,甚至是 詢問-響應 身份認證。
每種認證方式都有明確的優缺點。這點本身就可以成為一篇相當冗長的文章的主題。Fedora 雜誌之前就已經介紹過了這其中的一些選項:
在現在的 Fedora 版本中,最安全的方法之一就是離線硬體詢問-響應。它也同樣是最容易部署的方法之一。下面是具體方法。
詢問-響應認證
從技術上來講,當你輸入密碼的時候,你就正在響應用戶名詢問。離線的詢問、響應包含了這些部分:首先是需要你的用戶名,接下來,Fedora 會要你提供一個加密的物理硬體的令牌。令牌會把另一個其存儲的加密密鑰通過 可插入式身份認證 模塊(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: https://fedoramagazine.org/login-challenge-response-authentication/
作者:nabooengineer 選題:lujun9972 譯者:hopefully2333 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive