使Linux服務(wù)器變得更安全的方法有哪些
使Linux服務(wù)器變得更安全的方法有哪些
當(dāng)我們都了解如何使windows系統(tǒng)更安全時(shí),我們有幾個(gè)知道如何使自己的linux服務(wù)器變得更安全呢?對(duì)于這種情況,學(xué)習(xí)啦小編不得不科普一下這方面的知識(shí):
牢記以下這七點(diǎn)會(huì)讓你的Linux服務(wù)器變得更安全
圖1:運(yùn)行中的服務(wù)。
安裝所需的服務(wù)
如果你打算運(yùn)行一臺(tái)服務(wù)器,可能會(huì)想“我有來(lái)自Linode的40GB固態(tài)硬盤(SSD)存儲(chǔ)系統(tǒng),于是我可以安裝想要安裝的任何服務(wù)。”沒(méi)錯(cuò),你的地盤你作主:可以在服務(wù)器上安裝任意軟件。不過(guò),別犯想當(dāng)然的毛病。連最固若金湯的服務(wù)器也會(huì)因有人鉆了在該服務(wù)器上運(yùn)行的任何未打補(bǔ)丁或易受攻擊的軟件組件的空子而被劫持。
所以,頭一條規(guī)則就是讓你的服務(wù)器盡量精簡(jiǎn)。只安裝你確實(shí)需要的那些程序包。要是有不需要的程序包,那就清除。程序包數(shù)量越少,代碼沒(méi)打上補(bǔ)丁的可能性就越小。在安裝任何軟件和依賴程序包(比如ownCloud)之前,你應(yīng)該讀一下ownCloud的說(shuō)明文檔,只安裝它需要的那些程序包。
運(yùn)行所需的服務(wù)
第二條規(guī)則就是只運(yùn)行需要的那些服務(wù)。許多發(fā)行版或程序包可能會(huì)開(kāi)啟某些服務(wù),在不同的端口上運(yùn)行。這可能會(huì)帶來(lái)安全風(fēng)險(xiǎn)。于是,打開(kāi)終端,運(yùn)行下列命令:netstat -npl
輸出結(jié)果會(huì)顯示哪些服務(wù)在哪些端口上運(yùn)行。如果你發(fā)現(xiàn)任何不應(yīng)該運(yùn)行的服務(wù),停止它。你還應(yīng)該密切關(guān)注已被啟用、系統(tǒng)啟動(dòng)時(shí)運(yùn)行的服務(wù)。只要在運(yùn)行systemd的系統(tǒng)上運(yùn)行下列命令,就可以來(lái)檢查這方面:systemctl list-unit-files --type=service | grep enabled
視系統(tǒng)而定,你會(huì)獲得如上圖1中所示的輸出結(jié)果。要是你發(fā)現(xiàn)任何不需要的服務(wù),可以使用強(qiáng)大的systemct1命令來(lái)禁用它:systemctl disable service_name
限制對(duì)服務(wù)器的訪問(wèn)
就好比你不會(huì)把自家鑰匙隨隨便便交給認(rèn)識(shí)的人,也不會(huì)將訪問(wèn)服務(wù)器的權(quán)限交隨隨便便授予認(rèn)識(shí)的人。一旦明確了這個(gè)規(guī)則,就可以限制對(duì)服務(wù)器的訪問(wèn)。要牢記這點(diǎn):這一切打消不了決意要破壞你服務(wù)器的壞人的念頭。不過(guò),其作用在于為你的服務(wù)器增添了多一層的安全,防范只是撿漏的不法分子。
千萬(wàn)不要以根用戶的身份登錄
以超級(jí)用戶的身份通過(guò)ssh進(jìn)入到服務(wù)器不是一個(gè)好做法。我們后面會(huì)禁止以根用戶身份通過(guò)ssh進(jìn)入到服務(wù)器,不過(guò)在這么做之前,不妨創(chuàng)建一個(gè)擁有sudo權(quán)限的用戶,那樣你就能通過(guò)ssh進(jìn)入到服務(wù)器,執(zhí)行管理員任務(wù)了。一旦你登錄進(jìn)入到服務(wù)器,總是可以將用戶切換成根用戶,如果需要的話。如果你已經(jīng)在系統(tǒng)上有了用戶,就跳過(guò)幾步;不然,跟著我走。
不同的發(fā)行版使用不同的方法來(lái)添加新用戶;Red Hat/CentOS使用useradd,Ubuntu/Debian使用user adduser。
在Fedora/CentOS上創(chuàng)建新用戶:useradd swapnil
然后,為該用戶創(chuàng)建密碼:passwd swapnil
它會(huì)要求你為它提供用戶的新密碼。現(xiàn)在,你需要為該用戶授予sudo權(quán)限。運(yùn)行下列命令:EDITOR=nano visudo
尋找下面這一行(見(jiàn)圖2):# %wheel ALL=(ALL) ALL
圖2:為用戶授予sudo權(quán)限。
去掉該行的注釋(#符號(hào)意味著該行被注釋;只要去掉這個(gè)符號(hào),即可去掉注釋),那樣它看起來(lái)就像這樣:%wheel ALL=(ALL) ALL
現(xiàn)在,保存并關(guān)閉文件。如果用戶不屬于wheel組,你只要運(yùn)行下面這個(gè)命令,就可以將它輕松添加到組:# usermod -aG wheel swapnil
在Ubuntu系統(tǒng)上,你可以添加新用戶,為此運(yùn)行下列命令:adduser swapnil
回答系統(tǒng)提出的一些問(wèn)題,包括為該用戶創(chuàng)建密碼。一旦創(chuàng)建完畢,為用戶授予sudo權(quán)限:gpasswd -a swapnil sudo
打開(kāi)另一個(gè)終端窗口,試著以剛創(chuàng)建的用戶的身份登錄進(jìn)入到服務(wù)器,試著以sudo權(quán)限執(zhí)行一些管理員任務(wù)。要是一切正常,進(jìn)入到下一步。
禁用根用戶登錄
我們現(xiàn)在要禁用根用戶登錄,這意味著沒(méi)人能夠以根用戶的身份通過(guò)ssh或登錄進(jìn)入到服務(wù)器。為此,打開(kāi)sshd配置文件:nano /etc/ssh/sshd_conf
下一步,尋找顯示下列內(nèi)容的這一注釋行:#PermitRootLogin no
然后保存并關(guān)閉該文件,重啟服務(wù):service ssh restart或者systemctl restart sshd
重要提醒:這時(shí)切莫退出服務(wù)器。你要測(cè)試能不能使用剛創(chuàng)建的用戶成功地通過(guò)ssh進(jìn)入到服務(wù)器。打開(kāi)終端的另一個(gè)實(shí)例,以之前創(chuàng)建的用戶通過(guò)ssh進(jìn)入到服務(wù)器。你不希望完全被鎖在服務(wù)器外面。要是一切都正常,你可以以根用戶身份安全地注銷退出服務(wù)器。
變更端口
我們對(duì)sshd配置文件要進(jìn)行的第二個(gè)變化就是更改默認(rèn)端口。這主要是增添一層隱匿性,讓你的服務(wù)器確保安全,而不是給服務(wù)器果真增添任何實(shí)際的安全機(jī)制。這就好比保安服務(wù)公司派一樣的車輛來(lái)運(yùn)送重要人物,那樣攻擊者就不知道該攻擊哪些車了。
打開(kāi)sshd_config文件(這回以sudo權(quán)限打開(kāi),因?yàn)槟阍僖膊荒芤愿脩羯矸莸卿涍M(jìn)入到服務(wù)器了):sudo nano /etc/ssh/sshd_conf
然后,找到這一注釋行:#Port 22
去掉該行注釋,選擇一個(gè)端口號(hào)。在選擇端口時(shí),務(wù)必要確保它沒(méi)有被你系統(tǒng)上的其他任何服務(wù)所使用,我為服務(wù)器選擇了端口1977:Port 1977
下一步,保存并關(guān)閉文件,重啟sshd服務(wù)。再一次,注銷退出服務(wù)器之前,檢查一下設(shè)置,為此可以打開(kāi)另一個(gè)終端窗口,然后使用該模式登錄進(jìn)去:ssh -p{port_number}@server_IP
示例:
ssh -p1977
swapnil@10.14.190.118
如果你能成功登錄進(jìn)去,就搞定了。
無(wú)密碼登錄
你可以通過(guò)無(wú)密碼登錄更容易通過(guò)ssh進(jìn)入到服務(wù)器,并且完全禁用密碼驗(yàn)證,增添另一層安全。務(wù)必要牢記一點(diǎn):你只能夠從創(chuàng)建ssh密鑰的那臺(tái)機(jī)器登錄進(jìn)入到你的服務(wù)器。
不妨使用下列命令,在本地系統(tǒng)上創(chuàng)建ssh密鑰(見(jiàn)圖3):ssh-keygen - t rsa
圖3:創(chuàng)建ssh密鑰。
它會(huì)提出一些問(wèn)題;你不用更改密鑰位置,保留其默認(rèn)值,為它提供一個(gè)難以猜中的通行碼。下一步,你需要將這些密鑰拷貝到服務(wù)器上,那樣兩臺(tái)機(jī)器就能使用密鑰與對(duì)方進(jìn)行聯(lián)系了。
cat ~/.ssh/id_rsa.pub | ssh -p 1977 swapnil@remote-server ";mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
現(xiàn)在,試著從另一個(gè)終端通過(guò)ssh進(jìn)入到服務(wù)器;要是一切正常,它不會(huì)要求你輸入密碼。
這一步主要是為了方便,而不是增添一些實(shí)實(shí)在在的安全。不過(guò)你也可以增添一點(diǎn)安全,只要禁用服務(wù)器的密碼驗(yàn)證。只需打開(kāi)sshd配置文件,尋找這注釋的一行:#PasswordAuthentication yes
去掉該行注釋,將它從yes改成no。保存并關(guān)閉文件。然后,重啟sshd服務(wù)。再一次,切莫從當(dāng)前窗口關(guān)閉服務(wù)器連接。打開(kāi)另一個(gè)窗口,登錄進(jìn)入到服務(wù)器(確保它沒(méi)有要求輸入密碼)。
這個(gè)設(shè)置的另一個(gè)方面在于,你現(xiàn)在只能從創(chuàng)建ssh密鑰的那一臺(tái)機(jī)器通過(guò)ssh進(jìn)入到服務(wù)器。如果你經(jīng)常從不同的機(jī)器登錄進(jìn)入到服務(wù)器,千萬(wàn)不要使用這一方法。
這些是試圖自行運(yùn)行服務(wù)器的新用戶需要考慮的一些基本方面。學(xué)習(xí)啦小編提醒下各位必須牢記一點(diǎn):黑客總是先行一步;他們不斷尋找進(jìn)而闖入你服務(wù)器的任何漏洞。因而,最佳實(shí)踐就是對(duì)你的服務(wù)器做一套始終最新的備份。學(xué)習(xí)啦小編建議你在對(duì)站點(diǎn)做任何變化前后都應(yīng)該進(jìn)行備份。那樣一來(lái),萬(wàn)一你的服務(wù)器中了招,總是能夠從上一套備份恢復(fù)過(guò)來(lái)。