注冊登錄

通過微信小程序“運(yùn)維密碼”實(shí)現(xiàn)動態(tài)密碼

2020-09-28
導(dǎo)讀:近來,京東、優(yōu)酷等多家知名企業(yè)都發(fā)生了密碼泄露,造成用戶隱私泄露??梢?,單一密碼對敏感和重要信息進(jìn)行保護(hù)力量越來越弱,所面臨的挑戰(zhàn)亦是愈發(fā)嚴(yán)峻。因此業(yè)內(nèi)對多重認(rèn)證...

近來,京東、優(yōu)酷等多家知名企業(yè)都發(fā)生了密碼泄露,造成用戶隱私泄露??梢?,單一密碼對敏感和重要信息進(jìn)行保護(hù)力量越來越弱,所面臨的挑戰(zhàn)亦是愈發(fā)嚴(yán)峻。因此業(yè)內(nèi)對多重認(rèn)證的呼聲也越來越高,而其中的雙因子認(rèn)證得到了業(yè)界的普遍認(rèn)可。本文主要介紹SSH雙因子認(rèn)證,結(jié)合了當(dāng)下熱門的微信小程序的“運(yùn)維密碼”,來實(shí)現(xiàn)認(rèn)證保護(hù)。

雙因子認(rèn)證機(jī)制

對于網(wǎng)絡(luò)信息系統(tǒng)來說,能否識別使用者的身份,是能否確保安全的基礎(chǔ)和關(guān)鍵。在實(shí)際應(yīng)用中,許多網(wǎng)絡(luò)信息系統(tǒng)都會要求使用者在使用系統(tǒng)之前,提供一些相關(guān)信息用以實(shí)現(xiàn)對使用者的身份認(rèn)證。雙因子認(rèn)證(2FA)彌補(bǔ)了傳統(tǒng)密碼認(rèn)證方法的很多弊端,是指結(jié)合密碼以及實(shí)物(信用卡、SMS手機(jī)、令牌或指紋等生物標(biāo)志)兩種條件對用戶進(jìn)行認(rèn)證的方法。

SSH雙因子認(rèn)證

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

通過微信小程序“運(yùn)維密碼”實(shí)現(xiàn)動態(tài)密碼

在SSH服務(wù)器端安裝Google身份驗(yàn)證器服務(wù)器端組件,這樣,在使用密碼或密鑰登錄SSH服務(wù)器時,同時通過與Google身份驗(yàn)證器相匹配的客戶端所提供的驗(yàn)證信息來確認(rèn)登錄者的身份和權(quán)限。由于Google身份驗(yàn)證器沒有辦法備份場景,這使得使用該身份驗(yàn)證器的人時時處于手機(jī)丟失的恐慌之中。于是Linux中國旗下的LCTT技術(shù)組開發(fā)了一款旨在移動互聯(lián)網(wǎng)場景中提供更好的多因子認(rèn)證體驗(yàn)的小程序:運(yùn)維密碼,基于微信平臺提供OTP口令管理功能。

如何使用“運(yùn)維密碼”為SSH服務(wù)提供雙因子認(rèn)證支持

第一步,需要在運(yùn)行著OpenSSH服務(wù)的Linux主機(jī)上安裝Google身份驗(yàn)證器服務(wù)器端組件。

首先,安裝構(gòu)建Google身份驗(yàn)證器所需的軟件包。

在CentOS、Fedora或RHEL上:

在CentOS上安裝Google身份驗(yàn)證器服務(wù)器端組件,需要啟用EPEL軟件庫,然后運(yùn)行命令:

接著,下載 Google 身份驗(yàn)證器服務(wù)器端組件的源代碼:

編譯安裝 Google 身份驗(yàn)證器服務(wù)器端組件:

如果構(gòu)建成功,你會在目錄中看到pam_google_authenticator.so和google-authenticator兩個二進(jìn)制文件。

