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