為您的Linux服務(wù)器考慮哪些技術(shù)以幫助提高SSH安全性

      SSH是 Linux 服務(wù)器的通用系統(tǒng)管理實(shí)用程序。無論您運(yùn)行的是 CentOS、Debian、Ubuntu 還是介于兩者之間的任何系統(tǒng);如果您以前登錄過 Linux 服務(wù)器,您可能至少聽說過它。

      為您的Linux服務(wù)器考慮哪些技術(shù)以幫助提高SSH安全性-南華中天

      SSH 的縮寫代表“Secure Socket Shell”,顧名思義,該協(xié)議在構(gòu)建時(shí)就考慮到了安全性。許多服務(wù)器管理員認(rèn)為 SSH 開箱即用就非常安全,而且在大多數(shù)情況下,他們是正確的。默認(rèn)情況下,SSH 具有出色的開箱即用安全功能,例如通信加密以防止中間人攻擊,以及主機(jī)密鑰驗(yàn)證以在用戶上次登錄后服務(wù)器身份發(fā)生更改時(shí)提醒用戶。

      盡管如此,Internet 上仍有大量運(yùn)行 SSH 的服務(wù)器,攻擊者喜歡尋找可能影響大量服務(wù)器的攻擊媒介。為了安全,往往會(huì)犧牲便利性,因此許多服務(wù)器管理員有意或不假思索地讓他們的服務(wù)器運(yùn)行默認(rèn)的 SSH 安裝。在大多數(shù)情況下,這對他們中的大多數(shù)人來說都不是問題,但是您可以采取一些步驟來領(lǐng)先一步。畢竟,我相信稍微領(lǐng)先一點(diǎn)是可以達(dá)到的最佳安全實(shí)踐之一,這樣您的服務(wù)器就可以避免成為容易吸引攻擊者的懸而未決的成果之一。

      考慮到這一點(diǎn),您可能希望為您的 Linux 服務(wù)器考慮一些技術(shù),以幫助提高 SSH 安全性。

      蠻力保護(hù)

      提高 SSH 安全性的最常用技術(shù)之一是暴力破解保護(hù)。這是因?yàn)檫\(yùn)行 SSH 服務(wù)的服務(wù)器管理員面臨的最常見的安全問題之一是來自自動(dòng)機(jī)器人的暴力攻擊。機(jī)器人會(huì)嘗試猜測服務(wù)器上的用戶名和密碼,但暴力保護(hù)可以在一定次數(shù)的失敗后自動(dòng)禁止其 IP 地址。

      一些常見的開源暴力破解保護(hù)解決方案是ConfigServer Firewall (CSF)和Fail2Ban。CSF 在 cPanel 服務(wù)器上最常見,因?yàn)樗幸粋€(gè) WHM 插件。

      蠻力保護(hù)的優(yōu)缺點(diǎn)

      優(yōu)點(diǎn)

      將通過自動(dòng)禁止機(jī)器人來幫助減少機(jī)器人登錄失敗,從而大大降低機(jī)器人有機(jī)會(huì)猜測您的 SSH 帳戶之一的登錄詳細(xì)信息的可能性。

      非常容易實(shí)施,無需更改所需的 SSH 配置。

      缺點(diǎn)

      這些蠻力程序無法將機(jī)器人與您和您的用戶區(qū)分開來。如果您不小心多次登錄失敗,您可能會(huì)將自己鎖在門外。如果發(fā)生這種情況,請確保您有可靠的方法來訪問服務(wù)器,例如將您自己的 IP 地址列入白名單,并使用 KVM 或 IPMI 控制臺(tái)作為最后的手段。

      更改 SSH 端口號(hào)

      我看到的最常見的技術(shù)之一是將 SSH 端口號(hào)更改為默認(rèn)端口 22/tcp 以外的其他端口號(hào)。

      此更改相對簡單,例如,如果您想將 SSH 端口從 22 更改為 2222,您只需要像這樣更新 sshd_config 文件的端口行: 順便說一下,端口 2222 是一個(gè)很常見的

      Port 2222

      端口“備用”端口,因此一些暴力機(jī)器人可能仍會(huì)嘗試此端口。最好選擇更隨機(jī)的東西,例如 2452。它甚至不必包含 2,如果您愿意,您的 SSH 端口可以是 6543。任何未被服務(wù)器上的其他程序使用的最大 65535 的端口號(hào)都是公平的。

      更改 SSH 端口號(hào)的優(yōu)缺點(diǎn)

      優(yōu)點(diǎn)

      • 這種技術(shù)在減少自動(dòng)機(jī)器人攻擊方面通常非常有效。其中大部分是非智能腳本,只會(huì)尋找在端口 22 上運(yùn)行的服務(wù)器。

      缺點(diǎn)

      • 這種技術(shù)相當(dāng)于“默默無聞的安全”。正在嘗試備用端口的機(jī)器人或任何配備了 nmap 等端口掃描工具的人都可以在幾分鐘內(nèi)輕松找到服務(wù)器的新端口。
      • 這種技術(shù)會(huì)使 SSH 服務(wù)器的訪問更加不便,因?yàn)槟F(xiàn)在需要在連接時(shí)指定端口號(hào),而不僅僅是 IP。

      通過 SSH 禁用根登錄

      另一種常見技術(shù)是完全禁止 root 用戶帳戶通過 SSH 登錄,或者在沒有授權(quán) SSH 密鑰的情況下登錄。您仍然可以通過 SSH 獲得 root 訪問權(quán)限,方法是向您的一個(gè)受限用戶授予“sudo”權(quán)限,或者使用“su”命令使用密碼切換到 root 帳戶。

      這可以通過調(diào)整 sshd_config 文件中的“PermitRootLogin”設(shè)置來配置。

      要僅允許使用 SSH 密鑰進(jìn)行 root 登錄,您可以將行更改為:PermitRootLogin without-password

      要完全禁止通過 SSH 進(jìn)行 root 登錄,您可以將行更改為:PermitRootLogin no

      通過 SSH 禁用根登錄的優(yōu)缺點(diǎn)

      優(yōu)點(diǎn)

      這種技術(shù)有點(diǎn)用處,因?yàn)橛脩裘皉oot”對于大多數(shù) LInux 服務(wù)器來說很常見(比如 Windows 服務(wù)器上的“Administrator”),所以很容易猜到。現(xiàn)在禁止此帳戶登錄意味著攻擊者還必須正確猜測用戶名才能獲得訪問權(quán)限。

      如果您不使用 sudo,此技術(shù)會(huì)將 root 訪問置于第二個(gè)密碼之后,要求攻擊者在獲得對服務(wù)器的完全訪問權(quán)限之前正確知道或猜測兩個(gè)密碼。(Sudo 會(huì)在一定程度上減少這種好處,因?yàn)橥ǔK慌渲脼樵试S使用與用戶登錄時(shí)相同的密碼進(jìn)行 root 訪問。)

      缺點(diǎn)

      如果您的 sudo 配置出現(xiàn)問題,此方法可能會(huì)增加您被鎖定在服務(wù)器之外的風(fēng)險(xiǎn)。如果您被鎖定在 root 之外,使用此方法訪問服務(wù)器仍然是一個(gè)好主意,例如遠(yuǎn)程控制臺(tái)。

      禁用密碼驗(yàn)證,支持密鑰驗(yàn)證

      關(guān)于密碼,每個(gè)人告訴您的第一件事就是密碼要長,難以猜測,并且不要基于字典單詞。SSH 密鑰可以用密鑰文件的身份驗(yàn)證代替密碼身份驗(yàn)證。

      與密碼相比,SSH 密鑰非常安全,因?yàn)樗鼈儼罅侩S機(jī)數(shù)據(jù)。如果您見過 SSL 證書或密鑰文件,SSH 密鑰看起來與此類似。這是一串非常大的隨機(jī)字符。

      您無需輸入密碼即可登錄 SSH 服務(wù)器,而是使用此密鑰文件進(jìn)行身份驗(yàn)證,這與網(wǎng)站上 SSL 證書的工作方式大致相同。

      如果您想禁用密碼身份驗(yàn)證,可以通過修改 sshd_config 文件中的“PasswordAuthentication”設(shè)置來實(shí)現(xiàn),如下所示:PasswordAuthentication no

      禁用密碼身份驗(yàn)證的優(yōu)點(diǎn)和缺點(diǎn),有利于密鑰身份驗(yàn)證。

      優(yōu)點(diǎn)

      • 此方法大大降低了針對 SSH 服務(wù)器的暴力破解嘗試成功的可能性。
      • 大多數(shù)暴力機(jī)器人只是嘗試密碼開始,他們將使用完全錯(cuò)誤的身份驗(yàn)證方法來嘗試闖入,因此這些機(jī)器人永遠(yuǎn)不會(huì)成功。
      • 即使有人在進(jìn)行有針對性的攻擊,SSH 密鑰也比密碼長得多,以至于正確猜測一個(gè)密碼要困難幾個(gè)數(shù)量級(jí),這僅僅是因?yàn)橛刑嗟撵睾蜐撛诘慕M合。

      缺點(diǎn)

      • 這種技術(shù)會(huì)使訪問服務(wù)器變得不那么方便。如果您手邊沒有密鑰文件,您將無法通過 SSH 登錄。
      • 由于上述原因,您也增加了被 SSH 鎖定的風(fēng)險(xiǎn),例如,如果您丟失了密鑰文件。因此,如果您需要讓自己重新進(jìn)入,最好有一種替代方法來訪問服務(wù)器,例如遠(yuǎn)程控制臺(tái)。

      如果有人得到了您的密鑰文件,就像密碼一樣,他們現(xiàn)在將能夠以您的身份登錄。但是,與密碼不同,密鑰可以很容易地過期并創(chuàng)建新密鑰,并且新密鑰將以相同的方式運(yùn)行。

      關(guān)于 SSH 密鑰方法的另一個(gè)有趣的怪癖是您可以在一個(gè)帳戶上授權(quán)多個(gè) SSH 密鑰,而一個(gè)帳戶通常只能有一個(gè)密碼。

      值得注意的是,即使打開了密碼驗(yàn)證,您也可以使用 SSH 密鑰訪問帳戶。默認(rèn)情況下,如果您授權(quán)密鑰,SSH 密鑰將用作身份驗(yàn)證方法。

      僅允許列入白名單的 IP

      一種非常有效的安全技術(shù)是只允許列入白名單的 IP 地址連接到 SSH 服務(wù)器。這可以通過防火墻規(guī)則來完成,只打開授權(quán) IP 地址的 SSH 端口。

      這對于家庭用戶或共享網(wǎng)絡(luò)托管服務(wù)提供商來說可能不切實(shí)際,因?yàn)楹茈y知道哪些 IP 地址需要訪問,而且家庭 IP 地址往往是動(dòng)態(tài)的,因此您的 IP 地址可能會(huì)發(fā)生變化。但是,對于您使用 VPN 或主要從靜態(tài) IP 地址訪問的情況,它可能是一種維護(hù)成本低且極其安全的解決方案。

      僅允許列入白名單的 IP 的優(yōu)點(diǎn)和缺點(diǎn)

      優(yōu)點(diǎn)

      • 這種方法提供了非常強(qiáng)大的安全性,因?yàn)楣粽咝枰呀?jīng)訪問您列入白名單的 IP 之一才能嘗試通過 SSH 登錄。
      • 可以說,這種方法可以取代對暴力保護(hù)或禁用密碼驗(yàn)證等其他安全方法的需求,因?yàn)楝F(xiàn)在基本上消除了暴力攻擊的威脅。

      缺點(diǎn)

      • 這種方法會(huì)增加您被鎖定在服務(wù)器之外的機(jī)會(huì),尤其是當(dāng)您位于 IP 地址可能會(huì)更改的位置時(shí),例如住宅 Internet 連接。
      • 訪問的便利性也會(huì)降低,因?yàn)槟鷮o法從未提前列入白名單的位置訪問服務(wù)器。
      • 這需要付出一些努力,因?yàn)槟F(xiàn)在必須根據(jù)需要更改通過添加和刪除 IP 來維護(hù)您的 IP 地址白名單。

      在我自己的個(gè)人服務(wù)器上,這通常是我使用的技術(shù)。這樣我仍然可以方便地使用密碼進(jìn)行身份驗(yàn)證并使用普通的 SSH 端口,同時(shí)具有很強(qiáng)的安全性。我也經(jīng)常更換我的服務(wù)器,在需要時(shí)創(chuàng)建新的,我發(fā)現(xiàn)實(shí)現(xiàn)這個(gè)白名單是讓我的新服務(wù)器安全而不干擾其他配置的最快方法,我可以簡單地從另一臺(tái)服務(wù)器復(fù)制我的白名單。

      混合方法:允許來自 IP 列表的密碼,但允許來自所有 IP 的密鑰。

      如果您喜歡,可以實(shí)施多種“混合”方法,這些方法結(jié)合了這些安全技術(shù)中的一種或多種。

      我曾經(jīng)遇到過GigeNET的一位客戶的情況,他們想為員工提供密碼訪問權(quán)限,以便他們可以在我們的檔案中留下密碼,但他們只想自己使用密鑰身份驗(yàn)證,而不想打開密碼身份驗(yàn)證到互聯(lián)網(wǎng)。

      這實(shí)際上實(shí)現(xiàn)起來非常簡單,它提供了禁用密碼驗(yàn)證的大部分安全性,同時(shí)在大多數(shù)情況下仍然允許密碼驗(yàn)證的便利性。

      為此,您需要將以下行添加到您的 sshd_config:

      # Global Setting to disable password authentication

      PasswordAuthentication no

      [...]

      # Override the Global Settings for IP Whitelist

      # Place this section at the -end- of your sshd_config file.

      Match address 1.2.3.4/32

      PasswordAuthentication yes

      對于上述,1.2.3.4 是列入白名單的 IP 地址。您可以重復(fù)該配置部分以將多個(gè) IP 列入白名單,并且可以將 /32 更改為另一個(gè) IPv4 CIDR,例如 /28、/27 等,以便將一系列 IP 列入白名單。

      請記住,匹配地址塊應(yīng)該放在 sshd_config 文件的最后。

      混合方法的優(yōu)點(diǎn)和缺點(diǎn)

      優(yōu)點(diǎn)

      這種技術(shù)可以通過防止密碼在大多數(shù) Internet 上工作來提供密鑰身份驗(yàn)證的安全性,但允許從頻繁訪問的位置進(jìn)行密碼身份驗(yàn)證的便利性。因此,它允許您在保持大部分安全性的同時(shí)減少一些缺點(diǎn)。如果您的 IP 地址發(fā)生變化并且您不再被列入白名單,只要您將密鑰文件保存在本地,您仍然可以使用 SSH 登錄。

      缺點(diǎn)

      與 IP 白名單防火墻方法一樣,此方法需要一些維護(hù),因?yàn)槿绻?IP 地址更改或您需要將其他位置列入白名單,您必須更新 SSH 配置,但與其他方法不同,在這里更新白名單不太重要,因?yàn)槟匀豢梢栽L問通過 key 方法,即使你沒有被列入白名單。

      最終,您必須選擇最適合您的用例的內(nèi)容

      希望這個(gè)技術(shù)和示例列表提供了一些思考,供您在保護(hù)服務(wù)器安全時(shí)使用:風(fēng)險(xiǎn)是什么以及存在哪些可能的技術(shù)來減輕這些風(fēng)險(xiǎn)。根據(jù)您認(rèn)為服務(wù)器安全性的重要性,以及實(shí)施各種安全解決方案以減輕您關(guān)注的風(fēng)險(xiǎn)的實(shí)用性,您可以選擇一種或多種技術(shù)來推進(jìn)。

      歸根結(jié)底,我總是提醒大家,安全是相對的。你永遠(yuǎn)不會(huì)有任何完全無法理解的東西,最主要的是讓自己至少比其他人領(lǐng)先一步。即使您只實(shí)施了這些安全實(shí)踐中的一種,您也比大量使用默認(rèn)設(shè)置運(yùn)行的 Linux 服務(wù)器更安全,并且 SSH 對任何想要嘗試登錄的人都開放。