如何保護 SSH 伺服器的安全

如何保護 SSH 伺服器的安全

保護SSH連線的安全性可協助您保護 Linux 系統和資料。系統管理員和家庭用戶還需要保護面向互聯網的電腦。這裡有 10 種簡單的方法來幫助您保護SSH 伺服器

有關 SSH 安全性的一些基礎知識

SSH 代表安全外殼。 SSH 協定或軟體工具允許系統管理員和使用者使用該協定與遠端電腦建立安全連線。

SSH 協議是一種加密協議,旨在透過不安全的網路(例如 Internet)提供安全連接。 Linux 中的 SSH 是基於 OpenSSH 專案的便攜式版本所建構的。它以經典的客戶端-伺服器模型實現,其中 SSH 伺服器接受來自 SSH 客戶端的連接。客戶端用於連​​接到伺服器並將會話公開給遠端使用者。伺服器接受連線並啟動會話。

在預設配置中,SSH 伺服器將「偵聽」傳輸控制協定 (TCP) 連接埠 22 上的傳入連接。由於這是一個標準化且流行的端口,因此它是攻擊者威脅和惡意機器人的目標。

惡意行為者會啟動機器人來掃描IP 位址範圍以尋找開放連接埠。然後它會探測這些連接埠是否存在可利用的漏洞。認為我很安全,有很多比我更大更好的目標可供壞人瞄準,這是完全錯誤的。這些機器人不會根據任何標準選擇目標,它們只是尋找滲透系統的方法。

如果您不保護您的系統,您將成為受害者。

安全摩擦

安全摩擦點是指因安全要求而導致主要任務被阻止或延遲的任何情況。

當您實施安全措施時,安全摩擦會導致使用者和其他人(在任何層級)感到不適。剛接觸電腦系統的人可能會擔心每次登入大型主機時是否都需要輸入密碼。對他們來說,這也是一種安全摩擦。

引入安全措施通常會導致某些人產生某種形式的摩擦。企業主必須為這些措施付費。電腦使用者可能必須改變習慣或記住不同的身份驗證訊息,添加步驟才能成功連接。系統管理員將需要做額外的工作來實施和維護新的安全措施。

緊固和鎖定 Linux 或類 Unix 作業系統可以很快。這裡的安全措施是一組易於遵循的步驟,無需第三方應用程式和深度防火牆幹預即可提高電腦安全

使用 SSH 協定版本 2

2006年,SSH協定從版本1更新到版本2。這是一個重大升級。有許多變更和改進,特別是在加密和安全性方面,並且版本 2 不向後相容版本 1。要阻止來自版本 1 用戶端的連接,您可以指定電腦僅接受來自版本 2 的連接。

為此,請使用以下命令編輯 /etc/ssh/sshd_config 檔案:

sudo gedit /etc/ssh/sshd_config

如何保護 SSH 伺服器的安全

新增以下行:

Protocol 2

如何保護 SSH 伺服器的安全

並儲存文件,然後使用以下命令重新啟動 SSH 守護程式:

sudo systemctl restart sshd

如何保護 SSH 伺服器的安全

透過切換到另一台電腦並嘗試透過 SSH 連接到測試電腦來測試新設定的實際運作。我們將使用 -1(協定 1)選項強制 ssh 指令使用協定版本 1。

ssh -1 [email protected]

如何保護 SSH 伺服器的安全

連線請求被拒絕。確保您仍然可以連接到協定 2。我們將使用 -2(協定 2)進行測試。

ssh -2 [email protected]

如何保護 SSH 伺服器的安全

SSH 伺服器要求輸入密碼這一事實是一個積極信號,表明連接已建立並且您正在與伺服器互動。現代 SSH 用戶端將預設使用協定 2,只要客戶端是最新的,我們就不需要指定協定 2。

ssh [email protected]

如何保護 SSH 伺服器的安全

連線已被接受。

避開 22 號登機口

連接埠 22 是 SSH 連線的標準連接埠。如果使用不同的連接埠,則會為您的系統添加一些隱密安全性 (STO)。透過模糊性實現的安全永遠不應被視為真正的安全措施。事實上,一些更聰明的攻擊機器人會探測所有開放連接埠並決定它們正在執行什麼服務,而不是依賴簡單的連接埠搜尋清單並假設它們通常提供服務。但使用非標準連接埠可以幫助減少連接埠 22 上的不良流量。

若要設定非標準端口,請按上述方式編輯 SSH 設定檔。

如何保護 SSH 伺服器的安全

刪除連接埠行開頭的 #並將 22 替換為您選擇的號碼。儲存設定檔並重新啟動 SSH 守護程式。

在另一台電腦上,我們將使用 ssh 命令連接到伺服器。預設 ssh 指令使用連接埠 22:

ssh [email protected]

如何保護 SSH 伺服器的安全

連線被拒絕。重試並使用–p(連接埠)選項指定連接埠 470:

ssh -p 479 [email protected]

如何保護 SSH 伺服器的安全

連線已確認。

使用 TCP Wrappers 連線過濾器

