在 Ubuntu 和 Debian 上啓用雙因子身份驗證的三種備選方案

這篇文章主要介紹了在 Ubuntu 和 Debian 上啓用雙因子身份驗證的三種備選方案,文中較詳細的給大家介紹了爲 SSH 啓用雙因子驗證的三種方式,需要的朋友可以參考下

如何爲你的 SSH 服務器安裝三種不同的雙因子身份驗證方案。

如今,安全比以往更加重要,保護 SSH 服務器是作爲系統管理員可以做的最爲重要的事情之一。傳統地,這意味着禁用密碼身份驗證而改用 SSH 密鑰。無疑這是你首先應該做的,但這並不意味着 SSH 無法變得更加安全。

雙因子身份驗證就是指需要兩種身份驗證才能登錄。可以是密碼和 SSH 密鑰,也可以是密鑰和第三方服務,比如 Google。這意味着單個驗證方法的泄露不會危及服務器。

以下指南是爲 SSH 啓用雙因子驗證的三種方式。

當你修改 SSH 配置時,總是要確保有一個連接到服務器的第二終端。第二終端意味着你可以修復你在 SSH 配置中犯的任何錯誤。打開的終端將一直保持,即便 SSH 服務重啓。

SSH 密鑰和密碼

SSH 支持對登錄要求不止一個身份驗證方法。

/etc/sh/sshd_config 中的 SSH 服務器配置文件中的 AuthenticationMethods 選項中設置了身份驗證方法。

當在 /etc/ssh/sshd_config 中添加下一行時,SSH 需要提交一個 SSH 密鑰,然後提示輸入密碼:

AuthenticationMethods "publickey,password"

如果你想要根據使用情況設置這些方法,那麼請使用以下附加配置:

Match User jsmith
    AuthenticationMethods "publickey,password"

當你已經編輯或保存了新的 sshd_config 文件,你應該通過運行以下程序來確保你沒有犯任何錯誤:

sshd -t

任何導致 SSH 不能啓動的語法或其他錯誤都將在這裏標記出來。當 ssh-t 運行時沒有錯誤,使用 systemctl 重新啓動

SSH:

systemctl restart sshd

現在,你可以使用新終端登錄,以覈實你會被提示輸入密碼並需要 SSH 密鑰。如果你用 ssh-v,例如:

ssh -v [email protected]

你將可以看到登錄的每一步。

注意,如果你確實將密碼設置成必需的身份驗證方法,你要確保將 PasswordAuthentication 選項設置成 yes。

使用 Google Authenticator 的 SSH

Google 在 Google 自己的產品上使用的雙因子身份驗證系統可以集成到你的 SSH 服務器中。如果你已經使用了Google

Authenticator,那麼此方法將非常方便。

雖然 libpam-google-authenticator 是由 Google 編寫的,但它是開源的。此外,Google Authenticator 是由 Google 編寫的,但並不需要 Google 帳戶才能工作。多虧了 Sitaram Chamarty 的貢獻

如果你還沒有在手機上安裝和配置 Google Authenticator,請參閱 這裏的說明。

首先,我們需要在服務器上安裝 Google Authenticatior 安裝包。以下命令將更新你的系統並安裝所需的軟件包:

apt-get update
apt-get upgrade
apt-get install libpam-google-authenticator

現在,我們需要在你的手機上使用 Google Authenticatior APP 註冊服務器。這是通過首先運行我們剛剛安裝的程序完成的:

google-authenticator

運行這個程序時,會問到幾個問題。你應該以適合你的設置的方式回答,然而,最安全的選項是對每個問題回答 y。如果以後需要更改這些選項,您可以簡單地重新運行 google-authenticator 並選擇不同的選項。

當你運行 google-authenticator 時,一個二維碼會被打印到終端上,有些代碼看起來像這樣:

Your new secret key is: VMFY27TYDFRDNKFY
Your verification code is 259652
Your emergency scratch codes are:
  96915246
  70222983
  31822707
  25181286
  28919992

你應該將所有這些代碼記錄到一個像密碼管理器一樣安全的位置。“scratch codes” 是單一的使用代碼,即使你的手機不可用,它總是允許你訪問。

