在 Fedora 上為 SSH 設定雙因子驗證
每天似乎都有一個安全漏洞的新聞報導,說我們的資料會因此而存在風險。儘管 SSH 是一種遠端連線系統的安全方式,但你仍然可以使它更安全。本文將向你展示如何做到這一點。
此時雙因子驗證(2FA)就有用武之地了。即使你禁用密碼並只允許使用公鑰和私鑰進行 SSH 連線,但如果未經授權的使用者偷竊了你的金鑰,他仍然可以藉此訪問系統。
使用雙因子驗證,你不能僅僅使用 SSH 金鑰連線到伺服器,你還需要提供手機上的驗證器應用程式隨機生成的數字。
本文展示的方法是基於時間的一次性密碼(TOTP)演算法。Google Authenticator 用作伺服器應用程式。預設情況下,Google Authenticator 在 Fedora 中是可用的。
至於手機,你可以使用與 TOTP 相容的任何可以雙路驗證的應用程式。Andorid 或 iOS 有許多可以與 TOTP 和 Google Authenticator 配合使用的免費應用程式。本文與 FreeOTP 為例。
安裝並設定 Google Authenticator
首先,在你的伺服器上安裝 Google Authenticator。
$ sudo dnf install -y google-authenticator
執行應用程式:
$ google-authenticator
該應用程式提供了一系列問題。下面的片段展示瞭如何進行合理的安全設定:
Do you want authentication tokens to be time-based (y/n) y
Do you want me to update your "/home/user/.google_authenticator" file (y/n)? y
這個應用程式為你提供一個金鑰、驗證碼和恢復碼。把它們放在安全的地方。如果你丟失了手機,恢復碼是訪問伺服器的唯一方式。
設定手機驗證
在你的手機上安裝驗證器應用程式(FreeOTP)。如果你有一臺安卓手機,那麼你可以在 Google Play 中找到它,也可以在蘋果 iPhone 的 iTunes 商店中找到它。
Google Authenticator 會在螢幕上顯示一個二維碼。開啟手機上的 FreeOTP 應用程式,選擇新增新賬戶,在應用程式頂部選擇二維碼形狀工具,然後掃描二維碼即可。設定完成後,在每次遠端連線伺服器時,你必須提供驗證器應用程式生成的隨機數。
完成配置
應用程式會向你詢問更多的問題。下面示例展示瞭如何設定合理的安全配置。
Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y
By default, tokens are good for 30 seconds. In order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of +-1min (window size of 3) to about +-4min (window size of 17 acceptable tokens).
Do you want to do so? (y/n) n
If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y
現在,你必須設定 SSH 來利用新的雙路驗證。
配置 SSH
在完成此步驟之前,確保你已使用公鑰建立了一個可用的 SSH 連線,因為我們將禁用密碼連線。如果出現問題或錯誤,一個已經建立的連線將允許你修復問題。
在你的伺服器上,使用 sudo 編輯 /etc/pam.d/sshd
檔案。
$ sudo vi /etc/pam.d/ssh
註釋掉 auth substack password-auth
這一行:
#auth substack password-auth
將以下行新增到檔案底部:
auth sufficient pam_google_authenticator.so
儲存並關閉檔案。然後編輯 /etc/ssh/sshd_config
檔案:
$ sudo vi /etc/ssh/sshd_config
找到 ChallengeResponseAuthentication
這一行並將其更改為 yes
:
ChallengeResponseAuthentication yes
找到 PasswordAuthentication
這一行並將其更改為 no
:
PasswordAuthentication no
將以下行新增到檔案底部:
AuthenticationMethods publickey,password publickey,keyboard-interactive
儲存並關閉檔案,然後重新啟動 SSH:
$ sudo systemctl restart sshd
測試雙因子驗證
當你嘗試連線到伺服器時,系統會提示你輸入驗證碼:
[user@client ~]$ ssh user@example.com
Verification code:
驗證碼由你手機上的驗證器應用程式隨機生成。由於這個數字每隔幾秒就會發生變化,因此你需要在它變化之前輸入它。
如果你不輸入驗證碼,你將無法訪問系統,你會收到一個許可權被拒絕的錯誤:
[user@client ~]$ ssh user@example.com
Verification code:
Verification code:
Verification code:
Permission denied (keyboard-interactive).
[user@client ~]$
結論
透過新增這種簡單的雙路驗證,現在未經授權的使用者訪問你的伺服器將變得更加困難。
via: https://fedoramagazine.org/two-factor-authentication-ssh-fedora/
作者:Curt Warfield 選題:lujun9972 譯者:MjSeven 校對:wxy
相關文章
- 在 Fedora 系統上設定 zsh
- 在 Fedora 上使用 SSH 埠轉發
- 在 Ubuntu 和 Debian 上啟用雙因子身份驗證的三種備選方案Ubuntu
- Linux中為SSH啟用雙因素身份驗證Linux
- Fedora怎麼設定DVD為yum源?Fedora設定DVD為yum源的方法
- 在CentOS/RHEL上設定SSH免密碼登入CentOS密碼
- 行為驗證碼安全策略設定
- 多因子認證是什麼意思?與雙因子認證有什麼區別?
- 《數字身份驗證指南》草案中提議禁用基於簡訊的雙因子認證
- 密碼雙保險!谷歌即將預設開啟雙因子登入認證密碼谷歌
- 在 RHEL、CentOS 和 Fedora 上安裝 Git 及設定 Git 賬號的技巧CentOSGit
- 透過 ForwardAgent ,在遠端機器上,使用本機 ssh key 進行驗證Forward
- curl 設定https 不驗證證書HTTP
- 如何在Linux上為SSH登入設定電子郵件提醒Linux
- 在CentOS8中設定SSH金鑰CentOS
- Openssl 設定 雙向認證證書的過程
- iOS逆向之三 authorized_keys ssh登入越獄手機免驗證設定iOSZed
- wsl設定ssh
- 在 Fedora 上優化 bash 或 zsh優化
- 把Discord安裝在Fedora Linux上Linux
- fedora系統怎麼設定滑鼠指標大小?fedora滑鼠指標設定大小的教程指標
- 為SSH登入設定電子郵件提醒
- SSH 超時設定
- 【等保】等保測評中雙因素認證是什麼意思?等於雙因子認證嗎?
- oracle驗證設定的event是否生效:Oracle
- 在 Fedora 上安裝 MongoDB 伺服器MongoDB伺服器
- 在 Fedora 上使用 GIMP 輕鬆編輯影像
- 在 Fedora 上使用 GIMP 輕鬆編輯影象
- 使用 Eclipse 在 Fedora 上進行 PHP 開發EclipsePHP
- Install Google Chrome on Fedora 28/27, CentOS/RHEL 7.5 (在 fedora 28 等 上 安裝 chrome)GoChromeCentOS
- 基於TOTP演算法的Github兩步驗證2FA(雙因子)機制Python3.10實現演算法GithubPython
- 圖形驗證碼圖片樣式設定
- ssh配置檔案安全設定
- 雙重保險——前端bootstrapValidator驗證+後臺MVC模型驗證前端bootMVC模型
- 在 Ubuntu 15.10 上為單個網路卡設定多個 IP 地址Ubuntu
- java 雙向證書請求 雙向驗證機制 轉載Java
- 如何使用ssh_scan遠端驗證SSH服務的配置和策略
- 在Ubuntu上開啟SSH服務Ubuntu