溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么配置SSH服務(wù)器安全

發(fā)布時(shí)間:2021-10-29 09:13:55 來(lái)源:億速云 閱讀:147 作者:iii 欄目:編程語(yǔ)言

本篇內(nèi)容介紹了“怎么配置SSH服務(wù)器安全”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

僅使用SSHv2 協(xié)議

SSHv1是已知的對(duì)于SSH協(xié)議的不安全實(shí)現(xiàn),為了確保系統(tǒng)的完整性,應(yīng)當(dāng)將SSH服務(wù)配置為僅接受SSHv2連接。

通過(guò)取消以下行配置的注釋,來(lái)配置SSH服務(wù)僅接受SSHv2協(xié)議。

Protocol 2

備注:RedHat和CentOS在7.4版本之后使用SSHv2作為默認(rèn)配置,但是“我”仍喜歡將該行寫(xiě)入配置文件。

關(guān)閉或者延遲壓縮

SSH可以使用gzip算法壓縮數(shù)據(jù),如果壓縮軟件中存在漏洞,就可能影響到系統(tǒng)。

關(guān)于在快速連接上是否需要啟用壓縮,已經(jīng)進(jìn)行了很多討論,普遍認(rèn)為壓縮實(shí)際上會(huì)減慢處理速度,除非你使用慢速連接(調(diào)制解調(diào)器、ISDN等)。如果必須使用壓縮功能,請(qǐng)使用延遲功能來(lái)確保在壓縮開(kāi)始前對(duì)用戶進(jìn)行身份驗(yàn)證。

關(guān)閉壓縮功能(推薦):

Compression no

要將壓縮延遲到身份認(rèn)證后,則需要修改為:

Compression delayed

這里的“快速連接”和“慢速連接”沒(méi)太理解,原文為“fast connections”、“slow connection”,可能指的就是通信信道的傳輸速率吧。

限制身份驗(yàn)證最大嘗試次數(shù)

限制用戶失敗認(rèn)證的最大次數(shù)是一個(gè)緩解暴力攻擊的好方法。將MaxAuthTries設(shè)置為比較小的數(shù)字(x),將會(huì)在用戶x次失敗嘗試后強(qiáng)制斷開(kāi)會(huì)話。

限制最大身份驗(yàn)證嘗試次數(shù),請(qǐng)修改sshd_config中的配置為如下:

MaxAuthTries 3

You can set this number as low as you like, but 3 is a good balance between security and convenience in my opinion.

你可以任意調(diào)低這個(gè)數(shù)字,但是我認(rèn)為“3”是在安全和便利之間較為平衡的設(shè)置。

禁用root賬戶登錄

如果你允許root用戶登錄,則不能將操作關(guān)聯(lián)到用戶,強(qiáng)制用戶使用特定于用戶的賬戶登錄可以確保問(wèn)責(zé)機(jī)制。此外,這樣設(shè)置還可以進(jìn)一步保護(hù)root賬戶免受其他類型的攻擊。

阻止用戶使用root賬戶登錄,請(qǐng)修改配置如下:

PermitRootLogin no

強(qiáng)烈建議使用此配置。

顯示最后一次登錄的日期和時(shí)間

這通常是現(xiàn)代系統(tǒng)中的默認(rèn)設(shè)置,但是檢查其是否正確配置仍然很重要。通過(guò)打印最后一次登錄的日期和時(shí)間,用戶可以意識(shí)到未經(jīng)授權(quán)的賬戶登錄事件,這將對(duì)進(jìn)一步調(diào)查無(wú)法識(shí)別的訪問(wèn)提供幫助。

輸出最后一次登錄日期和時(shí)間,請(qǐng)修改配置如下:

PrintLastLog yes

這是條安全的捷徑。

結(jié)束空閑的SSH會(huì)話

