SSH 的雙重認證

「安全外殼」SSH 是一種用於在主機之間建立安全連接的網路協議,通常透過連接埠 22(最好更改)。 SSH 用戶端和 SSH 伺服器適用於大多數作業系統。 幾乎任何其他網路協定都可以在 SSH 內工作,也就是說,您可以在另一台電腦上遠端工作、透過加密通道傳輸音訊或視訊串流等。 除了, 透過遠端主機上的 SOCKS 代理 您可以代表此遠端主機連接到其他主機。

身份驗證使用密碼進行,但開發人員和系統管理員傳統上使用 SSH 金鑰。 問題是私鑰可能被盜。 新增密碼理論上可以防止私鑰被盜,但實際上,在轉發和快取金鑰時,它們 無需確認仍可使用。 雙重身份驗證解決了這個問題。

如何達成雙因素認證

Honeycomb 的開發人員最近發布了 詳細說明,如何在客戶端和伺服器上實現適當的基礎架構。

這些說明假設您有一個對 Internet 開放的基本主機(堡壘)。 您希望透過網際網路從筆記型電腦或電腦連接到該主機,並存取位於其後面的所有其他裝置。 2FA 可確保攻擊者即使獲得對您筆記型電腦的存取權限(例如透過安裝惡意軟體)也無法執行相同的操作。

第一個選項是 OTP

OTP - 一次性數字密碼,在本例中將與金鑰一起用於 SSH 驗證。 開發人員寫道,這不是一個理想的選擇,因為攻擊者可能會建立一個假堡壘,攔截您的 OTP 並使用它。 但總比沒有好。

在這種情況下,在伺服器端,以下行將寫入 Chef 配置中:

  • metadata.rb
  • attributes/default.rb (從 attributes.rb)
  • files/sshd
  • recipes/default.rb (複製自 recipe.rb)
  • templates/default/users.oath.erb

用戶端安裝任何 OTP 應用程式:Google Authenticator、Authy、Duo、Lastpass、已安裝 brew install oath-toolkitapt install oathtool openssl,然後產生一個隨機的base16字串(key)。 它被轉換為行動身份驗證器使用的 Base32 格式並直接匯入到應用程式中。

因此,您可以連接到 Bastion 並看到它現在不僅需要密碼,還需要 OTP 程式碼進行身份驗證:

➜ ssh -A bastion
Enter passphrase for key '[snip]': 
One-time password (OATH) for '[user]': 
Welcome to Ubuntu 18.04.1 LTS...

第二個選項是硬體身份驗證

在這種情況下,使用者不需要每次都輸入OTP碼,因為第二因素變成了硬體設備或生物辨識。

這裡Chef的配置稍微複雜一點,客戶端的配置取決於作業系統。 但完成所有步驟後,MacOS 上的用戶端可以使用密碼並將手指放在感測器上確認 SSH 中的身份驗證(第二個因素)。

iOS 和 Android 用戶確認登入 按下智慧型手機上的一個按鈕。 這是Krypt.co的特殊技術,比OTP更安全。

在 Linux/ChromeOS 上,可以選擇使用 YubiKey USB 令牌。 當然,攻擊者可以竊取您的令牌,但他仍然不知道密碼。

來源: www.habr.com

添加評論