SSH 是一種廣泛使用的協議,用于安全地訪問 Linux 服務器。大多數用戶使用默認設置的 SSH 連接來連接到遠程服務器。但是,不安全的默認配置也會帶來各種安全風險。
具有開放 SSH 訪問權限的服務器的 root 帳戶可能存在風險。尤其是如果您使用的是公共 IP 地址,則破解 root 密碼要容易得多。因此,有必要了解 SSH 安全性。
這是在 Linux 上保護 SSH 服務器連接的方法。
1.禁用root用戶登錄
為此,首先,禁用 root 用戶的 SSH 訪問并創建一個具有 root 權限的新用戶。關閉 root 用戶的服務器訪問是一種防御策略,可以防止攻擊者實現入侵系統的目標。例如,您可以創建一個名為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 服務:
linuxmi@linuxmi /home/linuxmi/www.linuxmi.com ? sudo systemctl restart ssh
如果失敗并且您收到錯誤消息,請嘗試以下命令。這可能因您使用的 Linux 發行版而異。
linuxmi@linuxmi /home/linuxmi/www.linuxmi.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 服務以保存更改。
Linux 服務器安全的重要性
所有服務器管理員都應該考慮數據和數據安全問題。服務器安全是一個非常敏感的問題,因為攻擊的主要焦點是 Web 服務器,它們幾乎包含有關系統的所有信息。由于大多數服務器都在 Linux 基礎架構上運行,因此熟悉 Linux 系統和服務器管理非常重要。
SSH 安全只是保護服務器的方法之一。可以通過停止、阻擋或減緩攻擊來最大程度地減少您受到的傷害。除了提供 SSH 安全性之外,您還可以實施許多不同的方法來保護您的 Linux 服務器。