要將服務器註冊到 Authenticator APP 中,只需打開應用程序並點擊右下角的紅色加號即可。然後選擇掃描條碼選項,掃描打印到終端的二維碼。你的服務器和應用程序現在連接。

回到服務器上,我們現在需要編輯用於 SSH 的 PAM (可插入身份驗證模塊),以便它使用我們剛剛安裝的身份驗證器安裝包。PAM 是獨立系統,負責 Linux 服務器上的大多數身份驗證。

需要修改的 SSH PAM 文件位於 /etc/pam.d/sshd ,用以下命令編輯:

nano /etc/pam.d/sshd

  在文件頂部添加以下行:

auth required pam_google_authenticator.so

此外,我們還需要註釋掉一行,這樣 PAM 就不會提示輸入密碼。改變這行:

# Standard Un*x authentication.
@include common-auth

爲如下:

# Standard Un*x authentication.
# @include common-auth
``` 

接下來,我們需要編輯 SSH 服務器配置文件:

nano /etc/ssh/sshd_config “`

改變這一行:

ChallengeResponseAuthentication no

爲:

ChallengeResponseAuthentication yes

  接下來,添加以下代碼行來啓用兩個身份驗證方案:SSH 密鑰和谷歌認證器(鍵盤交互):

AuthenticationMethods "publickey,keyboard-interactive"

  在重新加載 SSH 服務器之前,最好檢查一下在配置中沒有出現任何錯誤。執行以下命令:

sshd -t

如果沒有標識出任何錯誤,用新的配置重載 SSH:

systemctl reload sshd.service

  現在一切都應該開始工作了。現在,當你登錄到你的服務器時,你將需要使用 SSH 密鑰,並且當你被提示輸入:

Verification code:

打開 Authenticator APP 並輸入爲您的服務器顯示的 6 位代碼。

Authy

Authy 是一個雙重身份驗證服務,與 Google 一樣,它提供基於時間的代碼。然而,Authy 不需要手機,因爲它提供桌面和平板客戶端。它們還支持離線身份驗證,不需要 Google 帳戶。

你需要從應用程序商店安裝 Authy 應用程序,或 Authy 下載頁面所鏈接的桌面客戶端。

安裝完應用程序後,需要在服務器上使用 API 密鑰。這個過程需要幾個步驟:

  1. 在這裏註冊一個賬戶。
  2. 向下滾動到 “Authy” 部分。
  3. 在帳戶上啓用雙因子認證(2FA)。
  4. 回 “Authy” 部分。
  5. 爲你的服務器創建一個新的應用程序。
  6. 從新應用程序的 “General Settings” 頁面頂部獲取 API 密鑰。你需要 “PRODUCTION API KEY”旁邊的眼睛符號來顯示密鑰。如圖:

在某個安全的地方記下 API 密鑰。

現在,回到服務器,以 root 身份運行以下命令:

curl -O 'https://raw.githubusercontent.com/authy/authy-ssh/master/authy-ssh'
bash authy-ssh install /usr/local/bin

  當提示時輸入 API 鍵。如果輸入錯誤,你始終可以編輯 /usr/local/bin/authy-ssh 再添加一次。

Authy 現已安裝。但是,在爲用戶啓用它之前,它不會開始工作。啓用 Authy 的命令有以下形式:

/usr/local/bin/authy-ssh enable <system-user> <your-email> <your-phone-country-code> <your-phone-number>

  root 登錄的一些示例細節:

/usr/local/bin/authy-ssh enable root [email protected] 44 20822536476

如果一切順利,你會看到:

User was registered

現在可以通過運行以下命令來測試 Authy:

authy-ssh test

最後,重載 SSH 實現新的配置:

systemctl reload sshd.service

  Authy 現在正在工作,SSH 需要它才能登錄。

現在,當你登錄時,你將看到以下提示:

Authy Token (type 'sms' to request a SMS token):

  你可以輸入手機或桌面客戶端的 Authy APP 上的代碼。或者你可以輸入 sms, Authy 會給你發送一條帶有登錄碼的短信。

可以通過運行以下命令卸載 Authy:

/usr/local/bin/authy-ssh uninstall

總結

以上所述是小編給大家介紹的在 Ubuntu 和 Debian 上啓用雙因子身份驗證的三種備選方案,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對神馬文庫網站的支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章