無(wú)限期地將SSH會(huì)話保持打開(kāi)狀態(tài)不是一個(gè)好主意,因?yàn)橛脩艨赡茈x開(kāi)他們的工作站,這給了一個(gè)未授權(quán)用戶在無(wú)人看管的工作站上執(zhí)行命令的好機(jī)會(huì)。最好的辦法是在短時(shí)間內(nèi)終止空閑的SSH會(huì)話,不給他人留機(jī)會(huì)。

ClientAliveCountMax選項(xiàng)和ClientAliveInterval選項(xiàng)相互配合,例如要在十五分鐘(900秒)后關(guān)閉不活動(dòng)的會(huì)話,修改配置文件如下:

ClientAliveInterval 900
ClientAliveCountMax 0

更多有關(guān)ClientAliveInterval的說(shuō)明:

設(shè)置超時(shí)間隔(以為單位),在此間隔后,如果未從客戶端接收到任何數(shù)據(jù),sshd服務(wù)端將通過(guò)加密的通道發(fā)送消息請(qǐng)求客戶端回應(yīng)。默認(rèn)值為0,表示不會(huì)執(zhí)行該操作。

更多有關(guān)ClientAliveCountMax的說(shuō)明:

設(shè)置客戶端探活消息(上文所述操作)的數(shù)量,如果發(fā)送客戶端探活消息達(dá)到此閾值,則sshd服務(wù)端將斷開(kāi)客戶端連接,從而終止會(huì)話。

指定白名單用戶

你可以通過(guò)白名單指定那些經(jīng)過(guò)授權(quán)的用戶來(lái)連接SSH服務(wù)器,只有在這個(gè)列表中的用戶才有權(quán)登錄SSH,其他人則不行。這樣做好處多多。

允許 "pfloyd"、 "rwaters"和 "dgilmour"這三個(gè) 用戶的話,修改配置文件如下:

AllowUsers pfloyd rwaters dgilmour

你同樣可以使用DenyUsers來(lái)禁止某些用戶,比如這樣修改配置文件:

DenyUsers root ncarter ajmclean hdorough

這個(gè)設(shè)置并不是總是可用的,如果你的環(huán)境可以支持此配置,那肯定會(huì)提高安全性的。

禁用空密碼

確保任何SSH連接都需要一個(gè)非空的密碼字符串(這并不會(huì)影響SSH密鑰認(rèn)證登錄模式)。

修改配置文件如下:

PermitEmptyPasswords no

這是另一個(gè)簡(jiǎn)單卻重要的配置,建議對(duì)所有非特殊情況下使用。

如果你使用密碼認(rèn)證,實(shí)施密碼復(fù)雜性規(guī)則是一個(gè)明智的選擇。這些規(guī)則可以是由你的組織制定,或者嘗試以下“最佳實(shí)踐”:

  • 密碼長(zhǎng)度大于x

  • 密碼至少包含x個(gè)小寫(xiě)字符

  • 密碼至少包含x個(gè)大寫(xiě)字符

  • 密碼至少包含x個(gè)數(shù)字

  • 密碼至少包含x個(gè)特殊字符

  • 密碼不得包含用戶名(正向或者反向)

想要了解更多有關(guān)設(shè)置密碼復(fù)雜性的信息,可以參看《如何在RedHat中強(qiáng)制設(shè)置密碼復(fù)雜性》,雖然這篇文章針對(duì)RedHat的,但是它可以在任何使用最新版的PAM(可插拔身份驗(yàn)證模塊)的Linux系統(tǒng)上運(yùn)行。

禁用基于受信主機(jī)的無(wú)密碼登錄

rhosts文件是一種控制系統(tǒng)間信任的關(guān)系的方法,如果一個(gè)系統(tǒng)信任另一個(gè)系統(tǒng),則這個(gè)系統(tǒng)不需要密碼就允許來(lái)自受信認(rèn)系統(tǒng)的登錄。這是一個(gè)老舊的配置,應(yīng)當(dāng)在SSH配置中明確禁用。

確保SSH不允許受信主機(jī)連接,請(qǐng)修改配置文件如下:

IgnoreRhosts yes

rhosts文件已經(jīng)很少使用了,建議在多數(shù)情況下啟用該配置。

