-經(jīng)常升級(jí)系統(tǒng)00%
-自動(dòng)安全更新02%
-添加一個(gè)受限用戶(hù)賬戶(hù)07%
-CentOS / Fedora11%
-Ubuntu13%
-Debian15%
-加固 SSH 訪(fǎng)問(wèn)21%
-創(chuàng)建驗(yàn)證密鑰對(duì)23%
-SSH 守護(hù)進(jìn)程選項(xiàng)43%
-使用 Fail2Ban 保護(hù) SSH 登錄54%
-刪除未使用的面向網(wǎng)絡(luò)的服務(wù)58%
-查明運(yùn)行的服務(wù)59%
-查明該移除哪個(gè)服務(wù)80%
-卸載監(jiān)聽(tīng)的服務(wù)87%
-配置防火墻90%
-接下來(lái)95%
現(xiàn)在讓我們強(qiáng)化你的服務(wù)器以防止未授權(quán)訪(fǎng)問(wèn)。
經(jīng)常升級(jí)系統(tǒng)
將軟件更新到最新版本通常是任何操作系統(tǒng)所必需的安全預(yù)防措施。軟件在更新時(shí)通常會(huì)在大到關(guān)鍵漏洞補(bǔ)丁、小到bug修復(fù)的范圍內(nèi)進(jìn)行,很多漏洞實(shí)際上在被公布時(shí)就已經(jīng)被修復(fù)了。
自動(dòng)安全更新
你可以調(diào)節(jié)服務(wù)器關(guān)于自動(dòng)更新的的參數(shù)。Fedora 的 Wiki頁(yè)面上有一篇文章對(duì)自動(dòng)更新進(jìn)行了深入解讀,文章里提到我們可以通過(guò)調(diào)整參數(shù)為安全更新會(huì)把自動(dòng)更新的風(fēng)險(xiǎn)降低至最少。
當(dāng)然,是否選擇自動(dòng)更新必須由你自己決定,因?yàn)檫@取決于你將要在你的服務(wù)器上進(jìn)行何種工作。自動(dòng)更新只能通過(guò)倉(cāng)庫(kù)里的包才能進(jìn)行,你自己編譯的程序可不能用。你會(huì)需要一個(gè)與生產(chǎn)環(huán)境一致的測(cè)試環(huán)境,在進(jìn)行最終部署之前,一定要在測(cè)試環(huán)境確認(rèn)無(wú)誤才行。
CentOS 使用 yum-cron進(jìn)行自動(dòng)更新。
Debian 和 Ubuntu 使用 無(wú)人值守更新。
Fedora 使用 dnf-automatic 。
添加一個(gè)受限用戶(hù)賬戶(hù)
我們假定你已經(jīng)使用root權(quán)限進(jìn)入了服務(wù)器中,你此時(shí)擁有服務(wù)器的至高權(quán)限,一個(gè)不小心就會(huì)把服務(wù)器搞癱瘓。所以,你應(yīng)該有一個(gè)受限制賬戶(hù)而不是一直使用root賬戶(hù)。這不會(huì)給你的操作帶來(lái)多大麻煩,因?yàn)槟憧梢酝ㄟ^(guò)sudo來(lái)進(jìn)行任何你想要的操作。
有的發(fā)行版可能并不把sudo設(shè)為默認(rèn)選項(xiàng),不過(guò)你還是可以在軟件包倉(cāng)庫(kù)中找到。如果你獲得的提示是sudo:command not found,請(qǐng)?jiān)诶^續(xù)之前安裝sudo。
記住,添加新用戶(hù)你要通過(guò) SSH 登錄服務(wù)器才行。
CentOS / Fedora
1、 創(chuàng)建用戶(hù),用你想要的名字替換example_user,并分配一個(gè)密碼:
2、 將用戶(hù)添加到具有 sudo 權(quán)限的wheel組:
Ubuntu
1、 創(chuàng)建用戶(hù),用你想要的名字替換example_user。你將被要求輸入用戶(hù)密碼:
2、 添加用戶(hù)到sudo組,這樣你就有管理員權(quán)限了:
Debian
1、 Debian 默認(rèn)的包中沒(méi)有sudo, 使用apt-get來(lái)安裝:
2、 創(chuàng)建用戶(hù),用你想要的名字替換example_user。你將被要求輸入用戶(hù)密碼:
3、 添加用戶(hù)到sudo組,這樣你就有管理員權(quán)限了:
創(chuàng)建完有限權(quán)限的用戶(hù)后,斷開(kāi)你的服務(wù)器連接:
重新用你的新用戶(hù)登錄。用你的用戶(hù)名代替example_user,用你的服務(wù)器 IP 地址代替例子中的 IP 地址:
現(xiàn)在你可以用你的新用戶(hù)帳戶(hù)管理你的服務(wù)器,而不是root。 幾乎所有超級(jí)用戶(hù)命令都可以用sudo(例如:sudo iptables -L -nv)來(lái)執(zhí)行,這些命令將被記錄到/var/log/auth.log中。
加固 SSH 訪(fǎng)問(wèn)
你可以使用密碼認(rèn)證登錄服務(wù)器。但是更安全的方法是通過(guò)加密的密鑰對(duì)。你將徹底放棄密碼,用私鑰可以防止暴力破解。我們將告訴你如何創(chuàng)建密鑰對(duì)。
創(chuàng)建驗(yàn)證密鑰對(duì)
1、創(chuàng)建密鑰對(duì)可以在你自己的電腦上完成,現(xiàn)在我們開(kāi)始創(chuàng)建一個(gè) 4096 位的 RSA 密鑰對(duì)。即使有了密鑰,你仍然可以通過(guò)密碼方式加密你的私鑰,這樣除非你把密碼存在密鑰管理器里,不然就必須通過(guò)輸入正確的密碼使用你的私鑰。用了密碼能有一個(gè)雙重保險(xiǎn),不想用的話(huà)你直接把密碼字段留空就可以了。
Linux / OS X
現(xiàn)在我們開(kāi)始第一步,請(qǐng)注意:如果你之前已經(jīng)創(chuàng)建過(guò) RSA 密鑰對(duì),則這個(gè)命令將會(huì)覆蓋它,帶來(lái)的結(jié)果很可能是你不能訪(fǎng)問(wèn)其它的操作系統(tǒng)。如果你已創(chuàng)建過(guò)密鑰對(duì),請(qǐng)?zhí)^(guò)此步驟。要檢查現(xiàn)有的密鑰,請(qǐng)運(yùn)行l(wèi)s?/ .ssh / id_rsa *。
在輸入密碼之前,按下回車(chē)使用/home/your_username/.ssh中的默認(rèn)名稱(chēng)id_rsa和id_rsa.pub。
Windows
這可以使用 PuTTY 完成,在我們指南中已有描述:使用 SSH 公鑰驗(yàn)證。
2、將公鑰上傳到您的服務(wù)器上。 將example_user替換為你用來(lái)管理服務(wù)器的用戶(hù)名稱(chēng),將203.0.113.10替換為你的服務(wù)器的 IP 地址。
Linux
在本機(jī)上:
OS X
在你的服務(wù)器上(用你的權(quán)限受限用戶(hù)登錄):
在本機(jī)上:
如果相對(duì)于scp你更喜歡ssh-copy-id的話(huà),那么它也可以在 Hemebrew 中找到。使用brew install ssh-copy-id安裝。
Windows
選擇 1:使用 WinSCP來(lái)完成。 在登錄窗口中,輸入你的服務(wù)器的 IP 地址作為主機(jī)名,以及非 root 的用戶(hù)名和密碼。單擊“登錄”連接。
一旦 WinSCP 連接后,你會(huì)看到兩個(gè)主要部分。 左邊顯示本機(jī)上的文件,右邊顯示服務(wù)區(qū)上的文件。 使用左側(cè)的文件瀏覽器,導(dǎo)航到你已保存公鑰的文件,選擇公鑰文件,然后點(diǎn)擊上面工具欄中的“上傳”。
系統(tǒng)會(huì)提示你輸入要將文件放在服務(wù)器上的路徑。 將文件上傳到/home/example_user/.ssh /authorized_keys,用你的用戶(hù)名替換example_user。
選擇 2:將公鑰直接從 PuTTY 鍵生成器復(fù)制到連接到你的服務(wù)器中(作為非 root 用戶(hù)):
上面命令將在文本編輯器中打開(kāi)一個(gè)名為authorized_keys的空文件。 將公鑰復(fù)制到文本文件中,確保復(fù)制為一行,與 PuTTY 所生成的完全一樣。 按下CTRL + X,然后按下Y,然后回車(chē)保存文件。
最后,你需要為公鑰目錄和密鑰文件本身設(shè)置權(quán)限:
這些命令通過(guò)阻止其他用戶(hù)訪(fǎng)問(wèn)公鑰目錄以及文件本身來(lái)提供額外的安全性。有關(guān)它如何工作的更多信息,請(qǐng)參閱我們的指南如何修改文件權(quán)限。
3、 現(xiàn)在退出并重新登錄你的服務(wù)器。如果你為私鑰指定了密碼,則需要輸入密碼。
SSH 守護(hù)進(jìn)程選項(xiàng)
1、不允許 root 用戶(hù)通過(guò) SSH 登錄。這要求所有的 SSH 連接都是通過(guò)非 root 用戶(hù)進(jìn)行。當(dāng)以受限用戶(hù)帳戶(hù)連接后,可以通過(guò)使用sudo或使用su -切換為 root shell 來(lái)使用管理員權(quán)限。
2、禁用 SSH 密碼認(rèn)證。這要求所有通過(guò) SSH 連接的用戶(hù)使用密鑰認(rèn)證。根據(jù) Linux 發(fā)行版的不同,它可能需要添加PasswordAuthentication這行,或者刪除前面的#來(lái)取消注釋。
如果你從許多不同的計(jì)算機(jī)連接到服務(wù)器,你可能想要繼續(xù)啟用密碼驗(yàn)證。這將允許你使用密碼進(jìn)行身份驗(yàn)證,而不是為每個(gè)設(shè)備生成和上傳密鑰對(duì)。
3、只監(jiān)聽(tīng)一個(gè)互聯(lián)網(wǎng)協(xié)議。在默認(rèn)情況下,SSH 守護(hù)進(jìn)程同時(shí)監(jiān)聽(tīng) IPv4 和 IPv6 上的傳入連接。除非你需要使用這兩種協(xié)議進(jìn)入你的服務(wù)器,否則就禁用你不需要的。這不會(huì)禁用系統(tǒng)范圍的協(xié)議,它只用于 SSH 守護(hù)進(jìn)程。
使用選項(xiàng):
AddressFamily inet只監(jiān)聽(tīng) IPv4。
AddressFamily inet6只監(jiān)聽(tīng) IPv6。
默認(rèn)情況下,AddressFamily選項(xiàng)通常不在sshd_config文件中。將它添加到文件的末尾:
4、 重新啟動(dòng) SSH 服務(wù)以加載新配置。
如果你使用的 Linux 發(fā)行版使用 systemd(CentOS 7、Debian 8、Fedora、Ubuntu 15.10+)
如果您的 init 系統(tǒng)是 SystemV 或 Upstart(CentOS 6、Debian 7、Ubuntu 14.04):
使用 Fail2Ban 保護(hù) SSH 登錄
Fail2Ban是一個(gè)應(yīng)用程序,會(huì)把頻繁出現(xiàn)登陸失敗的IP地址進(jìn)行自動(dòng)封禁。一般情況下,人們都不會(huì)連續(xù)三次以上輸錯(cuò)密碼(如果使用 SSH 密鑰,那不會(huì)超過(guò)一個(gè)),因此如果服務(wù)器充滿(mǎn)了登錄失敗的請(qǐng)求那就表示有惡意訪(fǎng)問(wèn)。
這個(gè)軟件的監(jiān)聽(tīng)范圍很廣,包括我們熟知的 SSH、HHTP或者SMTP。不過(guò)在默認(rèn)僅監(jiān)視 SSH,并且因?yàn)?SSH 守護(hù)程序通常配置為持續(xù)運(yùn)行并監(jiān)聽(tīng)來(lái)自任何遠(yuǎn)程 IP 地址的連接,所以對(duì)于任何服務(wù)器都是一種安全威懾。
刪除未使用的面向網(wǎng)絡(luò)的服務(wù)
大部分 Linux 發(fā)行版都可以使用網(wǎng)絡(luò)服務(wù),你可以選擇把不再需要的那部分刪除掉,這樣可以減少被攻擊的概率。
查明運(yùn)行的服務(wù)
要查看服務(wù)器中運(yùn)行的服務(wù):
如果默認(rèn)情況下netstat沒(méi)有包含在你的 Linux 發(fā)行版中,請(qǐng)安裝軟件包net-tools或使用ss -tulpn命令。
以下是netstat的輸出示例。 請(qǐng)注意,因?yàn)槟J(rèn)情況下不同發(fā)行版會(huì)運(yùn)行不同的服務(wù),你的輸出將有所不同:
netstat告訴我們服務(wù)正在運(yùn)行 RPC(rpc.statd和rpcbind)、SSH(sshd)、NTPdate(ntpd)和Exim(exim4)。
TCP
請(qǐng)參閱netstat輸出的Local Address那一列。進(jìn)程rpcbind正在偵聽(tīng)0.0.0.0:111和:::111,外部地址是0.0.0.0:*或者:::*。這意味著它從任何端口和任何網(wǎng)絡(luò)接口接受來(lái)自任何外部地址(IPv4 和 IPv6)上的其它 RPC 客戶(hù)端的傳入 TCP 連接。 我們看到類(lèi)似的 SSH,Exim 正在偵聽(tīng)來(lái)自回環(huán)接口的流量,如所示的127.0.0.1地址。
UDP
UDP 套接字是無(wú)狀態(tài)的,這意味著它們只有打開(kāi)或關(guān)閉,并且每個(gè)進(jìn)程的連接是獨(dú)立于前后發(fā)生的連接。這與 TCP 的連接狀態(tài)(例如LISTEN、ESTABLISHED和CLOSE_WAIT)形成對(duì)比。
我們的netstat輸出說(shuō)明 NTPdate :1)接受服務(wù)器的公網(wǎng) IP 地址的傳入連接;2)通過(guò)本地主機(jī)進(jìn)行通信;3)接受來(lái)自外部的連接。這些連接是通過(guò)端口 123 進(jìn)行的,同時(shí)支持 IPv4 和 IPv6。我們還看到了 RPC 打開(kāi)的更多的套接字。
查明該移除哪個(gè)服務(wù)
如果你在沒(méi)有啟用防火墻的情況下對(duì)服務(wù)器進(jìn)行基本的 TCP 和 UDP 的 nmap掃描,那么在打開(kāi)端口的結(jié)果中將出現(xiàn) SSH、RPC 和 NTPdate 。通過(guò)配置防火墻,你可以過(guò)濾掉這些端口,但 SSH 除外,因?yàn)樗仨氃试S你的傳入連接。但是,理想情況下,應(yīng)該禁用未使用的服務(wù)。
你可能主要通過(guò) SSH 連接管理你的服務(wù)器,所以讓這個(gè)服務(wù)需要保留。如上所述,RSA 密鑰和 Fail2Ban 可以幫助你保護(hù) SSH。
NTP 是服務(wù)器計(jì)時(shí)所必需的,但有個(gè)替代 NTPdate 的方法。如果你喜歡不開(kāi)放網(wǎng)絡(luò)端口的時(shí)間同步方法,并且你不需要納秒精度,那么你可能有興趣用 OpenNTPD來(lái)代替 NTPdate。
然而,Exim 和 RPC 是不必要的,除非你有特定的用途,否則應(yīng)該刪除它們。
本節(jié)針對(duì) Debian 8。默認(rèn)情況下,不同的 Linux 發(fā)行版具有不同的服務(wù)。如果你不確定某項(xiàng)服務(wù)的功能,請(qǐng)嘗試搜索互聯(lián)網(wǎng)以了解該功能是什么,然后再?lài)L試刪除或禁用它。
卸載監(jiān)聽(tīng)的服務(wù)
如何移除包取決于發(fā)行版的包管理器:
Arch
CentOS
Debian / Ubuntu
Fedora
再次運(yùn)行sudo netstat -tulpn,你看到監(jiān)聽(tīng)的服務(wù)就只會(huì)有 SSH(sshd)和 NTP(ntpdate,網(wǎng)絡(luò)時(shí)間協(xié)議)。
配置防火墻
使用防火墻阻止不需要的入站流量能為你的服務(wù)器提供一個(gè)高效的安全層。 通過(guò)指定入站流量,你可以阻止入侵和網(wǎng)絡(luò)測(cè)繪。 最佳做法是只允許你需要的流量,并拒絕一切其他流量。請(qǐng)參閱我們的一些關(guān)于最常見(jiàn)的防火墻程序的文檔:
iptables 是 netfilter 的控制器,它是 Linux 內(nèi)核的包過(guò)濾框架。 默認(rèn)情況下,iptables 包含在大多數(shù) Linux 發(fā)行版中。
firewallD 是可用于 CentOS/Fedora 系列發(fā)行版的 iptables 控制器。
UFW 為 Debian 和 Ubuntu 提供了一個(gè) iptables 前端。
接下來(lái)
這些是加固 Linux 服務(wù)器的最基本步驟,但是進(jìn)一步的安全層將取決于其預(yù)期用途。 其他技術(shù)可以包括應(yīng)用程序配置,使用入侵檢測(cè)或者安裝某個(gè)形式的訪(fǎng)問(wèn)控制。
現(xiàn)在你可以按你的需求開(kāi)始設(shè)置你的服務(wù)器了。
-
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213826
原文標(biāo)題:Linux 服務(wù)器安全簡(jiǎn)明指南
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
linux服務(wù)器和windows服務(wù)器
為你的 Linux 服務(wù)器加把鎖
Linux下視頻流媒體直播服務(wù)器搭建詳解
linux服務(wù)器性能測(cè)試步驟
加固基于Windows 2003平臺(tái)的WEB服務(wù)器
Linux服務(wù)器安全策略詳解
教你linux搭建web服務(wù)器
基于Linux系統(tǒng)的FTP服務(wù)器的實(shí)現(xiàn)
如何在linux服務(wù)器中打開(kāi)端口
如何使用Checkmk監(jiān)控Linux服務(wù)器?

服務(wù)器安全加固的步驟

PLC網(wǎng)關(guān)采集西門(mén)子S7-1200對(duì)接MQTT服務(wù)器的操作步驟詳解

評(píng)論