在 Linux 上建立 SSH 安全連接的13種方法
SSH 廣泛用于安全訪問 Linux 服務器。大多數(shù)用戶使用默認設置的 SSH 連接來連接到遠程服務器。然而,不安全的默認配置也會帶來各種安全風險。
具有開放 SSH 訪問的服務器的 root 帳戶可能會面臨風險。特別是如果您使用公共IP地址,破解root密碼就更容易。因此,了解SSH安全是必要的。
以下是如何在 Linux 上建立 SSH 安全連接的方法。
1、禁用root用戶登錄
首先,禁用 root 用戶的 SSH 訪問并創(chuàng)建具有 root 特權的新用戶。關閉 root 用戶的服務器訪問是一種防御策略,可防止攻擊者達到入侵系統(tǒng)的目的。例如,您可以創(chuàng)建名為 exampleroot 的用戶,如下所示:
useradd -m exampleroot
passwd exampleroot
usermod -aG sudo exampleroot
以下是上述命令的簡要解釋:
- useradd 命令用于創(chuàng)建新用戶,-m 參數(shù)會在 home 目錄下為所創(chuàng)建的用戶創(chuàng)建一個文件夾。
- passwd 命令用于給新用戶分配密碼。請記住,分配給用戶的密碼應該是復雜的、難以猜測的密碼。
- usermod -aG sudo 將新創(chuàng)建的用戶添加到管理員組。
在創(chuàng)建用戶后,需要對 sshd_config 文件進行一些更改。您可以在 /etc/ssh/sshd_config 找到此文件。使用任何文本編輯器打開該文件并進行以下更改:
# Authentication:
#LoginGraceTime 2m
PermitRootLogin no
AllowUsers exampleroot
PermitRootLogin參數(shù)可以防止root用戶使用SSH獲得遠程訪問權限。將exampleroot包含在AllowUsers列表中授予用戶必要的權限。
最后,使用以下命令重啟SSH服務:
sudo systemctl restart ssh
如果失敗并收到錯誤消息,請嘗試下面的命令。這可能因您使用的Linux發(fā)行版而異。
sudo systemctl restart sshd
2、更改默認SSH端口
默認的SSH連接端口是22。當然,所有攻擊者都知道這一點,因此需要更改默認端口號以確保SSH安全性。雖然攻擊者可以使用Nmap掃描輕松找到新端口號,但這里的目標是使攻擊者的工作更加困難。
要更改端口號,請打開/etc/ssh/sshd_config并對文件進行以下更改:
Include /etc/ssh/sshd_config.d/*.conf
Port 5922
完成此步驟后,再次使用sudo systemctl restart ssh命令重啟SSH服務。現(xiàn)在,您可以使用剛定義的端口訪問服務器。
如果您正在使用防火墻,則必須在那里進行必要的規(guī)則更改。運行netstat -tlpn命令,您可以看到SSH的端口號已更改。
3、禁止使用空密碼登錄
在您的系統(tǒng)上可能存在沒有密碼的用戶,這可能是您不小心創(chuàng)建的。為了防止這樣的用戶訪問服務器,您可以將sshd_config文件中的PermitEmptyPasswords行值設置為no。
PermitEmptyPasswords no
4、限制登錄/訪問嘗試次數(shù)
默認情況下,您可以使用任意多的密碼嘗試來訪問服務器。但是,攻擊者可以利用此漏洞對服務器進行暴力破解。
您可以通過在sshd_config文件中指定允許的密碼嘗試次數(shù)來自動終止SSH連接。
為此,請更改MaxAuthTries值。
MaxAuthTries 3
5、使用SSH Version 2
SSH Version 2 的發(fā)布是因為第一版存在許多漏洞。默認情況下,您可以通過將 Protocol 參數(shù)添加到您的 sshd_config 文件中來啟用使用SSH Version 2。
這樣,您所有未來的連接都將使用 SSH2。
Include /etc/ssh/sshd_config.d/*.conf
Protocol 2
6、關閉TCP端口轉發(fā)和X11轉發(fā)
攻擊者可以通過SSH連接進行端口轉發(fā),嘗試獲取訪問您其他系統(tǒng)的權限。為了防止這種情況發(fā)生,您可以在sshd_config文件中關閉AllowTcpForwarding和X11Forwarding功能。
X11Forwarding no
AllowTcpForwarding no
7、使用SSH密鑰連接
連接到服務器最安全的方法之一是使用SSH密鑰。使用SSH密鑰,您可以無需密碼訪問服務器。此外,您可以通過更改sshd_config文件中的與密碼相關的參數(shù)來完全關閉服務器的密碼訪問。
創(chuàng)建SSH密鑰時,有兩個密鑰:公鑰和私鑰。公鑰上傳到您要連接的服務器,私鑰存儲在使用該密鑰進行連接的計算機上。
在計算機上使用ssh-keygen命令創(chuàng)建SSH密鑰。不要留空Passphrase字段,并記住您在此輸入的密碼。
如果您留空該字段,則只能通過SSH密鑰文件進行訪問。但是,如果設置了密碼,您可以防止擁有密鑰文件的攻擊者訪問它。
例如,您可以使用以下命令創(chuàng)建SSH密鑰:
ssh-keygen
8、SSH連接的IP限制
大多數(shù)情況下,防火墻使用其標準框架阻止訪問并旨在保護服務器。但是,這并不總是足夠的,您需要增加此安全性潛力。
要做到這一點,請打開/etc/hosts.allow文件。通過在此文件中進行添加,您可以限制SSH權限,允許特定IP塊或輸入單個IP并使用拒絕命令阻止所有其余IP地址。
下面是一些示例設置。完成這些操作后,像往常一樣重新啟動SSH服務以保存更改。
IP-Restriction-for-SSH-Connection-1
9、有選擇地允許用戶和組訪問
您可以配置sshd配置文件以有選擇地允許或禁止用戶和組從SSH登錄到您的服務器。默認情況下,所有用戶和組都允許訪問。當您管理不應由除那些具有適當權限的人以外的任何人訪問的生產服務器時,這是一種安全風險。
以下是您需要添加以允許/拒絕用戶和組訪問SSH的行:
AllowUsers: username sshuser@ip:port
AllowGroups: groupname
DenyUsers: username1 username2 sshuser@ip:port
DenyGroups: groupname
10、設置空閑超時時間間隔
如果一個受信任的用戶離開他們的桌面未經注銷,那么擁有他們電腦訪問權限的對手可以利用這一點,在缺席或不活動的受信任用戶的情況下對服務器進行惡意操作。
抵御這種情況的最簡單方法是設置一個空閑超時時間間隔。在定義的一段不活動時間后,服務器將終止與用戶的SSH連接,以防止在缺席或不活動的情況下未經授權的訪問。
以下是您需要添加到ssh配置文件中以開啟此設置的行:
ClientAliveInterval 120
根據(jù)配置文件中發(fā)出的命令,經過120秒的不活動時間后,連接將被終止。您可以更改數(shù)字以適應自己的喜好。
12、添加 Banner 警告語言
雖然這不是一種主動的安全措施,但添加 Banner 警告語言可以是一種有用的心理策略,用于防止不受歡迎的訪客,并在他們試圖以惡意意圖連接到您的服務器時使對手處于不利位置。
要添加自定義 Banner 警告語言,請首先仔細準備橫幅的文本或從互聯(lián)網上抓取一個通用的文本文件,然后將以下行添加到您的配置文件中:
Banner /path/to/banner/banner.txt
13、強制使用強大的MAC算法
在SSH的上下文中,MAC代表消息認證碼。MAC是一種加密算法,用于驗證和確認客戶端與服務器之間的數(shù)據(jù)傳輸。
設置強大的MAC算法非常重要,以確保數(shù)據(jù)的完整性和保密性,這是網絡安全的兩個關鍵支柱。以下是您需要在配置文件中添加的行:
Banner /path/to/banner/banner.txt
14、將LogLevel設置為監(jiān)視SSH活動
您可以監(jiān)視SSH活動的不同詳細程度。默認情況下,此功能可能已關閉。建議您打開此功能,并將其設置為基本日志記錄級別 – INFO,該級別僅記錄用戶的錯誤、消息、密鑰驗證、登錄和注銷活動。
如果您愿意,可以將其更改為更詳細的級別,例如VERBOSE或DEBUG。以下是您需要在sshd配置文件中添加的行:
LogLevel INFO
現(xiàn)在,您的SSH服務器將生成基本日志數(shù)據(jù),您可以通過導航到并讀取基于Debian / Ubuntu的機器上的/var/log/auth.log*文件和基于RHEL / CentOS / Fedora的機器上的/var/log/secure文件來閱讀此日志數(shù)據(jù)。
您可以查看整個日志文件并導航到帶有sshd的部分,或者使用grep命令過濾內容并僅閱讀sshd日志。
Linux 服務器安全的重要性
數(shù)據(jù)和數(shù)據(jù)安全問題非常詳細,所有服務器管理員都應考慮。服務器安全是非常敏感的問題,因為攻擊的主要焦點是Web服務器,它們包含有關系統(tǒng)的幾乎所有信息。
由于大多數(shù)服務器運行在Linux基礎架構上,因此熟悉Linux系統(tǒng)和服務器管理非常重要。
SSH 安全僅是保護服務器的一種方式。您可以通過停止、阻止或減緩攻擊來將所遭受的損害最小化。除提供 SSH 安全外,還可以實施許多不同的方法來保護您的 Linux 服務器。