透過詢問-響應身份認證提高桌面登入安全
介紹
今天,Fedora 提供了多種方式來提高我們賬戶的身份認證的安全性。當然,它有我們熟悉的使用者名稱密碼登入方式,它也同樣提供了其他的身份認證選項,比如生物識別、指紋、智慧卡、一次性密碼,甚至是詢問-響應身份認證。
每種認證方式都有明確的優缺點。這點本身就可以成為一篇相當冗長的文章的主題。Fedora 雜誌之前就已經介紹過了這其中的一些選項:
- 在 Fedora 中使用 YubiKey4
- Fedora 28:在 OpenSSH 中更好的支援智慧卡
在現在的 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
本文由 LCTT 原創編譯,Linux中國 榮譽推出
相關文章
- 網站安全滲透測試檢測認證登入分析網站
- 微軟賬戶將支援無密碼身份認證登入微軟密碼
- 如何利用Linux伺服器提高Web介面的身份認證安全性Linux伺服器Web
- 透過Kerberos認證訪問Oracle11gROSOracle
- passport API 認證 -- 多表登入PassportAPI
- 增強版實名認證介面-Java身份證實名認證介面程式碼-身份認證Java
- 認證授權:一鍵登入的背後過程
- EMQX 登入認證,通過外部自建HTTP服務控制MQHTTP
- Java身份證實名認證、身份證識別介面讓您認證任性的“懶”Java
- 透過使用者名稱密碼認證保障 MQTT 接入安全密碼MQQT
- Spring+ Spring cloud + SSO單點登入應用認證SpringCloud
- Flask Session 登入認證模組FlaskSession
- JWT登入認證-專案BotBattleJWTBAT
- Redis使用認證密碼登入Redis密碼
- node.js -- 身份認證Node.js
- C++身份核驗介面程式碼、身份證OCR、身份證實名認證APIC++API
- Isito 入門(九):安全認證
- 帝國cms網站忘記後臺登入認證碼、登入安全答案怎麼辦?網站
- 透過WHQL認證的產品可以在微軟官網查詢了微軟
- app直播原始碼,登入時輸入驗證碼、簡訊驗證身份APP原始碼
- 域滲透之初識Kerberos認證過程ROS
- 天翼雲透過DCMM 4級認證
- 密碼安全和無密碼身份認證那些事兒密碼
- 實戰模擬│JWT 登入認證JWT
- JWT實現登入認證例項JWT
- Java身份證實名認證介面解鎖認證新速度Java
- mysql身份認證繞過漏洞復現(CVE-2012-2122)MySql
- 國際研報:騰訊安全IAM產品入圍身份認證領導者象限
- MongoDB身份認證機制揭秘!MongoDB
- 身份證真偽查詢介面、身份證實名認證一行python程式碼即可實現,實時資料Python
- 認證系統之登入認證系統的進階使用 (二)
- SpringBoot 整合 Shiro 密碼登入與郵件驗證碼登入(多 Realm 認證)Spring Boot密碼
- 圖解設計模式:身份認證場景的應用圖解設計模式
- 美創資料庫安全審計DAS透過IPv6 Ready Logo認證資料庫Go
- 支招 | 如何解決身份驗證系統安全問題
- C++身份證二要素實名認證api、實名認證介面C++API
- 網路滲透測試實驗二——網路嗅探與身份認證
- 使用 JWT 認證使用者身份JWT