TCP Wrappers 是一個易於理解的存取控制清單。它允許您根據連線請求的特徵(例如 IP 位址或主機名稱)拒絕和允許連線。 TCP 包裝器應與正確配置的防火牆一起使用,而不是代替它。

TCP Wrappers 預先安裝在Ubuntu 18.04 LTS電腦上。它必須安裝在 Manjaro 18.10 和 Fedora 30 上。

若要在 Fedora 上安裝,請使用下列命令:

sudo yum install tcp_wrappers

如何保護 SSH 伺服器的安全

若要在 Manjaro 上安裝,請使用下列命令:

sudo pacman -Syu tcp-wrappers

如何保護 SSH 伺服器的安全

包含兩個文件,一個文件保存允許列表,一個文件保存拒絕列表。使用以下命令編輯拒絕清單:

sudo gedit /etc/hosts.deny

如何保護 SSH 伺服器的安全

上面的命令將開啟 gedit 編輯器,其中檔案拒絕載入。

如何保護 SSH 伺服器的安全

您需要新增以下行:

ALL : ALL

並儲存文件。該行將阻止所有未經授權的存取。現在,我們需要向您想要接受的連線授予權限。為此,您需要編輯權限檔案:

sudo gedit /etc/hosts.allow

如何保護 SSH 伺服器的安全

上面的命令將開啟 gedit 編輯器,其中包含可下載的檔案。

如何保護 SSH 伺服器的安全

我們新增了 SSH 守護程式名稱、SSHD 以及允許建立連線的電腦的 IP 位址。儲存檔案並查看限制和權限是否有效。

首先,您將嘗試從主機上未包含的電腦進行連線。allow 檔案:

如何保護 SSH 伺服器的安全

連線被拒絕。我們將嘗試從 IP 位址為 192.168.4.23 的電腦進行連線:

如何保護 SSH 伺服器的安全

連線已接受。

這裡的例子只允許一台機器連接。 TCP 包裝器非常靈活,它支援主機名稱、通配符和子網路遮罩來接受來自 IP 位址範圍的連線。

拒絕無密碼的連線請求

雖然不太好,但 Linux 系統管理員可以建立沒有密碼的使用者帳戶。這意味著從此帳戶進行遠端連線不需要密碼。這些連線將被接受,但不會經過身份驗證。

SSH 的預設設定接受沒有密碼的連線請求。我們可以輕鬆更改它並確保所有這些連接都經過身份驗證。

您需要編輯 SSH 設定檔。

如何保護 SSH 伺服器的安全

在檔案中向下捲動,直到看到#PermitEmptyPasswords no的行。刪除行開頭的 # 並儲存檔案。重新啟動 SSH 守護程式。

使用 SSH 金鑰代替密碼

SSH 金鑰提供了一種登入 SSH 伺服器的安全性方法。密碼可能被破解、猜測或暴力破解。 SSH 金鑰不易受到此類攻擊。

產生 SSH 金鑰時,您將建立一個金鑰對。一個是公鑰,一個是私鑰。公鑰安裝在您要連接的伺服器上。私鑰安全地保存在您的電腦上。

SSH 金鑰允許在沒有密碼的情況下建立連接,這比使用密碼驗證的連接更安全。

發出連線請求時,遠端電腦使用公鑰的副本會建立傳送回電腦的加密訊息。由於它是用公鑰加密的,因此電腦可以用私鑰解密它。

然後,電腦從訊息中提取一些訊息,對其進行加密,然後將其發送回伺服器。如果伺服器可以使用公鑰的副本對其進行解密。如果訊息中的資訊與伺服器發送給您的資訊匹配,則連線將得到確認。

此處,使用者使用 SSH 金鑰與 192.168.4.11 處的伺服器建立連線。請注意,系統不會提示他們輸入密碼。

ssh [email protected]

如何保護 SSH 伺服器的安全

完全禁用密碼驗證

如果您使用 SSH 金鑰,則可以完全停用密碼驗證。我們需要編輯 SSH 設定檔。

如何保護 SSH 伺服器的安全

向下捲動文件,直到看到以#PasswordAuthentication yes開頭的行。刪除行開頭的#,將 yes 更改為 no 並儲存檔案。重新啟動 SSH 守護程式。

禁用 X11 轉發

X11 轉送允許遠端使用者透過 SSH 會話從您的伺服器運行圖形應用程序,但很容易被不良行為者利用。最好透過編輯 SSH 設定檔將其關閉。

如何保護 SSH 伺服器的安全

向下捲動文件,直到看到行#X11Forwarding no,刪除該行開頭的#並儲存文件。重新啟動 SSH 守護程式。

設定空閒超時值

如果與電腦建立 SSH 連線且該電腦在一段時間內沒有任何活動,則可能會帶來安全風險。

因此,您應該設定超時限制。如果在時限內沒有任何活動,SSH 連線將會被中斷。我們再次需要編輯 SSH 設定檔。

如何保護 SSH 伺服器的安全

向下捲動文件,直到看到以#ClientAliveInterval 0開頭的行。刪除行開頭的 #,將數字 0 變更為您想要的值。通常人們將其設定為300秒,即5分鐘。儲存檔案並重新啟動 SSH 守護程式。