最后,將Google身份驗(yàn)證器的服務(wù)器端組件安裝到合適位置。其默認(rèn)會安裝到 /usr/local/lib/security下,根據(jù)你的系統(tǒng)不同,你可能需要將其符號鏈接到pam庫的位置(比如CentOS7會在/usr/lib64/security)。

至此,Google身份驗(yàn)證器服務(wù)器端組件安裝完成。

第二步,需要對Google身份驗(yàn)證器服務(wù)器端組件、“運(yùn)維密碼”、OpenSSH進(jìn)行配置

先配置Google身份驗(yàn)證器服務(wù)器端組件

使用以下命令生成驗(yàn)證密鑰:

這里需要輸入y,選擇基于時間生成驗(yàn)證碼

之后你將看到一個代表著該“場景”密鑰的二維碼和密鑰字符串,它使用如下二維碼圖形格式表示我們數(shù)字形態(tài)的密鑰

在二維碼和密鑰字符串后面,接著顯示了一個當(dāng)前的校驗(yàn)碼和幾個緊急密鑰。緊急密鑰你可以另行保存到一個安全的地方,以防在無法使用Google身份驗(yàn)證器應(yīng)用或“運(yùn)維密碼”時使用。

保存Google服務(wù)器端組件的配置文件,輸入y。

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

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

時間容錯設(shè)置,輸入y。

意思是:默認(rèn)情況下,密鑰在30秒內(nèi)有效,為了防止由于客戶端與服務(wù)器時間偏移(時間相差太大)導(dǎo)致認(rèn)證失敗,google身份驗(yàn)證器設(shè)計(jì)了時間容錯措施。可以讓你使用與當(dāng)前時間偏移1到4分鐘的密鑰。

暴力破解防護(hù),輸入y。

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

配置完成后會在home目錄下生成一個權(quán)限為400的隱藏文件

然后配置運(yùn)維密碼

打開微信小程序,輸入“運(yùn)維密碼”并搜索:

點(diǎn)擊“運(yùn)維密碼”進(jìn)入應(yīng)用,然后點(diǎn)擊中間的添加場景

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

接著配置SSH服務(wù)

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

配置挑戰(zhàn)式密碼認(rèn)證:

重啟sshd服務(wù):

切記,如果你是遠(yuǎn)程登錄到服務(wù)器上配置,切勿退出當(dāng)前的SSH會話,而應(yīng)該另外開一個會話去測試SSH登錄。重啟不會中斷當(dāng)前的SSH會話。

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

另外開一個終端窗口進(jìn)行連接,不要關(guān)閉當(dāng)前的SSH連接。

輸入命令登錄主機(jī):

首先輸入服務(wù)器的密碼,接著會讓輸入“運(yùn)維密碼”生成的6位數(shù)字密鑰。

我們可以看到,在登錄的時候,需要配合“運(yùn)維密碼”才能登錄服務(wù)器。

“運(yùn)維密碼”小程序資源占用小,不超過200K,只需要花費(fèi)很少的流量,就可以實(shí)現(xiàn)和Google身份驗(yàn)證器Google Authenticator的全部功能。通過微信小程序“運(yùn)維密碼”實(shí)現(xiàn)在Linux系統(tǒng)上OpenSSH雙因子認(rèn)證,從而對SSH進(jìn)行安全加固。

重磅推薦:小程序開店目錄

第一部分:小商店是什么

第二部分:如何開通一個小商店

第三部分:如何登錄小商店

第四部分:開店任務(wù)常見問題

第五部分:小商店可以賣什么

第六部分:HiShop小程序特色功能

第七部分:小程序直播

第八部分:小程序收貨/物流

第九部分:小程序怎么結(jié)算

第十部分:小程序客服

第十一部分:電商創(chuàng)業(yè)

第十二部分:小程序游戲開發(fā)

電話咨詢 微信咨詢 預(yù)約演示 0元開店