如何用單次密碼通過 SSH 安全登入 Linux,密碼ssh登入linux

來源:互聯網
上載者:User

如何用單次密碼通過 SSH 安全登入 Linux,密碼ssh登入linux

有人說,安全不是一個產品,而是一個過程。雖然 SSH 協議被設計成使用加密技術來確保安全,但如果使用不當,別人還是能夠破壞你的系統:比如弱密碼、密鑰泄露、使用過時的 SSH 用戶端等,都能引發安全問題。因此,在安全方面,必須藉助權威專業的安全服務提供者,在行動裝置 App安全方面,愛加密無疑是很好地選擇。

在考慮 SSH 認證方案時,大家普遍認為公開金鑰認證比密碼認證更安全。然而,公開金鑰認證技術並不是為公用環境設定的,如果你在一台公用電腦上使用公開金鑰認證登入 SSH 伺服器,你的伺服器已經毫無安全可言了,公用的電腦可能會記錄你的公開金鑰,或從你的記憶體中讀取公開金鑰。如果你不信任本地電腦,那你最好還是使用其他方式登入伺服器。現在就是“單次密碼(OTP)”派上用場的時候了,就像名字所示,單次密碼只能被使用一次。這種單次密碼非常合適在不安全的環境下發揮作用,就算它被竊取,也無法再次使用。

有個產生單次密碼的方法是通過Google認證器,但在本文中,我要介紹的是另一種 SSH 登入方案:OTPW,它是個單次密碼登入的軟體包。不像Google認證,OTPW 不需要依賴任何第三方庫。

OTPW 是什麼

OTPW 由單次密碼產生器和 PAM 認證規則群組成。在 OTPW 中單次密碼由產生器事先產生,然後由使用者以某種安全的方式獲得(比如列印到紙上)。另一方面,這些密碼會通過 Hash 加密儲存在 SSH 伺服器端。當使用者使用單次密碼登入系統時,OTPW 的 PAM 模組認證這些密碼,並且保證它們不能再次使用。

步驟1:OTPW 的安裝和配置在 Debian, Ubuntu 或 Linux Mint 發行版上

使用 apt-get 安裝:

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

開啟針對 SSH 服務的 PAM 設定檔(/etc/pam.d/sshd),注釋掉下面這行(目的是禁用 PAM 的密碼認證功能):

#@include common-auth

添加下面兩行(用於開啟單次密碼認證功能):

auth       required     pam_otpw.sosession    optional     pam_otpw.so

在 Fedora 或 CentOS/RHEL 發行版上

在基於 RedHat 的發行版中沒有編譯好的 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 串連到伺服器,做好被中斷連線的準備吧(LCTT 譯註:也許不會被中斷連線,即便被中斷連線,請使用原來的方式重新串連即可,現在還沒有換成一次性口令方式。)。

$ make$ sudo make install

現在你需要更新 SELinux 策略,因為 /usr/sbin/sshd 會往你的 home 目錄寫資料,而 SELinux 預設是不允許這麼做的。如果沒有使用 SELinux 服務(LCTT 註:使用 getenforce 命令查看結果,如果是 enforcing,就是開啟了 SELinux 服務),請跳過這一步。

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

接下來開啟 PAM 設定檔(/etc/pam.d/sshd),注釋下面這行(為了禁用密碼認證):

#auth       substack     password-auth

添加下面兩行(用於開啟單次密碼認證功能):

auth       required     pam_otpw.sosession    optional     pam_otpw.so

步驟2:配置 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

(LCTT 譯註:雖然這裡重啟了 sshd 服務,但是你當前的 ssh 串連應該不受影響,只是在你完成下述步驟之前,無法按照原有方式建立新的串連了。因此,保險起見,要麼多開一個 ssh 串連,避免誤退出當前串連;要麼將重啟 sshd 伺服器步驟放到步驟3完成之後。)

步驟3:使用 OTPW 產生單次密碼

之前提到過,你需要事先建立單次密碼,並儲存起來。使用 otpw-gen 命令建立密碼:

$ cd ~$ otpw-gen > temporary_password.txt

這個命令會讓你輸入密碼首碼,當你以後登入的時候,你需要同時輸入這個首碼以及單次密碼。密碼首碼是另外一層保護,就算你的單次密碼表被泄漏,別人也無法通過暴力破解你的 SSH 密碼。

設定好密碼首碼後,這個命令會產生 280 個單次密碼(LCTT 譯註:儲存到 ~/.otpw 下),並將它們匯出到一個文字檔中(如 temporary_password.txt)。每個密碼(預設是 8 個字元)由一個 3 位十進位數索引。你需要將這個密碼錶列印出來,並隨身攜帶。

查看 ./.otpw 檔案,它存放了單次密碼的 HASH 值。頭 3 位十進位數與你隨身攜帶的密碼錶的索引一一對應,在你登入 SSH 伺服器的時候會被用到。

$ more ~/.otpw
<pre name="code" class="plain">OTPW1280 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 工具來設定一次性登入密碼。你也許意識到了在這種雙因子的認證方式中,列印一張密碼錶讓人感覺好 low,但是這種方式是最簡單的,並且不用依賴任何第三方軟體。無論你用哪種方式建立單次密碼,在你需要在一個不可信任的環境登入 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.