設定密碼輸入次數限制

定義確認次數限制有助於防止密碼猜測和暴力攻擊。在指定次數的身份驗證請求後,使用者將中斷與 SSH 伺服器的連線。預設情況下,密碼嘗試次數沒有限制,但您可以在 SSH 設定檔中進行編輯。

如何保護 SSH 伺服器的安全

向下捲動文件,直到看到以#MaxAuthTries 0開頭的行。刪除行開頭的 # 會將數字變更為所需的值。您可以將其設為 3。進行更改時儲存檔案並重新啟動 SSH 守護程序。

您可以透過嘗試連接並輸入錯誤的密碼來測試這一點。

如何保護 SSH 伺服器的安全

請注意,MaxAuthTries 數量大於允許使用者的嘗試次數。兩次嘗試失敗後,您將斷開連接,這意味著 MaxAuthTries 設定為 3。

禁用 root 登入

建議您不要以root身分登錄,只需在Linux上以普通使用者身分使用sudo來執行需要root權限的操作。您也不應該允許 root 登入 SSH 伺服器。僅允許普通用戶連線。如果他們需要執行管理層級的任務,也可以使用 sudo。如果必須允許 root 使用者登錄,您可以強制他們使用 SSH 金鑰。

編輯設定檔以停用 root 登入。

如何保護 SSH 伺服器的安全

向下捲動文件,直到看到以#PermitRootLogin Prevent-password開頭的行,刪除該行開頭的 #。

  • 如果要阻止root登錄,請將prohibit-password替換為no。
  • 如果您允許 root 登入但強制使用 SSH 金鑰,請保持禁止密碼不變。

儲存變更並重新啟動 SSH 守護程式。

最後一步

當然,如果您不需要在電腦上執行 SSH,請使用以下命令將其關閉:

sudo systemctl stop sshd
sudo systemctl disable sshd

祝您成功!


如何在 Windows 10 上為每個應用程式選擇 GPU

如何在 Windows 10 上為每個應用程式選擇 GPU

Windows 10 現在允許用戶從「設定」應用程式中選擇遊戲或其他應用程式的 GPU。以前,您必須使用特殊的製造商工具(例如 NVIDIA 控制面板或 AMD Catalyst 控制中心)將 GPU 指派給每個單獨的應用程式。

在 Windows 中以管理權限執行軟體的 4 種方法

在 Windows 中以管理權限執行軟體的 4 種方法

以下是在 Windows 中以管理權限執行應用程式的 4 種方法。

為什麼Localhost的IP位址是127.0.0.1?

為什麼Localhost的IP位址是127.0.0.1?

127 是子網路遮罩為 255.0.0.0 的 A 類網路中的最後一個網路號碼。位址 127.0.0.1 是子網路中的第一個分配位址。未使用位址 127.0.0.0,因為這是有線網路位址。

如何在 Windows 10 中刪除舊的、未使用的驅動程式

如何在 Windows 10 中刪除舊的、未使用的驅動程式

當驅動程式可用時,Windows 更新會自動下載並安裝硬體驅動程式。而且Windows 10安裝新驅動程式時,系統會保存先前版本的驅動安裝包,以便使用者在新驅動程式出現問題時可以用來還原舊驅動程式版本。

10 個 PowerShell 命令可協助您最有效地管理遠端計算機

10 個 PowerShell 命令可協助您最有效地管理遠端計算機

Windows PowerShell 是一種執行命令列系統和腳本語言,可用於管理系統。在下面的文章中,LuckyTemplates 將向您介紹 10 個 PowerShell 命令,以有效地遠端管理您的電腦。

如何刪除 Windows 10 搜尋列上出現的小圖標

如何刪除 Windows 10 搜尋列上出現的小圖標

如果您細心並注重細節,您可能會注意到 Windows 10 工作列搜尋框中出現的一個小圖示會隨著日期/主題的變化而變化。

如何在 Windows 10 上使用主題

如何在 Windows 10 上使用主題

Windows 中的主題是一組設定、顏色、聲音和類似的配置選項,用於確定使用者介面的顯示方式。主題用於個人化電腦環境以方便使用。

牡羊座和牡羊座電腦壁紙

牡羊座和牡羊座電腦壁紙

LuckyTemplates將向您發送最美麗的壁紙供您使用。下面的牡羊座壁紙已縮小尺寸,供您參考。

在 Windows 10 上停用或解除安裝 Edge 瀏覽器擴充

在 Windows 10 上停用或解除安裝 Edge 瀏覽器擴充

但是,如果您在 Edge 瀏覽器上安裝並允許太多擴展,則會降低您的網頁瀏覽器的速度。因此,如果你想提高Edge瀏覽器的速度,你應該卸載不再使用或很少使用的擴充功能。

將 Windows 上的程式重設為預設安裝狀態的說明

將 Windows 上的程式重設為預設安裝狀態的說明

如果 Windows 電腦上的任何程式無法正常運作,您只需重新安裝程式即可修復錯誤。但是,您需要將程式重設為預設設定。對於某些程序,重置過程非常簡單,但對於某些程序,這個過程一點也不簡單。