本帖最后由 samly 于 2014-11-24 11:03 編輯
采用 OTP + 密碼作為 SSH 的認(rèn)證方案以保證安全性,這里就簡單描述一下實(shí)現(xiàn)方案。我們采用的軟件是 Google Authenticator,其客戶端實(shí)現(xiàn)支持 Android,iOS,BlackBerry 系統(tǒng)。 在服務(wù)器上執(zhí)行下面的操作:
# wget http://www.linuxcto.com/dev/libpam-google-authenticator-1.0-source.tar.bz2 # tar -xvf libpam-google-authenticator-1.0-source.tar.bz2 # cd
libpam-google-authenticator-1.0 # make # make install 然后分別拷貝 pam_google_authenticator.so 和 google-authenticator 到 /lib/security/ 和 /usr/bin/ 目錄。之后編輯 /etc/pam.d/sshd 文件,在該文件的最前面插入一行:
1
| auth required pam_google_authenticator.so
|
至此服務(wù)端的配置完成。需要注意的是在這個(gè)操作之后如果用戶沒有做公鑰認(rèn)證的配置會(huì)導(dǎo)致用戶無法登陸系統(tǒng)。解決辦法有多種:基于安全起見可以強(qiáng)制用戶在管理員的協(xié)助下配置公鑰認(rèn)證方式登錄系統(tǒng);或者在上面的配置項(xiàng)后設(shè)置 pam_google_authenticator.so 的選項(xiàng)為 nullok,這樣用戶在沒有做 OTP 相關(guān)的設(shè)置時(shí)可以先用密碼登錄系統(tǒng)來進(jìn)行相應(yīng)的操作。 如果 SSH 服務(wù)配置了只允許公鑰認(rèn)證,則需要修改 /etc/ssh/sshd_config 文件的配置項(xiàng)為: 1
2
| ChallengeResponseAuthentication yes
UsePAM yes
|
并重啟 SSH 服務(wù)以支持 OTP 和密碼認(rèn)證。 客戶端需要每個(gè)用戶登錄到系統(tǒng)之后進(jìn)行相關(guān)的配置。用戶可以直接輸入 google-authenticator 后按提示操作即可,或者直接用下面的命令:
1
| $ google-authenticator -l test@knownsec.com -t -d -r 3 -R 30 -w 3
|
google-authenticator -h 能看到可用的參數(shù)。上面命令用到的參數(shù)解釋如下: -l 設(shè)置移動(dòng)設(shè)備上的程序?qū)?yīng)的 OTP 碼的標(biāo)簽,便于區(qū)分不同的應(yīng)用。
-t 設(shè)置采用基于時(shí)間的驗(yàn)證。相應(yīng)的也可以 -c 參數(shù)采用基于計(jì)數(shù)的驗(yàn)證。
-d 禁止重用基于時(shí)間的驗(yàn)證碼
-r 限制登錄頻率
-R 設(shè)置登錄頻率限制的時(shí)間間隔
-w 設(shè)置時(shí)間窗的大小,主要在移動(dòng)設(shè)備的時(shí)間不是準(zhǔn)確同步的情況下比較有用
如果系統(tǒng)安裝了 qrencode 軟件,google-authenticator 可以直接輸出一個(gè)二維碼供移動(dòng)設(shè)備掃描錄入(見下圖),否則用戶需要根據(jù)其輸出來手工進(jìn)行相應(yīng)的設(shè)置。 
剩下的就是驗(yàn)證測(cè)試,祝順利!
P.S. 由于系統(tǒng)配置以及軟件版本等的不同,本文中提到的配置并不能覆蓋所有的環(huán)境。準(zhǔn)確的配置需要參考官方文檔并結(jié)合實(shí)際的系統(tǒng)進(jìn)行調(diào)整。
P.P.S. 顯然,本文中提到的 OTP 認(rèn)證并不局限于 SSH,其他任何支持 PAM 認(rèn)證方式的軟件也都可以使用。
【教官博客】http://www.linuxcto.com/204.html |