..." /> 【乾貨】通過微信小程序「運維密碼」實現SSH雙因子認證 - iFuun
當前位置:
首頁 > 新聞 > 【乾貨】通過微信小程序「運維密碼」實現SSH雙因子認證

【乾貨】通過微信小程序「運維密碼」實現SSH雙因子認證

nt>
閱讀全文


閱讀

投訴








微信掃一掃
關注該公眾號





即將打開""小程序
取消 打開

");
}
if (
(document.cookie && document.cookie.indexOf("vconsole_open=1") > -1)
|| location.href.indexOf("vconsole=1") > -1
) {
_addVConsole("2.5.1/vconsole.min.js");
_addVConsole("plugin/vconsole-elements/1.0.2/vconsole-elements.min.js");
_addVConsole("plugin/vconsole-sources/1.0.1/vconsole-sources.min.js");
_addVConsole("plugin/vconsole-resources/1.0.0/vconsole-resources.min.js");
_addVConsole("plugin/vconsole-mpopt/1.0.0/vconsole-mpopt.js");
}
})();


近來,京東、優酷等多家知名企業都發生了密碼泄露,造成用戶隱私泄露。可見,單一密碼對敏感和重要信息進行保護力量越來越弱,所面臨的挑戰亦是愈發嚴峻。因此業內對多重認證的呼聲也越來越高,而其中的雙因子認證得到了業界的普遍認可。本文主要介紹SSH雙因子認證,結合了當下熱門的微信小程序的「運維密碼」,來實現認證保護。

雙因子認證機制

對於網路信息系統來說,能否識別使用者的身份,是能否確保安全的基礎和關鍵。在實際應用中,許多網路信息系統都會要求使用者在使用系統之前,提供一些相關信息用以實現對使用者的身份認證。雙因子認證(2FA)彌補了傳統密碼認證方法的很多弊端,是指結合密碼以及實物(信用卡、SMS手機、令牌或指紋等生物標誌)兩種條件對用戶進行認證的方法。

SSH雙因子認證


在實現多重認證的系統中,用戶需要通過兩種不同的認證程序:用戶知道的信息(如用戶名/密碼)和用戶不知道的信息(如用手機生成的一次性密碼),想必絕大部分系統管理員都知道OTP,OTP即一次性口令,最常見的一次性口令是基於時間的一次性口令(TOTP),最常見的方式是採用Google身份驗證器Google Authenticator來提供基於時間的一次性口令。

在SSH伺服器端安裝Google身份驗證器伺服器端組件,這樣,在使用密碼或密鑰登錄SSH伺服器時,同時通過與Google身份驗證器相匹配的客戶端所提供的驗證信息來確認登錄者的身份和許可權。由於Google身份驗證器沒有辦法備份場景,這使得使用該身份驗證器的人時時處於手機丟失的恐慌之中。於是Linux中國旗下的LCTT技術組開發了一款旨在移動互聯網場景中提供更好的多因子認證體驗的小程序:運維密碼,基於微信平台提供OTP口令管理功能。

如何使用「運維密碼」為SSH服務提供雙因子認證支持

第一步,需要在運行著OpenSSH服務的Linux主機上安裝Google身份驗證器伺服器端組件。

首先,安裝構建Google身份驗證器所需的軟體包。

在CentOS、Fedora或RHEL上:

在CentOS上安裝Google身份驗證器伺服器端組件,需要啟用EPEL軟體庫,然後運行如下命令:

接著,下載 Google 身份驗證器伺服器端組件的源代碼:

編譯安裝 Google 身份驗證器伺服器端組件:

如果構建成功,你會在目錄中看到pam_google_authenticator.so和google-authenticator兩個二進位文件。


最後,將Google身份驗證器的伺服器端組件安裝到合適位置。其默認會安裝到 /usr/local/lib/security下,根據你的系統不同,你可能需要將其符號鏈接到pam庫的位置(比如CentOS7會在/usr/lib64/security)。如下圖所示:

至此,Google身份驗證器伺服器端組件安裝完成。


第二步,需要對Google身份驗證器伺服器端組件、「運維密碼」、OpenSSH進行配置


先配置Google身份驗證器伺服器端組件

使用以下命令生成驗證密鑰:

這裡需要輸入y,選擇基於時間生成驗證碼

之後你將看到一個代表著該「場景」密鑰的二維碼和密鑰字元串,它使用如下二維碼圖形格式表示我們數字形態的密鑰

