Linux 怎麼防止 ssh 被暴力破解

語言: CN / TW / HK

SSH 是一種廣泛使用的協議,用於安全地訪問 Linux 伺服器。大多數使用者使用預設設定的 SSH 連線來連線到遠端伺服器。但是,不安全的預設配置也會帶來各種安全風險。

具有開放 SSH 訪問許可權的伺服器的 root 帳戶可能存在風險。尤其是如果你使用的是公共 IP 地址,則破解 root 密碼要容易得多。因此,有必要了解 SSH 安全性。這是在 Linux 上保護 SSH 伺服器連線的方法。

1. 禁用 root 使用者登入

為此,首先,禁用 root 使用者的 SSH 訪問並建立一個具有 root 許可權的新使用者。關閉 root 使用者的伺服器訪問是一種防禦策略,可以防止攻擊者實現入侵系統的目標。例如,你可以建立一個名為 exampleroot 的使用者,如下所示:

useradd -m exampleroot
passwd exampleroot
usermod -aG sudo exampleroot

以下是上述命令的簡要說明:

  • useradd 建立一個新使用者,並且 - m 引數在你建立的使用者的主目錄下建立一個資料夾。
  • passwd 命令用於為新使用者分配密碼。請記住,你分配給使用者的密碼應該很複雜且難以猜測。
  • usermod -aG sudo 將新建立的使用者新增到管理員組。

在使用者建立過程之後,需要對 sshd_config 檔案進行一些更改。你可以在 / etc/ssh/sshd_config 找到此檔案。使用任何文字編輯器開啟檔案並對其進行以下更改:

# Authentication: #LoginGraceTime 2m PermitRootLogin no 
AllowUsers exampleroot

PermitRootLogin 行將阻止 root 使用者使用 SSH 獲得遠端訪問。在 AllowUsers 列表中包含 exampleroot 會向用戶授予必要的許可權。最後,使用以下命令重啟 SSH 服務:

> [email protected] /home/rumenz/www.rumenz.com                              
> sudo systemctl restart ssh

如果失敗並且你收到錯誤訊息,請嘗試以下命令。這可能因你使用的 Linux 發行版而異。

> [email protected] /home/rumenz/www.rumenz.com
> sudo systemctl restart sshd

2. 更改預設埠

預設的 SSH 連線埠是 22。當然,所有的攻擊者都知道這一點,因此需要更改預設埠號以確保 SSH 安全。儘管攻擊者可以通過 Nmap 掃描輕鬆找到新的埠號,但這裡的目標是讓攻擊者的工作更加困難。要更改埠號,請開啟 / etc/ssh/sshd_config 並對檔案進行以下更改:

Include /etc/ssh/sshd_config.d/*.confPort 22099

在這一步之後,使用
sudo systemctl restart ssh 再次重啟 SSH
服務。現在你可以使用剛剛定義的埠訪問你的伺服器。如果你使用的是防火牆,則還必須在此處進行必要的規則更改。在執行 netstat -tlpn
命令時,你可以看到你的 SSH 埠號已更改。

3. 禁止使用空白密碼的使用者訪問

在你的系統上可能有你不小心建立的沒有密碼的使用者。要防止此類使用者訪問伺服器,你可以將 sshd_config 檔案中的 PermitEmptyPasswords 行值設定為 no。

PermitEmptyPasswords no

4. 限制登入 / 訪問嘗試

預設情況下,你可以根據需要嘗試多次輸入密碼來訪問伺服器。但是,攻擊者可以利用此漏洞對伺服器進行暴力破解。通過指定允許的密碼嘗試次數,你可以在嘗試一定次數後自動終止 SSH 連線。為此,請更改 sshd_config 檔案中的 MaxAuthTries 值。

MaxAuthTries 3

5. 使用 SSH 版本 2

SSH 的第二個版本釋出是因為第一個版本中存在許多漏洞。預設情況下,你可以通過將 Protocol 引數新增到 sshd_config 檔案來啟用伺服器使用第二個版本。這樣,你未來的所有連線都將使用第二個版本的 SSH。

Include /etc/ssh/sshd_config.d/*.conf Protocol 2

6. 關閉 TCP 埠轉發和 X11 轉發

攻擊者可以嘗試通過 SSH 連線的埠轉發來訪問你的其他系統。為了防止這種情況,你可以在 sshd_config 檔案中關閉 AllowTcpForwarding 和 X11Forwarding 功能。

X11Forwarding no 
AllowTcpForwarding no

7. 使用 SSH 金鑰連線

連線到伺服器的最安全方法之一是使用 SSH 金鑰。使用 SSH 金鑰時,無需密碼即可訪問伺服器。另外,你可以通過更改 sshd_config 檔案中與密碼相關的引數來完全關閉對伺服器的密碼訪問。建立 SSH 金鑰時,有兩個金鑰:Public 和 Private。公鑰將上傳到你要連線的伺服器,而私鑰則儲存在你將用來建立連線的計算機上。在你的計算機上使用 ssh-keygen 命令建立 SSH 金鑰。不要將密碼短語欄位留空並記住你在此處輸入的密碼。如果將其留空,你將只能使用 SSH 金鑰檔案訪問它。但是,如果你設定了密碼,則可以防止擁有金鑰檔案的攻擊者訪問它。例如,你可以使用以下命令建立 SSH 金鑰:

ssh-keygen

8. SSH 連線的 IP 限制

大多數情況下,防火牆使用自己的標準框架阻止訪問,旨在保護伺服器。但是,這並不總是足夠的,你需要增加這種安全潛力。為此,請開啟 / etc/hosts.allow 檔案。通過對該檔案進行的新增,你可以限制 SSH 許可權,允許特定 IP 塊,或輸入單個 IP 並使用拒絕命令阻止所有剩餘的 IP 地址。下面你將看到一些示例設定。完成這些之後,像往常一樣重新啟動 SSH 服務以儲存更改。