如何在Linux上用單次密碼確保SSH登入安全?

來源:互聯網
上載者:User

如何在Linux上用單次密碼確保SSH登入安全?

常言道,安全不是一種產品,而是一個過程。雖然SSH協議本身在設計上採用了密碼,因而很安全,但要是它未得到適當管理:無論是弱密碼、密鑰泄密還是過時的SSH客戶軟體,有人就會對你的SSH服務造成嚴重破壞。

至於SSH驗證,公開金鑰驗證通常被認為比密碼驗證來得安全。然而,如果你從公用或共用的電腦登入,密鑰驗證實際上並不可取,甚至不太安全。因為在這類電腦上,總是有可能潛藏著隱形擊鍵記錄程式或記憶體抓取惡意軟體(memory scraper)之類的威脅。要是你無法信任本機電腦,最好還是使用別的密碼。這時候,“單次密碼”就派得上用場。顧名思義,每個單次密碼只能用一次。這種單次密碼可以在不可信任的環境下安全地使用,因為即使被人盜取,它們也無法再次使用。

產生單次密碼的辦法之一就是通過Google驗證器(Google Authenticator)。在本教程中,我將示範建立用於SSH登入的單次密碼的另一種方法:OTPW(http://www.cl.cam.ac.uk/~mgk25/otpw.html),這是單次密碼登入程式包。不像Google驗證器,你不用依賴任何第三方即可產生並驗證單次密碼。

OTPW簡介

OTPW包括兩部分:單次密碼產生器和整合PAM的驗證實用常式。在OTPW中,單次密碼由產生器通過推理法產生,並由使用者安全地攜帶(比如列印在紙張上)。所產生密碼的密碼散列然後儲存在SSH伺服器主機上。當使用者用單次密碼登入時,OTPW的PAM模組就會驗證密碼,使用後讓密碼作廢,防止再次使用。

第一步:在Linux上安裝和配置OTPW

在Debian、Ubuntu或Linux Mint上:

用apt-get安裝OTPW程式包。

$ sudo apt-get install libpam-otpw otpw-bin

使用文本編輯工具,開啟SSH的PAM設定檔(/etc/pam.d/sshd),注釋掉下面這行代碼(以禁用密碼驗證)。

#@include common-auth

然後添加下面兩行代碼(以啟用單次密碼驗證):

auth required pam_otpw.sosession optional pam_otpw.so

在Fedora或CentOS/RHEL上:

在基於紅帽的系統上,沒有作為預製程式包的OTPW。於是,我們通過從原始碼來構建的方法,安裝OTPW。

首先,安裝基本組件:

$ sudo yum git gcc pam-devel$ git clone https://www.cl.cam.ac.uk/~mgk25/git/otpw$ cd otpw

使用文本編輯工具開啟Makefile,編輯以“PAMLIB=”開頭的這一行,如下所示。

在64位系統上:

PAMLIB=/usr/lib64/security

在32位系統上:

PAMLIB=/usr/lib/security

編譯後安裝。請注意:安裝環節會自動重啟SSH伺服器。所以如果你使用SSH串連,就要準備好斷開。

$ make$ sudo make install

現在你需要更新SELinux策略,因為/usr/sbin/sshd試圖寫入到使用者的主目錄,而預設的SELinux策略不允許這個操作。下面這些命令可以起到更新策略的作用。如果你不使用SELinux,跳過這一步好了。

$ sudo grep sshd /var/log/audit/audit.log | audit2allow -M mypol$ sudo semodule -i mypol.pp

下一步,用文本編輯工具開啟SSH的PAM設定檔(/etc/pam.d/sshd),注釋掉下面這行代碼(以禁用密碼驗證)。

#auth substack password-auth

然後添加下面兩行代碼(以啟用單次密碼驗證):

auth required pam_otpw.sosession optional pam_otpw.so

 

第二步:針對單次密碼配置SSH伺服器

下一步是配置SSH伺服器,以接受單次密碼。

用文本編輯工具開啟/etc/ssh/sshd_config,設定下列三個參數。確保你沒有不止一次地添加這幾行,因為那會引起SSH伺服器失效。

UsePrivilegeSeparation yesChallengeResponseAuthentication yesUsePAM yes

你還需要禁用預設的密碼驗證。可以視情況,禁用公密驗證,那樣萬一你沒有單次密碼,就可以恢複到基於密鑰的驗證。

PubkeyAuthentication yesPasswordAuthentication no

現在,重啟SSH伺服器。

在Debian、Ubuntu或Linux Mint上:

$ sudo service ssh restart

在Fedora或CentOS/RHEL 7上:

$ sudo systemctl restart sshd

 

第三步:用OTPW產生單次密碼

如前所述,你需要事先建立單次密碼,並將它們儲存在遠程SSH伺服器主機上。為此,以你登入時所用的使用者身份運行otpw-gen工具。

$ cd ~$ otpw-gen > temporary_password.txt

它會要求你設定一個首碼密碼。你以後登入時,就需要輸入這個首碼密碼以及單次密碼。實際上首碼密碼是另一層保護機制。即使密碼錶落到了不法分子手裡,首碼密碼也會迫使對方採用蠻力攻擊。

一旦首碼密碼設定完畢,命令會產生280個單次密碼,並將它們儲存在輸出文字檔(比如temporary_password.txt)中。每個密碼(預設情況下長度是8個字元)的前面是三位元的索引號。你可以將檔案列印在紙張上,隨身攜帶。

你還會看到~/.otpw檔案已建立,這些密碼的密碼散列就儲存在其中。每一行的頭三位表明了將用於SSH登入的密碼的索引號。

$ more ~/.otpwOTPW1280 3 12 8191ai+:ENwmMqwn218tYRZc%PIY27a241ve8ns%NsHFmf055W4/YCauQJkr:102ZnJ4VWLFrk5N2273Xww55hteJ8Y1509d4b5=A64jBT168FWBXY%ztm9j%000rWUSdBYr%8UE037NvyryzcI+YRX122rEwA3GXvOk=z

測試用於SSH登入的單次密碼

現在,不妨像平常那樣登入到SSH伺服器:

$ ssh user@remote_host

如果OTPW成功設定,你會看到略有不同的密碼提示符:

Password 191:

現在開啟密碼錶,尋找密碼錶中的索引號“191”。

023 kBvp tq/G 079 jKEw /HRM 135 oW/c /UeB 191 fOO+ PeiD 247 vAnZ EgUt

據上面密碼錶顯示,編號“191”的單次密碼是“fOO+PeiD”。你需要在前面加上首碼密碼。比如說,如果你的首碼密碼是“000”,那麼需要輸入的實際的單次密碼是“000fOO+PeiD”。

一旦你成功登入,所使用的密碼會自動作廢。如果你查看~/.otpw,就會注意到第一行被換成了“---------------”,這意味著密碼“191”已經無效。

OTPW1280 3 12 8---------------218tYRZc%PIY27a241ve8ns%NsHFmf055W4/YCauQJkr:102ZnJ4VWLFrk5N2273Xww55hteJ8Y1509d4b5=A64jBT168FWBXY%ztm9j%000rWUSdBYr%8UE037NvyryzcI+YRX122rEwA3GXvOk=z

結束語

我在本教程中示範了如何使用OTPW程式包,設定用於SSH登入的單次密碼。你可能認識到,列印的密碼錶就好比是雙因子驗證中的安全性權杖,只是比較平實罷了。不過,它更簡單,你也不用依賴任何第三方即可實現。無論你使用什麼機制來建立單次密碼,當你需要從不可信任的公用電腦登入到SSH伺服器時,它們都大有協助。歡迎留言交流。

英文:How to secure SSH login with one-time passwords on Linux

提高Ubuntu的SSH登陸認證速度的辦法

開啟SSH服務讓Android手機遠端存取 Ubuntu 14.04 

如何為Linux系統中的SSH添加雙重認證

在 Linux 中為非 SSH 使用者配置 SFTP 環境

Linux 上SSH 服務的配置和管理

SSH入門學習基礎教程

SSH免密碼登入詳解 

本文永久更新連結地址:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.