讓你的Linux服務(wù)器更安全的四個(gè)方法
我運(yùn)行幾個(gè)Linux服務(wù)器;在家里的一個(gè)作為文件服務(wù)器,還有三個(gè)實(shí)時(shí)服務(wù)器分別用作站點(diǎn)、郵件、云儲(chǔ)存。雖然我不用擔(dān)心家里的服務(wù)器的安全問(wèn)題,因?yàn)樗缓屯饷娴氖澜鐚?duì)話,但是另外三個(gè)服務(wù)器始終需要維護(hù)。對(duì)于那些Linux新手并且他們想運(yùn)行自己的服務(wù)器,那么他們必須將一些觀念牢記在心,這就是本文所專注的方面。
1.安裝你需要的
如果你計(jì)劃運(yùn)行一個(gè)服務(wù)器,你也許會(huì)想“我在 Linode有40GB的固態(tài)硬盤存儲(chǔ)空間,所以我能夠安裝我想要的任何服務(wù)。”的確如此:你的服務(wù)器、軟件等都可以安裝在上面。但是也不要太想當(dāng)然了。即使是最“堅(jiān)硬”的服務(wù)器也能夠被劫持,由于在它上面使用未打補(bǔ)丁或者易受攻擊的組件。
所以第一個(gè)規(guī)則是保持你服務(wù)器的精簡(jiǎn),讓它吝嗇一點(diǎn)。只安裝那些你真正需要的軟件。如果存在不想要的軟件,就清除它們。軟件越少,未打補(bǔ)丁的代碼也會(huì)少些。在你安裝任何軟件和依賴包之前(比方說(shuō):私有云),你應(yīng)該閱讀私有云的文檔并只安裝那些你需要的包。
2.運(yùn)行你需要的
第二個(gè)規(guī)則是只運(yùn)行那些你需要的服務(wù)。許多發(fā)行版或者軟件包也許在不同的端口開(kāi)啟了特定的服務(wù)。那會(huì)造成一些安全風(fēng)險(xiǎn),請(qǐng)先打開(kāi)終端并運(yùn)行下面這條命令:
- netstat -npl
輸出結(jié)果將會(huì)告訴你在哪些端口正在運(yùn)行哪些服務(wù)。如果你發(fā)現(xiàn)任何你沒(méi)有打算運(yùn)行的服務(wù),停止這些服務(wù)。你也應(yīng)該注意一下那些隨系統(tǒng)啟動(dòng)就啟動(dòng)并運(yùn)行的服務(wù)。你能夠通過(guò)在系統(tǒng)上運(yùn)行systemd來(lái)檢查這些服務(wù),輸入以下命令:
- systemctl list-unit-files –type=service | grep enabled
根據(jù)你自己的系統(tǒng),你將會(huì)得到一個(gè)如圖1所示的輸出結(jié)果。如果你發(fā)先任何不想要的服務(wù),你可以運(yùn)行systemctl命令關(guān)閉它:
- systemctl disable service_name
3.服務(wù)器入口限制
就像你不會(huì)把你家門的鑰匙給你認(rèn)識(shí)的每一個(gè)人,你也不應(yīng)該讓你認(rèn)識(shí)的人隨便進(jìn)入你的服務(wù)器。一旦明確了這一規(guī)則,你就要限制服務(wù)器的進(jìn)入。記住一件事:做這些并不能阻止那些執(zhí)著于使你服務(wù)器癱瘓的人。我們做的只是增加服務(wù)器的安全級(jí)別以應(yīng)對(duì)攻擊者的偶然攻擊。
4.從不以Root權(quán)限登陸
以超級(jí)用戶遠(yuǎn)程登陸到你的服務(wù)器可不是什么好習(xí)慣。我們將會(huì)禁用以root用戶遠(yuǎn)程登陸服務(wù)器,但在做這之前,讓我們先創(chuàng)建一個(gè)擁有sudo權(quán)限的用戶以便你能夠遠(yuǎn)程登陸服務(wù)器并執(zhí)行管理員任務(wù)。一旦你用這個(gè)用戶身份登陸服務(wù)器,你總是能夠在你需要時(shí)隨時(shí)切換到root權(quán)限。如果你在系統(tǒng)上已經(jīng)有了一個(gè)用戶,請(qǐng)?zhí)^(guò)這些步驟;否則的話,還是跟著我做下去。
不同的發(fā)行版增加新用戶的方式有所不同;Red Hat/CentOS使用useradd命令,Ubuntu/Debian使用adduser命令。
在Fedora/CentOS上創(chuàng)建一個(gè)新用戶:
- useradd swapnil
接著為這個(gè)用戶創(chuàng)建一個(gè)密碼:
- passwd swapnil
命令會(huì)讓你給這個(gè)用戶提供一個(gè)新密碼?,F(xiàn)在你要做的是賦予該用戶sudo權(quán)限。運(yùn)行以下命令:
- EDITOR=nano visudo
并找到下面這一行(圖2):
- # %wheel ALL=(ALL) ALL
取消這一行注釋(#表示注釋;刪除#表示取消注釋)就像下面這個(gè)樣子:
- %wheel ALL=(ALL) ALL