禁用基于已知主機(jī)的訪問(wèn)

known_hosts文件用于標(biāo)識(shí)服務(wù)器,當(dāng)用戶啟動(dòng)SSH連接時(shí),SSH會(huì)將服務(wù)器指紋與known_hosts文件中存儲(chǔ)的指紋進(jìn)行比較,來(lái)確保用戶連接到的是正確的系統(tǒng)。這個(gè)配置與rhosts配置相互配合,確保與遠(yuǎn)程主機(jī)連接時(shí)需要密碼(通過(guò)設(shè)置該選項(xiàng),來(lái)保證每一次連接都將遠(yuǎn)程主機(jī)視為“非信任”主機(jī))。

在身份驗(yàn)證時(shí)忽略已知主機(jī),請(qǐng)修改配置文件如下:

IgnoreUserKnownHosts yes

這個(gè)配置適用于絕大多數(shù)環(huán)境。

禁用基于主機(jī)的身份認(rèn)證

這個(gè)功能類似于基于受信主機(jī)的認(rèn)證,但是僅用于SSH-2,在我的經(jīng)驗(yàn)里這個(gè)功能很少使用,應(yīng)當(dāng)設(shè)置為no。

禁用基于基于主機(jī)的身份認(rèn)證,請(qǐng)修改配置文件如下:

HostBasedAuthentication no

這個(gè)選項(xiàng)默認(rèn)情況下設(shè)置為no,但是為了保險(xiǎn)起見(jiàn),我將其顯式添加到配置文件中。

禁用X11Forwarding

X11Forwarding允許通過(guò)SSH會(huì)話遠(yuǎn)程執(zhí)行程序,并在客戶端顯式圖形界面。如果沒(méi)有特殊需求,則應(yīng)將其禁用。

禁用X11Forwarding,請(qǐng)修改配置文件如下:

X11Forwarding no

X11Forwarding很少使用,我建議在大多數(shù)系統(tǒng)上禁用該功能。

使用非常規(guī)端口

默認(rèn)情況下,SSH監(jiān)聽(tīng)在TCP 22 端口,黑客和腳本小子經(jīng)常對(duì)這個(gè)端口進(jìn)行掃描,來(lái)判斷目標(biāo)是否運(yùn)行SSH,另外2222和2121也是常用的監(jiān)聽(tīng)端口,最好不要使用這些端口,請(qǐng)使用不常見(jiàn)的高端端口,例如示例中的9222端口。

設(shè)置SSH監(jiān)聽(tīng)在非常規(guī)端口,請(qǐng)修改配置文件如下;

Port 9222

我通常不修改位于防火墻后面的那些默認(rèn)端口,但是如果您的主機(jī)暴露在互聯(lián)網(wǎng)或者其他不受信任的網(wǎng)絡(luò)中,這樣的設(shè)置是必要的。

注意:不要忘記更改防火墻規(guī)則,允許流量訪問(wèn)你自定義的端口。

將服務(wù)綁定到指定IP

默認(rèn)情況下,SSH會(huì)監(jiān)聽(tīng)本機(jī)上配置的所有IP地址,但是你應(yīng)該指定SSH綁定在特定的IP,最好是在專用VLAN中的地址。

指定綁定地址,請(qǐng)修改配置文件如下

ListenAddress 10.0.0.5

這個(gè)設(shè)置通常與端口綁定相互配合。

保護(hù)SSH密鑰

保護(hù)主機(jī)私鑰

你應(yīng)該保護(hù)主機(jī)私鑰防止未授權(quán)的訪問(wèn),如果私鑰泄露,則主機(jī)可能會(huì)被假冒,因此所有的私鑰文件都應(yīng)設(shè)置為僅允許root用戶訪問(wèn)(對(duì)應(yīng)權(quán)限為0600)。

使用ls命令列出/etc/ssh/文件夾下所有的私鑰文件:

