您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“怎么配置SSH服務(wù)器安全”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
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ě)入配置文件。
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”,可能指的就是通信信道的傳輸速率吧。
限制用戶失敗認(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用戶登錄,則不能將操作關(guān)聯(lián)到用戶,強(qiáng)制用戶使用特定于用戶的賬戶登錄可以確保問(wèn)責(zé)機(jī)制。此外,這樣設(shè)置還可以進(jìn)一步保護(hù)root賬戶免受其他類型的攻擊。
阻止用戶使用root賬戶登錄,請(qǐng)修改配置如下:
PermitRootLogin no
強(qiáng)烈建議使用此配置。
這通常是現(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
這是條安全的捷徑。
無(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)行。
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ù)情況下啟用該配置。
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)境。
這個(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允許通過(guò)SSH會(huì)話遠(yuǎn)程執(zhí)行程序,并在客戶端顯式圖形界面。如果沒(méi)有特殊需求,則應(yīng)將其禁用。
禁用X11Forwarding,請(qǐng)修改配置文件如下:
X11Forwarding no
X11Forwarding很少使用,我建議在大多數(shù)系統(tǒng)上禁用該功能。
默認(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)你自定義的端口。
默認(rèn)情況下,SSH會(huì)監(jiān)聽(tīng)本機(jī)上配置的所有IP地址,但是你應(yīng)該指定SSH綁定在特定的IP,最好是在專用VLAN中的地址。
指定綁定地址,請(qǐng)修改配置文件如下
ListenAddress 10.0.0.5
這個(gè)設(shè)置通常與端口綁定相互配合。
你應(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
雖然公鑰不如私鑰那么重要,但你還是應(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)。
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
可以增加其他限制。
該功能并不一定在所有系統(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。
Linux管理員知道優(yōu)秀的安全實(shí)踐是停止并刪除所有用不到的服務(wù),同樣,你也應(yīng)該禁用SSH中不使用的其他任何身份驗(yàn)證方法。
在這里,我將向你展示禁用所有身份驗(yàn)證的方法,但是請(qǐng)注意:不要全部禁用它們,請(qǐng)保留需要的。
通過(guò)“通用安全服務(wù)應(yīng)用程序接口”(GSSAPI),可以使用高級(jí)配置和其他身份驗(yàn)證方法(除口令、密鑰認(rèn)證方式之外的),如果你不使用此功能,則請(qǐng)修改配置文件如下:
GSSAPIAuthentication no
同樣,如果不需要?jiǎng)t禁用:
KerberosAuthentication no
如果配置了更高級(jí)的認(rèn)證方式,則可禁用口令認(rèn)證:
PasswordAuthentication no
如果你使用了其他身份認(rèn)證方式,則可以禁用密鑰身份認(rèn)證。相比其他辦法,使用密鑰認(rèn)證是風(fēng)險(xiǎn)較小的辦法。如需禁用,修改配置文件如下:
PubkeyAuthentication no
使用符合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)廣泛采用。
與上一小節(jié)相同,使用符合FIPS 140-2的規(guī)范,避免使用弱加密哈希算法:
MACs hmac-sha2-256,hmac-sha2-512
檢查傳入SSH連接也是保護(hù)SSH的好方法,可以僅允許特定的IP或子網(wǎng)連接到系統(tǒng),下面將演示通過(guò)iptables、firewalld和 Uncomplicated Firewall (UFW)配置防火墻的方法。
允許特定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自己度娘
允許特定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'
允許特定IP連接SSH:
sudo ufw allow from <指定IP> to any port 22
允許特定子網(wǎng):
sudo ufw allow from <指定子網(wǎng)> to any port 22
以我的經(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í)用文章!
免責(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)容。