Linux 下如何為登入和 sudo 設定雙因子認證
安全就是一切。我們生活的當今世界,資料具有令人難以置信的價值,而你也一直處於資料丟失的風險之中。因此,你必須想盡辦法保證你桌面系統和伺服器中資料的安全。結果,管理員和使用者就會建立極其複雜的密碼、使用密碼管理器甚至其它更復雜的東西。但是,如果我告訴你你可以只需要一步,至多兩步就能登入到你的 Linux 伺服器或桌面系統中呢?多虧了 Google 身份驗證器,現在你可以做到了。並且,配置也極其簡單。
我會給你簡要介紹為登入和 sudo 設定雙因子認證的步驟。我基於 Ubuntu 16.04 桌面系統進行介紹,但這些步驟也適用於其它伺服器。為了實現雙因子認證,我會使用 Google 身份驗證器。
這裡有個非常重要的警告:一旦你設定了認證,沒有一個從認證器中獲得的由 6 個數字組成的驗證碼你就不可能登入賬戶(或者執行 sudo 命令)。這也給你增加了一步額外的操作,因此如果你不想每次登入到 Linux 伺服器(或者使用 sudo)的時候都要拿出你的智慧手機,這個方案就不適合你。但你也要記住,這額外的一個步驟也給你帶來一層其它方法無法給予的保護。
話不多說,開始吧。
安裝必要的元件
安裝Google 身份驗證器(Google Authenticator),首先要解決兩個問題。一是安裝智慧機應用。下面是如何從 Google 應用商店安裝的方法:
- 在你的安卓裝置中開啟 Google 應用商店
- 搜尋 google 身份驗證器(Google Authenticator)
- 找到並點選有 Google Inc. 標識的應用
- 點選安裝
- 點選“接受”
- 等待安裝完成
接下來,我們繼續在你的 Linux 機器上安裝這個認證器。步驟如下:
- 開啟一個終端視窗
- 輸入命令 sudo apt-get install google-authenticator
- 輸入你的 sudo 密碼並敲擊回車
- 如果有彈窗提示,輸入 y 並敲擊回車
- 等待安裝完成
接下來配置使用 google-authenticator 進行登入。
配置
要為登入和 sudo 新增雙因子認證只需要編輯一個檔案,即 /etc/pam.d/common-auth。開啟並找到如下一行:
auth [success=1 default=ignore] pam_unix.so nullok_secure
在這行上面新增:
auth required pam_google_authenticator.so
儲存並關閉檔案。
下一步就是為系統中的每個使用者設定 google-authenticator(否則他們就不能登入了)。為了簡單起見,我們假設你的系統中有兩個使用者:jack 和 olivia。首先為 jack 設定(我們假設這是我們一直使用的賬戶)。
開啟一個終端視窗並輸入命令 google-authenticator。之後會問你一系列的問題(每個問題你都應該用 y 回答)。問題包括:
- 是否允許更新你的 “/home/jlwallen/.google_authenticator” 檔案 (y/n) y
- 是否禁止多個使用者使用同一個認證令牌?這會限制你每 30 秒內只能登入一次,但能增加你注意到甚至防止中間人攻擊的可能 (y/n)
- 預設情況下令牌時長為 30 秒即可,為了補償客戶端和伺服器之間可能出現的時間偏差,我們允許使用當前時間之前或之後的其它令牌。如果你無法進行時間同步,你可以把這個時間視窗由預設的 1:30 分鐘增加到 4 分鐘。是否希望如此 (y/n)
- 如果你嘗試登入的計算機沒有針對暴力破解進行加固,你可以為驗證模組啟用速率限制。預設情況下,限制攻擊者每 30 秒不能嘗試登陸超過 3 次。是否啟用速率限制 (y/n)
一旦完成了問題回答,你就會看到你的金鑰、驗證碼以及 5 個緊急刮碼(emergency scratch code)。把這些刮碼列印出來並儲存。你可以在無法使用手機的時候使用它們(每個刮碼僅限使用一次)。金鑰用於你在 Google 身份驗證器上設定賬戶,驗證碼是你能當下就能夠立即使用(如果需要)的一次性驗證碼。
設定應用
現在你已經配置好了使用者 jack。在設定使用者 olivia 之前,你需要在 Google 身份驗證器應用上為 jack 新增賬戶(LCTT 譯註:實際操作情形中,是為 jack 的手機上安裝的該應用建立一個賬戶)。在開啟應用,點選“選單”按鈕(右上角三個豎排點)。點選“新增賬戶”然後點選“輸入提供的金鑰”。在下一個視窗(圖1),你需要輸入你執行 google-authenticator 應用時提供的 16 個數字的金鑰。給賬戶取個名字(以便你記住這用於哪個賬戶),然後點選“新增”。
圖1: 在 Google Authenticator 應用上新建賬戶
(譯註:Google 身份驗證器也可以掃描你在伺服器上設定時顯示的二維碼,而不用手工輸入金鑰)
新增完賬戶之後,你就會看到一個 6 個數字的密碼,你每次登入或者使用 sudo 的時候都會需要這個密碼。
最後,在系統上設定其它賬戶。正如之前提到的,我們會設定一個叫 olivia 的賬戶。步驟如下:
- 開啟一個終端視窗
- 輸入命令 sudo su olivia
- 在智慧機上開啟 Google 身份驗證器
- 在終端視窗(圖2)中輸入(應用提供的) 6 位數字驗證碼並敲擊回車
- 輸入你的 sudo 密碼並敲擊回車
- 以新使用者輸入命令 google-authenticator,回答問題並記錄生成的金鑰和驗證碼。
成功為 olivia 使用者設定好之後,用 google-authenticator 命令,在 Google 身份驗證器應用上根據使用者資訊(和之前為第一個使用者新增賬戶相同)新增一個新的賬戶。現在你在 Google 身份驗證器應用上就會有 jack 和 olivia 兩個賬戶了。(LCTT 譯註:在實際操作情形中,通常是為 jack 和 olivia 兩個人的手機分別設定。)
圖2: 為 sudo 輸入 6位數字驗證碼
好了,就是這些。每次你嘗試登入系統(或者使用 sudo) 的時候,在你輸入使用者密碼之前,都會要求你輸入提供的 6 位數字驗證碼。現在你的 Linux 機器就比新增雙因子認證之前安全多了。雖然有些人會認為這非常麻煩,我仍然推薦使用,尤其是那些儲存了敏感資料的機器。
相關文章
- 密碼雙保險!谷歌即將預設開啟雙因子登入認證密碼谷歌
- 在 Fedora 上為 SSH 設定雙因子驗證
- 多因子認證是什麼意思?與雙因子認證有什麼區別?
- PHP如何實現登入認證和鑑權PHP
- 如何為 Linux 系統中的 SSH 新增雙重認證Linux
- Openssl 設定 雙向認證證書的過程
- 伺服器設定為root登入設定方案以及linux系統下的root和SSH、sshd伺服器Linux
- 如何在Linux上為SSH登入設定電子郵件提醒Linux
- 設定su和sudo為不需要密碼密碼
- 如何設定 Linux 上 SSH 登入的 Email 提醒LinuxAI
- Flask Session 登入認證模組FlaskSession
- passport API 認證 -- 多表登入PassportAPI
- 一文搞懂Session和JWT登入認證SessionJWT
- 《數字身份驗證指南》草案中提議禁用基於簡訊的雙因子認證
- Redis使用認證密碼登入Redis密碼
- SSH認證免密碼登入密碼
- JWT登入認證-專案BotBattleJWTBAT
- linux 設定ssh 免密登入Linux
- Linux下鎖定賬號,禁止登入系統的設定總結Linux
- [Laravel 8 使用者認證] Jetstream 之 如何自定義登入驗證Laravel
- JWT實現登入認證例項JWT
- 實戰模擬│JWT 登入認證JWT
- spring security 自定義認證登入Spring
- LINUX個性化登入介面設定Linux
- 基於Token認證的多點登入和WebApi保護WebAPI
- 【ORACLE】oracle 使用者(sysdba)遠端登入和口令認證Oracle
- 認證系統之登入認證系統的進階使用 (二)
- 設定頁面認證(轉)
- win10如何設定自動登入 win10設定自動登入的方法Win10
- 在Linux中,如何新增和管理使用者賬戶以及如何設定sudo許可權?Linux
- Mac OS X下配置遠端Linux 伺服器SSH金鑰認證自動登入MacLinux伺服器
- WEB應用的安全的登入認證Web
- ssh無密碼登入認證失敗密碼
- 為SSH登入設定電子郵件提醒
- win10 自動登入如何設定_windows10自動登入的設定步驟Win10Windows
- ASP.NET Core Authentication系列(二)實現認證、登入和登出ASP.NET
- 淺談oracle 使用者(sysdba)遠端登入和口令認證Oracle
- 【登陸認證】oracle的作業系統認證和口令檔案認證方式(轉載)Oracle作業系統