保護SSH埠安全性的多種技巧介紹
前言
SSH是一種可以讓你在不安全的網路上,安全的執行網路服務的網路協議的.ssh的標準TCP埠為22埠,其最佳應用場景是使用者遠端登入至計算機系統。因此,SSH埠也是攻擊者必掃的埠之一。本文將就SSH埠的安全性展開討論,併為大家提供多種保護SSH埠安全性的建議和方法。
在開始之前,讓我們先在計算機上安裝SSH伺服器。命令如下:
sudo apt-get install openssh-server
埠轉發
配置並執行SSH服務,然後我們使用NMAP進行掃描,可以看到當前SSH正在22埠上執行。
切換至客戶端機器的/etc/ssh目錄下,我們可以看到一個名為sshd_config的配置檔案。
cd /etc/ssh
使用 nano 命令開啟sshd_config的檔案。
我們將其中的預設埠跟改為2222(如下圖所示),儲存並關閉。通過這種方式,我們將埠從22轉發到2222。
現在,我們再次使用nmap進行掃描。
nmap 192.168.1.104
nmap的輸出顯示TCP埠2222已開啟;但在服務描述中只顯示了EthernetIP-1,並沒有給出執行服務的準確描述。因此,因此,讓我們再來執行帶有版本檢測選項的nmap命令看看:
nmap-sV 192.168.1.104
通過輸出我們可以清楚地看到SSH服務當前正在TCP 2222埠上執行,以及OpenSSH版本的描述。
公鑰保護
首先,我們需要下載並安裝PuTTY Key Generator。
注:PuTTYgen是一個金鑰生成器,用於為PuTTY建立SSH金鑰並且以自己的格式儲存金鑰(.ppk副檔名)
開啟它,然後單擊生成。
單擊生成將啟動生成公鑰和私鑰的過程,如圖所示:
生成公鑰和私鑰後,單擊“儲存公鑰”。這會將金鑰作為一個公鑰儲存。
現在,開啟我們伺服器的Ubuntu的終端並輸入SSH-凱基。
以上命令將建立一個名為.ssh的資料夾,然後我們在同一資料夾中建立一個名為authorized_keys的空文字檔案。然後,我們複製之前使用PuTTy Key Generator建立的“ssh_login.ppk”檔案,並將其貼上到的.ssh資料夾中,如圖所示:
在終端中,進入.ssh資料夾並鍵入以下命令:
puttygen -L "ssh_login.ppk"
此命令將會生成一個金鑰。
現在,我們複製該金鑰並使用奈米命令將其貼上到名為authorized_keys中的空檔案中並儲存。
接著,我們開啟膩子配置選項卡,然後轉到會話選項卡,為你的客戶端機器提供IP地址和埠號。
繼續轉到資料選項,並提供自動登入使用者名稱(自動登入使用者名稱)。
導航到SSH>驗證並提供ssh_login.ppk檔案的路徑(之前生成的公鑰),然後單擊“開啟”。
此時,它將使用公鑰登入SSH伺服器,而無需輸入密碼。
使用的gedit命令開啟的/ etc / SSH中的sshd_config中檔案。我們將修改#PasswordAuthentication選項,如圖所示。
當前配置
#PasswordAuthentication yes
現在,我們將引數值是改為無並去掉註釋符(如下圖所示),完成後儲存並關閉檔案。此更改將禁止任何使用者使用密碼登入SSH伺服器。
PasswordAuthentication no
正如你所看到的,這些設定已禁用基於密碼的登入,並要求使用公鑰登入。
禁用根登入並限制SSH使用者的訪問許可權
該安全措施,需要我們先使用的adduser命令建立一些新使用者(這裡我已經建立了:H1,H2,H3,H4使用者),然後使用的gedit命令在sshd_config的檔案的#Authentication身份下新增以下行:
#No root login allowed(h2 can login as sudo -s) PermitRootLogin no ##only allow 1 users h2 (sysadmin) AllowUsers h2
切記更改後及時進行儲存,這將禁用Root Login,並且只允許h2使用者遠端登入ssh伺服器。
正如你所看到的,只有H2使用者能夠成功登入SSH伺服器,而H1和H3使用者許可權則被拒絕登入。
Google身份驗證器
要通過SSH伺服器進行雙因素身份驗證,你需要在手機上下載安裝Google Authenticator,並使用以下命令為Ubuntu安裝所需的依賴包:
sudo apt-get install libpam-google-authenticator
注– Google Authenticator在安裝過程中會有多次詢問,你只需選擇是即可。
安裝完成後,開啟終端並輸入命令:
google-authenticator
此時,將會生成一個二維碼,我們使用手機上的Google Authenticator進行掃描。
成功掃描後,它將為我們生成一個動態口令,如圖所示。
現在,我們使用的gedit命令開啟sshd的檔案並進行以下更改:
在@include common-auth前添加註釋符;
新增行(auth required pam_google_authenticator.so)到@include common-password下。
如圖所示:
繼續更改的sshd_config檔案中的以下選項。
ChallengeResponseAuthentication yes
現在,當我們登入SSH伺服器時,它會提示要求輸入驗證碼。這裡,我們必須輸入在Google Authenticator上生成的動態口令。如下所示,我們已經使用一次性密碼成功登入至SSH伺服器。
計劃任務限制
在該安全措施中,我們將在伺服器上設定SSH服務的時間限制。
克龍是一個用於排程任務的Linux的內建服務,它能夠在指定的時間和日期自動執行伺服器上的命令或指令碼。
在這裡,我們將使用crontab的計劃SSH服務。
我們在/等中使用的奈米命令開啟的crontab現在,讓我們建立一個計劃任務讓SSH服務每2分鐘啟動一次,4分鐘停止一次用於排程SSH服務的命令如下。:
* / 2 * * * * root service ssh start * / 4 * * * * root service ssh stop
儲存更改並關閉檔案。
等待服務重啟,使用nmap掃描22埠。
nmap-p 22 192.168.1.104
執行掃描後,我們將觀察埠22上的SSH服務是否已被關閉,因為它已持續了4分鐘的時間。
現在,如果我們的命令正常工作,它應該每隔2分鐘啟動一次服務,為了進一步的確認我們將再次使用nmap進行掃描。
nmap –p 22 192.168.1.104
可以看到埠現在處於開放狀態。
禁用空密碼
從安全最佳實踐來看,我們應該始終禁用空密碼登入SSH伺服器要啟用此設定,我們只需將sshd_config的檔案的以下選項引數值更為號即可:
PermitEmptyPasswords no
這將禁用空密碼登入SSH伺服器。
*參考來源: ofollow" rel="nofollow,noindex">hackingarticles ,FB小編secist編譯,轉載請註明來自FreeBuf.COM