到目前為止,您安裝了Linux的計(jì)算機(jī)如果還沒(méi)有任何安全措施的話,那我覺(jué)得您應(yīng)該了解一些有關(guān)Linux的安全知識(shí)了,并且在此基礎(chǔ)上運(yùn)用本文介紹的方法讓您的Linux平臺(tái)更安全。當(dāng)然,我只是根據(jù)自己的需求來(lái)讓加固Linux平臺(tái)的,所以不一定能夠完全滿足您的要求,但是我想也應(yīng)該會(huì)有一些幫助。
安全需求
在家里,我使用的是Red Hat Linux。一般來(lái)說(shuō),我很少關(guān)機(jī),也經(jīng)常使用這臺(tái)機(jī)器通過(guò)寬帶連在互聯(lián)網(wǎng)上。也就是說(shuō),我的機(jī)器一般情況下都處于在線狀態(tài)。對(duì)于這臺(tái)計(jì)算機(jī)的安全性,我有兩點(diǎn)考慮:
1. 我要把那些不想讓別人看見(jiàn)的數(shù)據(jù)和文檔隱藏起來(lái);
2.不讓不速之客用我的計(jì)算機(jī)資源。
在我的電腦上,有很多重要的數(shù)據(jù)。我想大部分人電腦上都有自己認(rèn)為很重要的文檔和數(shù)據(jù)。我不想讓除了我之外的任何人讀寫(xiě)這些文件。此外,我不想讓入侵者使用我的機(jī)器來(lái)攻擊另外一個(gè)目標(biāo)。如果我發(fā)現(xiàn)有人使用我的機(jī)器來(lái)攻擊別人,我會(huì)感到很氣憤。相信大家也會(huì)與我有同感。更令人忐忑不安的問(wèn)題是,有時(shí)雖然我們被“黑”,充當(dāng)了攻擊別人系統(tǒng)的角色,而自己卻蒙在鼓里。
做好安全計(jì)劃
在開(kāi)始安裝Linux系統(tǒng)時(shí),我就要在內(nèi)核中配置Iptables。Iptabels被認(rèn)為是Linux中實(shí)現(xiàn)包過(guò)濾功能的第四代應(yīng)用程序。第一代是Linux內(nèi)核1.1版本所使用的,Alan Cox從BSD Unix中移植過(guò)來(lái)的ipfw。在Linux 2.0版的內(nèi)核中,Jos Vos和其它一些程序員對(duì)ipfw進(jìn)行了擴(kuò)展,并且添加了ipfwadm用戶工具。在Linux2.2版內(nèi)核中,Russell和Michael Neuling做了一些非常重要的改進(jìn)。也就是在該內(nèi)核中,Russell添加了幫助用戶控制過(guò)濾規(guī)則的ipchains工具。現(xiàn)在,Russell又完成了其名為NetFilter的內(nèi)核框架。
NetFilter的目的是為用戶提供一個(gè)專門(mén)用于包過(guò)濾的底層結(jié)構(gòu)。并且,用戶和開(kāi)發(fā)人員還可以將其內(nèi)建在Linux內(nèi)核中。Iptables是一個(gè)內(nèi)建在NetFilter框架中的模塊。它可以讓用戶訪問(wèn)內(nèi)核過(guò)濾規(guī)劃和命令。如果您了解ipchains,就會(huì)發(fā)現(xiàn)事實(shí)上Iptables和ipchains是非常相似的。
通過(guò)對(duì)Iptables的配置,我可以阻止任何一個(gè)數(shù)據(jù)包進(jìn)入或者離開(kāi)我的機(jī)器。這非常重要,因?yàn)槲业臋C(jī)器24小時(shí)在線。有了這個(gè)新的保護(hù)功能,就使得我的機(jī)器時(shí)刻都能阻擊來(lái)自網(wǎng)絡(luò)上的各種攻擊。Iptables的使用和配置并不困難。在此限于篇幅,我就不再討論(讀者可以很容易就在網(wǎng)上找到相關(guān)資料)。
接下來(lái)要討論的是LIDS(Linux入侵檢測(cè)系統(tǒng))。LIDS以內(nèi)核補(bǔ)丁的方式存在。LIDS的目的是通過(guò)限制對(duì)計(jì)算機(jī)文件和進(jìn)程的訪問(wèn),來(lái)提高計(jì)算機(jī)的安全性。在有人試圖破壞這些限制時(shí),它就會(huì)向你報(bào)警。LIDS另外一個(gè)優(yōu)點(diǎn)就是它甚至可以限制root賬號(hào)的權(quán)限。這種限制root賬號(hào)權(quán)限的方法,在入侵者得到root權(quán)限時(shí),可以最大限度地降低損失。我使用LIDS來(lái)保護(hù)二進(jìn)制系統(tǒng)文件、/var/log目錄下的日志文件、/etc目錄下的配置文件。我將其標(biāo)志為Readonly的二進(jìn)制文件沒(méi)有任何用戶,包括root在內(nèi),可以對(duì)其進(jìn)行刪改操作。對(duì)于日志文件,我將其標(biāo)識(shí)為Append。這樣對(duì)于該目錄里的文件,可以進(jìn)行寫(xiě)操作,但是不能修改或者刪除現(xiàn)存的數(shù)據(jù)。
下一步我要做的就是要盡量減少在機(jī)器上運(yùn)行的服務(wù)。在機(jī)器上運(yùn)行的服務(wù)越少,別人入侵我的機(jī)器的可能性就越小。在缺省情況下,很多Linux發(fā)行版都會(huì)運(yùn)行很多常駐程序。就我個(gè)人看來(lái),這樣做并不是十分合理的。所以我關(guān)閉了我的Telnet、FTP以及所有以“R”字母開(kāi)頭的常駐程序。這樣,我就可以避免有時(shí)候來(lái)不及升級(jí)或者安裝一些補(bǔ)丁程序而給系統(tǒng)帶來(lái)威脅。對(duì)于那些我一定要使用的服務(wù),我就會(huì)盡可能及時(shí)地安裝安全補(bǔ)丁。并且,如果該服務(wù)發(fā)現(xiàn)了漏洞,而又沒(méi)有相關(guān)的補(bǔ)丁出現(xiàn)時(shí),我就會(huì)暫時(shí)關(guān)閉該服務(wù),直到有修正補(bǔ)丁出現(xiàn)為止。
一旦盡量減少了計(jì)算機(jī)上運(yùn)行的服務(wù)數(shù)量之后,我就使用“netstat l”命令來(lái)進(jìn)行監(jiān)聽(tīng)。這樣做的目的是為了確保我沒(méi)有遺漏任何我不需要的服務(wù)。事實(shí)上,不做任何監(jiān)聽(tīng)工作是我們經(jīng)常容易犯的錯(cuò)誤。如果監(jiān)聽(tīng)到任何我不需要的服務(wù),這時(shí)候就可以修正了。