通過OTPW來用SSH安全登錄Linux服務器的教程

有人說,安全不是一個產品,而是一個過程(LCTT 注:安全公司 McAfee 認為,安全風險管理是一個方法論,而不是安全產品的堆疊)。雖然 SSH 協(xié)議被設計成使用加密技術來確保安全,但如果使用不當,別人還是能夠破壞你的系統(tǒng):比如弱密碼、密鑰泄露、使用過時的 SSH 客戶端等,都能引發(fā)安全問題。
在考慮 SSH 認證方案時,大家普遍認為公鑰認證比密碼認證更安全。然而,公鑰認證技術并不是為公共環(huán)境設置的,如果你在一臺公用電腦上使用公鑰認證登錄 SSH 服務器,你的服務器已經毫無安全可言了,公用的電腦可能會記錄你的公鑰,或從你的內存中讀取公鑰。如果你不信任本地電腦,那你最好還是使用其他方式登錄服務器?,F(xiàn)在就是“一次性密碼(OTP)”派上用場的時候了,就像名字所示,一次性密碼只能被使用一次。這種一次性密碼非常合適在不安全的環(huán)境下發(fā)揮作用,就算它被竊取,也無法再次使用。
有個生成一次性密碼的方法是通過谷歌認證器,但在本文中,我要介紹的是另一種 SSH 登錄方案:OTPW,它是個一次性密碼登錄的軟件包。不像谷歌認證,OTPW 不需要依賴任何第三方庫。
OTPW 是什么
OTPW 由一次性密碼生成器和 PAM 認證規(guī)則組成。在 OTPW 中一次性密碼由生成器事先生成,然后由用戶以某種安全的方式獲得(比如打印到紙上)。另一方面,這些密碼會通過 Hash 加密保存在 SSH 服務器端。當用戶使用一次性密碼登錄系統(tǒng)時,OTPW 的 PAM 模塊認證這些密碼,并且保證它們不能再次使用。
步驟1:OTPW 的安裝和配置
在 Debian, Ubuntu 或 Linux Mint 發(fā)行版上
使用 apt-get 安裝:
打開針對 SSH 服務的 PAM 配置文件(/etc/pam.d/sshd),注釋掉下面這行(目的是禁用 PAM 的密碼認證功能):
添加下面兩行(用于打開一次性密碼認證功能):
session optional pam_otpw.so
在 Fedora 或 CentOS/RHEL 發(fā)行版上
在基于 RedHat 的發(fā)行版中沒有編譯好的 OTPW,所以我們需要使用源代碼來安裝它。
首先,安裝編譯環(huán)境:
$ git clone https://www.cl.cam.ac.uk/~mgk25/git/otpw
$ cd otpw
打開 Makefile 文件,編輯以“PAMLIB=”開頭的那行配置:
64 位系統(tǒng):
32 位系統(tǒng):
編譯安裝。需要注意的是安裝過程會自動重啟 SSH 服務一下,所以如果你是使用 SSH 連接到服務器,做好被斷開連接的準備吧(LCTT 譯注:也許不會被斷開連接,即便被斷開連接,請使用原來的方式重新連接即可,現(xiàn)在還沒有換成一次性口令方式。)。
$ sudo make install
現(xiàn)在你需要更新 SELinux 策略,因為 /usr/sbin/sshd 會往你的 home 目錄寫數(shù)據(jù),而 SELinux 默認是不允許這么做的。如果沒有使用 SELinux 服務(LCTT 注:使用 getenforce 命令查看結果,如果是 enforcing,就是打開了 SELinux 服務),請?zhí)^這一步。
$ sudo semodule -i mypol.pp
接下來打開 PAM 配置文件(/etc/pam.d/sshd),注釋下面這行(為了禁用密碼認證):
添加下面兩行(用于打開一次性密碼認證功能):
session optional pam_otpw.so
步驟2:配置 SSH 服務器,使用一次性密碼
打開 /etc/ssh/sshd_config 文件,設置下面三個參數(shù)。你要確保下面的參數(shù)不會重復存在,否則 SSH 服務器可能會出現(xiàn)異常。
ChallengeResponseAuthentication yes
UsePAM yes
你還需要禁用默認的密碼認證功能。另外可以選擇開啟公鑰認證功能,那樣的話你就可以在沒有一次性密碼的時候使用公鑰進行認證。
PasswordAuthentication no
重啟 SSH 服務器。
Debian, Ubuntu 或 Linux Mint 發(fā)行版:
Fedora 或 CentOS/RHEL 7 發(fā)行版:
(LCTT 譯注:雖然這里重啟了 sshd 服務,但是你當前的 ssh 連接應該不受影響,只是在你完成下述步驟之前,無法按照原有方式建立新的連接了。因此,保險起見,要么多開一個 ssh 連接,避免誤退出當前連接;要么將重啟 sshd 服務器步驟放到步驟3完成之后。)
步驟3:使用 OTPW 產生一次性密碼
之前提到過,你需要事先創(chuàng)建一次性密碼,并保存起來。使用 otpw-gen 命令創(chuàng)建密碼:
$ otpw-gen > temporary_password.txt
這個命令會讓你輸入密碼前綴,當你以后登錄的時候,你需要同時輸入這個前綴以及一次性密碼。密碼前綴是另外一層保護,就算你的一次性密碼表被泄漏,別人也無法通過暴力破解你的 SSH 密碼。
設置好密碼前綴后,這個命令會產生 280 個一次性密碼(LCTT 譯注:保存到 ~/.otpw 下),并將它們導出到一個文本文件中(如 temporary_password.txt)。每個密碼(默認是 8 個字符)由一個 3 位十進制數(shù)索引。你需要將這個密碼表打印出來,并隨身攜帶。
查看 ./.otpw 文件,它存放了一次性密碼的 HASH 值。頭 3 位十進制數(shù)與你隨身攜帶的密碼表的索引一一對應,在你登錄 SSH 服務器的時候會被用到。
280 3 12 8
191ai+:ENwmMqwn
218tYRZc%PIY27a
241ve8ns%NsHFmf
055W4/YCauQJkr:
102ZnJ4VWLFrk5N
2273Xww55hteJ8Y
1509d4b5=A64jBT
168FWBXY%ztm9j%
000rWUSdBYr%8UE
037NvyryzcI+YRX
122rEwA3GXvOk=z
測試一次性密碼登錄 SSH 服務器
使用普通的方式登錄 SSH 服務器:
如果 OTPW 成功運行,你會看到一點與平時登錄不同的地方:
現(xiàn)在打開你的密碼表,找到索引號為 191 的密碼。
從上表可知,191 號密碼是“fOO+PeiD”。你需要加上密碼前綴,比如你設置的前綴是“000”,則你實際需要輸入的密碼是“000fOO+PeiD”。
成功登錄后,你這次輸入的密碼自動失效。查看 ~/.otpw 文件,你會發(fā)現(xiàn)第一行變成“---------------”,這表示 191 號密碼失效了。
280 3 12 8
---------------
218tYRZc%PIY27a
241ve8ns%NsHFmf
055W4/YCauQJkr:
102ZnJ4VWLFrk5N
2273Xww55hteJ8Y
1509d4b5=A64jBT
168FWBXY%ztm9j%
000rWUSdBYr%8UE
037NvyryzcI+YRX
122rEwA3GXvOk=z
總結
在這個教程中,我介紹了如何使用 OTPW 工具來設置一次性登錄密碼。你也許意識到了在這種雙因子的認證方式中,打印一張密碼表讓人感覺好 low,但是這種方式是最簡單的,并且不用依賴任何第三方軟件。無論你用哪種方式創(chuàng)建一次性密碼,在你需要在一個不可信任的環(huán)境登錄 SSH 服務器的時候,它們都很有用。你可以就這個主題來分享你的經驗和觀點。
相關文章
淺談12 條用于 Linux 的 MySQL/MariaDB 安全最佳實踐
這篇文章主要介紹了淺談12 條用于 Linux 的 MySQL/MariaDB 安全最佳實踐,小編覺得還是挺不錯的,這里分享給大家,需要的朋友可以參考下2018-01-17談談CentOS發(fā)布內核安全補?。盒迯蚆eltdown和Spectre漏洞
這篇文章主要介紹了談談CentOS發(fā)布內核安全補丁:修復Meltdown和Spectre漏洞,小編覺得還是挺不錯的,這里分享給大家,需要的朋友可以參考下2018-01-17- SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對于強制訪問控制的實現(xiàn),是 Linux® 上最杰出的新安全子系統(tǒng)。今天小編要為大家?guī)淼木褪荂entOS上的安全防2017-04-06
win10內置linux子系統(tǒng)或帶來新的安全隱患
在win10一周年跟新版本中內置了linux子系統(tǒng),這雖然大大的方便開發(fā)人員,但是也給win10系統(tǒng)帶來了新的危險因素,下面我們就來看看詳細的內容,需要的朋友可以參考下2016-08-08- 這篇文章主要介紹了Linux下加強BGP路由協(xié)議安全的措施,文中使用Quagga的Shell來配置相關路由,需要的朋友可以參考下2015-07-29
- 這篇文章主要介紹了Linux安全掃描工具Nmap用法及參數(shù)詳解,本文介紹了什么是Nmap,然后給出掃描類型、通用選項、掃描目標的一些參數(shù)注解,需要的朋友可以參考下2015-07-08
Linux如何禁止特定ip地址訪問來保證系統(tǒng)的安全
如果你需要禁止特定ip地址訪問來保證系統(tǒng)的安全,只需通過操作iptalbes來實現(xiàn),下面為大家介紹下Linux如何禁止某個ip地址訪問的方法,需要的朋友不要錯過2015-06-15- 這篇文章主要介紹了Linux服務器安全事件應急響應排查方法總結,本文講解了分析原則、分析目標、數(shù)據(jù)備份采集、分析方法、分析影響、加固方法等內容,需要的朋友可以參考下2015-04-13
- Lynis是Linux系統(tǒng)中的審計工具,能夠對Linux系統(tǒng)的安全進行檢測,下面小編就給大家介紹下Linux如何使用Lynis工具檢測系統(tǒng)安全2015-02-14
- 這篇文章主要介紹了linux 防御SYN攻擊步驟詳解,小編覺得還是挺不錯的,這里分享給大家,需要的朋友可以參考下2018-01-22