當前位置:編程學習大全網 - 源碼下載 - 如何在Linux上用壹次性密碼確保SSH登錄安全

如何在Linux上用壹次性密碼確保SSH登錄安全

第壹步:在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.so

session 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.so

session optional pam_otpw.so

第二步:針對壹次性密碼配置SSH服務器

下壹步是配置SSH服務器,以接受壹次性密碼。

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

UsePrivilegeSeparation yes

ChallengeResponseAuthentication yes

UsePAM yes

妳還需要禁用默認的密碼驗證。可以視情況,禁用公密驗證,那樣萬壹妳沒有壹次性密碼,就可以恢復到基於密鑰的驗證。

PubkeyAuthentication yes

PasswordAuthentication 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 ~/.otpw

OTPW1

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服務器:

$ 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”已經無效。

OTPW1

280 3 12 8

---------------

218tYRZc%PIY27a

241ve8ns%NsHFmf

055W4/YCauQJkr:

102ZnJ4VWLFrk5N

2273Xww55hteJ8Y

1509d4b5=A64jBT

168FWBXY%ztm9j%

000rWUSdBYr%8UE

037NvyryzcI+YRX

122rEwA3GXvOk=z

  • 上一篇:高校內的“跑腿經濟”,對大學生未來創業有幫助嗎
  • 下一篇:壹帶壹路概念股龍頭股有哪些
  • copyright 2024編程學習大全網