ls -l /etc/ssh/*key

使用chmod命令設(shè)置私鑰文件權(quán)限:

chmod 0600 /etc/ssh/*key

大多數(shù)情況下,私鑰文件存儲(chǔ)在/etc/ssh/文件夾下,但是也有可能存儲(chǔ)在其他目錄中,通過(guò)以下命令可以檢索配置文件中設(shè)置的存儲(chǔ)位置:

grep -i hostkey /etc/ssh/sshd_config

保護(hù)主機(jī)公鑰

雖然公鑰不如私鑰那么重要,但你還是應(yīng)該對(duì)其進(jìn)行保護(hù),因?yàn)槿绻€被篡改,則可能會(huì)使SSH服務(wù)無(wú)法正常工作或者拒絕服務(wù),因此需要配置權(quán)限僅允許root賬戶對(duì)其進(jìn)行修改(對(duì)應(yīng)權(quán)限為0644)。

使用ls命令列出/etc/ssh/目錄下所有的公鑰文件:

ls -l /etc/ssh/*pub

使用chmod命令修改公鑰文件權(quán)限:

chmod 0644 /etc/ssh/*pub

通常情況下公鑰和私鑰存放在同一目錄下,或者使用上一節(jié)的方法查找存放路徑。

檢查用戶特定的配置文件

用戶可能會(huì)在無(wú)意間將自己的home目錄或者其他某些文件設(shè)置成全局可寫(xiě)(比如777權(quán)限),在這種情況下,其他用戶將有權(quán)修改用戶特定的配置,并以其他用戶的身份登錄到服務(wù)器??梢酝ㄟ^(guò)使用StrictModes選項(xiàng)來(lái)檢查home目錄的配置。

StrictModes設(shè)置ssh在接收登錄之前是否檢查用戶home目錄和rhosts文件的權(quán)限和所有權(quán),StrictModes為yes必需保證存放公鑰的文件夾的擁有者與登陸用戶名是相同的。

確保啟用嚴(yán)格模式,請(qǐng)修改配置文件如下:

StrictModes yes

建議使用此方法,尤其是對(duì)于有大量用戶的系統(tǒng)。

防止特權(quán)升級(jí)

SSH通過(guò)創(chuàng)建一個(gè)無(wú)特權(quán)的子進(jìn)程來(lái)接收傳入的連接,實(shí)現(xiàn)權(quán)限分離。用戶身份驗(yàn)證后,SSH將使用該用戶的權(quán)限創(chuàng)建另一個(gè)進(jìn)程。

在我所了解的系統(tǒng)中,這個(gè)選項(xiàng)默認(rèn)都是開(kāi)啟的,但是為了保險(xiǎn)起見(jiàn),建議還是手動(dòng)修改配置文件,顯式指定該配置:

UsePrivilegeSeparation sandbox

使用sandbox可以增加其他限制。

使用密鑰進(jìn)行身份驗(yàn)證

該功能并不一定在所有系統(tǒng)上都可用,但是使用SSH密鑰身份驗(yàn)證有很多優(yōu)點(diǎn)。密鑰驗(yàn)證比人類可以輕松記住的任何密碼都要強(qiáng)大的多,同時(shí)還提供了無(wú)需密碼的身份驗(yàn)證,使用更加便利。

啟用密鑰身份驗(yàn)證,請(qǐng)修改配置文件如下:

PubkeyAuthentication yes

該選項(xiàng)在大多數(shù)系統(tǒng)上默認(rèn)為yes。

更多有關(guān)SSH密鑰身份驗(yàn)證的信息,請(qǐng)參考 How to Setup SSH Key Authentication。

禁用不使用的身份驗(yàn)證方法

Linux管理員知道優(yōu)秀的安全實(shí)踐是停止并刪除所有用不到的服務(wù),同樣,你也應(yīng)該禁用SSH中不使用的其他任何身份驗(yàn)證方法。

在這里,我將向你展示禁用所有身份驗(yàn)證的方法,但是請(qǐng)注意:不要全部禁用它們,請(qǐng)保留需要的。

禁用 GSSAPI 認(rèn)證

通過(guò)“通用安全服務(wù)應(yīng)用程序接口”(GSSAPI),可以使用高級(jí)配置和其他身份驗(yàn)證方法(除口令、密鑰認(rèn)證方式之外的),如果你不使用此功能,則請(qǐng)修改配置文件如下:

GSSAPIAuthentication no

禁用Kerberos認(rèn)證

同樣,如果不需要?jiǎng)t禁用:

KerberosAuthentication no

禁用口令認(rèn)證

如果配置了更高級(jí)的認(rèn)證方式,則可禁用口令認(rèn)證:

PasswordAuthentication no

禁用密鑰認(rèn)證

如果你使用了其他身份認(rèn)證方式,則可以禁用密鑰身份認(rèn)證。相比其他辦法,使用密鑰認(rèn)證是風(fēng)險(xiǎn)較小的辦法。如需禁用,修改配置文件如下:

PubkeyAuthentication no

使用符合FIPS 140-2標(biāo)準(zhǔn)的密碼

使用符合FIPS 140-2的規(guī)范,避免使用弱加密算法,請(qǐng)修改配置文件如下:

Ciphers aes128-ctr,aes192-ctr,aes256-ctr

這樣的設(shè)置限制了可用于SSH的加密方式,因此應(yīng)用前需確認(rèn)任何可能會(huì)用到的老舊客戶端、腳本或應(yīng)用程序的兼容性。

“FIPS 140-2” 為美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)委員會(huì)發(fā)布的針對(duì)密碼模塊的安全需求標(biāo)準(zhǔn),作為聯(lián)邦信息處理標(biāo)準(zhǔn)在政府機(jī)構(gòu)廣泛采用。

使用符合FIPS 140-2標(biāo)準(zhǔn)的MAC

與上一小節(jié)相同,使用符合FIPS 140-2的規(guī)范,避免使用弱加密哈希算法:

MACs hmac-sha2-256,hmac-sha2-512

配置主機(jī)防火墻過(guò)濾傳入的SSH連接

檢查傳入SSH連接也是保護(hù)SSH的好方法,可以僅允許特定的IP或子網(wǎng)連接到系統(tǒng),下面將演示通過(guò)iptables、firewalld和 Uncomplicated Firewall (UFW)配置防火墻的方法。

使用iptables過(guò)濾SSH連接

允許特定IP連接:

iptables -I INPUT -p tcp -s <指定的IP> --dport 22 -j ACCEPT

允許特定的子網(wǎng):

iptables -I INPUT -p tcp -s <指定子網(wǎng)> --dport 22 -j ACCEPT

更多有關(guān)iptables的使用方法,請(qǐng)參考The Basics of IPTables自己度娘

通過(guò)Firewalld過(guò)濾SSH連接

允許特定IP連接SSH:

firewall-cmd --permanent --zone=public --add-rich-rule=' rule family="ipv4"   source address="<指定IP>"   port protocol="tcp" port="22" accept'

允許特定子網(wǎng):

firewall-cmd --permanent --zone=public --add-rich-rule='   rule family="ipv4"   source address="<指定子網(wǎng)>"   port protocol="tcp" port="22" accept'

使用UFW過(guò)濾SSH連接

允許特定IP連接SSH:

sudo ufw allow from <指定IP> to any port 22

允許特定子網(wǎng):

sudo ufw allow from <指定子網(wǎng)> to any port 22

設(shè)置一個(gè)Banner

以我的經(jīng)驗(yàn)來(lái)看,這樣做弊大于利,雖然修改Banner(連接提示信息)可以阻止一些腳本小子,但是數(shù)經(jīng)驗(yàn)豐富的老鳥(niǎo)可能會(huì)將其視為一種挑釁,因此如果確實(shí)要增加Banner,請(qǐng)考慮消息的語(yǔ)氣。

啟用自定義Banner,請(qǐng)修改配置文件如下:

Banner /etc/issue

編輯/etc/issue文件,即可添加連接到SSH后的提示信息。

“怎么配置SSH服務(wù)器安全”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

ssh
AI