在二維碼和密鑰字元串後面,接著顯示了一個當前的校驗碼和幾個緊急密鑰。緊急密鑰你可以另行保存到一個安全的地方,以防在無法使用Google身份驗證器應用或「運維密碼」時使用。

保存Google伺服器端組件的配置文件,輸入y。

禁止同一令牌多次登錄,輸入y。

意思是:是否要禁用同一密鑰多次登錄,這將限制每30秒只能使用該密鑰登錄一次,但這能夠讓你可以更多地被提醒受到了中間人攻擊,甚至能夠防止這種攻擊。


時間容錯設置,輸入y。

意思是:默認情況下,密鑰在30秒內有效,為了防止由於客戶端與伺服器時間偏移(時間相差太大)導致認證失敗,google身份驗證器設計了時間容錯措施。可以讓你使用與當前時間偏移1到4分鐘的密鑰。


暴力破解防護,輸入y。

意思是:為了避免暴力破解,可以啟用速率限制,默認情況下,每30秒只能嘗試3次。

配置完成後會在home目錄下生成一個許可權為400的隱藏文件,如下圖所示:


然後配置運維密碼


打開微信小程序,依次點擊「發現」,「小程序」:

輸入「運維密碼」並搜索:

點擊「運維密碼」進入應用,然後點擊中間的添加場景

掃一掃配置google-authenticator時所生成的二維碼,會識別出該場景信息,這樣Google身份驗證器就和「運維密碼」匹配上了。


接著配置SSH服務


使用如下命令在/etc/pam.d/sshd文件添加認證模塊:

配置挑戰式密碼認證:

重啟sshd服務:

切記,如果你是遠程登錄到伺服器上配置,切勿退出當前的SSH會話,而應該另外開一個會話去測試SSH登錄。重啟不會中斷當前的SSH會話。


到這一步配置已基本完成,下面我們進行測試。


另外開一個終端窗口進行連接,不要關閉當前的SSH連接。


輸入命令登錄主機:

首先輸入伺服器的密碼,接著會讓輸入「運維密碼」生成的6位數字密鑰。如下圖:

我們可以看到,在登錄的時候,需要配合「運維密碼」才能登錄伺服器。


「運維密碼」小程序資源佔用小,不超過200K,只需要花費很少的流量,就可以實現和Google身份驗證器Google Authenticator的全部功能。通過微信小程序「運維密碼」實現在Linux系統上OpenSSH雙因子認證,從而對SSH進行安全加固。


關於美創

杭州美創科技有限公司是一家聚焦於數據管理、數據價值的發現與挖掘,圍繞數據安全、容災、集成、分析、運維等多方面鑄造數據價值的企業,是敏感數據保護( DCAP)與數據安全領域的拓荒者和領導者,是全業務容災的倡導者和實踐者,產品和服務被廣泛應用於醫療、社保、港口物流、金融、政府、電力能源等眾多行業。公司於2005年成立,在北京、廣州、武漢、南京、寧波等地均設有分支機構。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |

您可能感興趣

如何實現小程序和webRTC的互通?
量子通信新進展!首次用四維糾纏態實現量子密集編碼
PHP 實現簡單驗證碼識別
HOG特徵+SVM實現交通標誌的檢測
Sciaky的電子束增材製造EBAM流程實現了衛星油箱的認證
SpaceX的可重複使用BFR火箭新工作:貨物將通過太空實現快速傳遞
量子磁通信電台實現通信能力躍升
基於SSL實現數據傳輸加密協議—HTTPS
無需編寫代碼,API業務流程測試零代碼實現
搶在巨頭前入局,看鷹信Eagvis如何實現「人車通信,車車通信」
利用OpenSSL實現非阻塞通訊C++代碼
JSP實現數據傳遞
代碼實現順序表的操作函數
華為Mate雙旗艦如何互傳信息?看HUAWEI Share實現無縫連接
【乾貨】eSIM技術來了 攜號轉網為何還難以實現?
華為發布AUTIN解決方案,助力運營商實現數字化、智能化運維
電腦番外:論通過VR實現SAO的可能性
沒錯,純SQL查詢語句可以實現神經網路
賽靈思唐傑:ARM存儲系統的加速器,實現數據通路「硬」化
中俄聯手敲定一項工程!實現彎道超車,美軍關掉GPS信號也沒用