堅(jiān)不可摧 Linux系統(tǒng)下御敵策略淺議
由于Linux操作系統(tǒng)是一個(gè)開放源代碼的免費(fèi)系統(tǒng),因此越來越受到用戶的歡迎。隨著Linux在我國的不斷普及,有關(guān)的政府部門更是將基于Linux開發(fā)具有自主版權(quán)的操作系統(tǒng)提高到保衛(wèi)國家信息安全的高度來看待,因此我們不難預(yù)測;Linux在我國將得到更快更大的發(fā)展。而對于眾多習(xí)慣了Unix和Windows NT的系統(tǒng)管理員來講,如何保證Linux操作系統(tǒng)的安全將面臨許多新的挑戰(zhàn)。
苦修內(nèi)功
第一步:安裝文件系統(tǒng)要分區(qū)
在Linux系統(tǒng)中,如果分別為不同的應(yīng)用安裝單獨(dú)的主分區(qū),再將關(guān)鍵的分區(qū)設(shè)置為只讀,將大大提高文件系統(tǒng)的安全性。
1.文件分區(qū)
Linux的文件系統(tǒng)可以分成幾個(gè)主要的分區(qū),一般情況下至少要建立/、/usr/local、/var和/home等幾個(gè)分區(qū)。其中/usr可以安裝成只讀并且可以被認(rèn)為是不可修改的,如果/usr中有任何文件發(fā)生了改變,那么系統(tǒng)將立即發(fā)出安全報(bào)警。/lib、/boot和/sbin的安裝和設(shè)置也一樣。在安裝時(shí)應(yīng)該盡量將它們設(shè)置為只讀,這樣 對它們的文件、目錄和屬性進(jìn)行的任何修改都會導(dǎo)致系統(tǒng)報(bào)警。
當(dāng)然將所有主要的分區(qū)都設(shè)置為只讀是不可能的,有的分區(qū)如/var,其自身的性質(zhì)就決定了不能將它設(shè)置為只讀,但應(yīng)該不允許它具有執(zhí)行權(quán)限。
2.擴(kuò)展Ext2
使用Ext2文件系統(tǒng)上的只添加和不可變這兩種文件屬性,可以進(jìn)一步提高文件系統(tǒng)的安全級別。一個(gè)標(biāo)記為不可變的文件不能被修改,甚至不能被根用戶修改。一個(gè)標(biāo)記為只添加的文件可以被修改,但只能在它的后面添加內(nèi)容,即使根用戶也只能如此。
如果你關(guān)鍵的文件系統(tǒng)安裝成只讀的,并且文件被標(biāo)記為不可變的,入侵者必須重新安裝系統(tǒng)才能刪除這些不可變的文件,但這會立刻產(chǎn)生報(bào)警,這樣就大大減少了被非法入侵的危險(xiǎn)。
3.保護(hù)Log文件
當(dāng)與Log文件和Log備份一起使用時(shí),不可變和只添加這兩種文件屬性特別有用。系統(tǒng)管理員應(yīng)該將活動(dòng)的Log文件屬性設(shè)置為只添加。當(dāng)Log文件被更新時(shí),新產(chǎn)生的Log備份文件屬性應(yīng)該設(shè)置成不可變的,而新的活動(dòng)的文件屬性又變成了只添加。這通常需要在Log更新腳本中添加一些控制命令。
第二步:系統(tǒng)一定要備份
在完成Linux系統(tǒng)的安裝以后應(yīng)該對整個(gè)系統(tǒng)進(jìn)行備份,以后可以根據(jù)這個(gè)備份來驗(yàn)證系統(tǒng)的完整性,這樣就可以發(fā)現(xiàn)系統(tǒng)文件是否被非法竄改過。如果發(fā)現(xiàn)系統(tǒng)文件已經(jīng)被破壞,也可以使用備份來恢復(fù)系統(tǒng)。
1.用CD-ROM備份
當(dāng)前最好的系統(tǒng)備份介質(zhì)就是CD-ROM光盤,如果對安全級別的要求特別高,那么可以將光盤設(shè)置為可啟動(dòng)的,并且將驗(yàn)證工作作為系統(tǒng)啟動(dòng)過程的一部分。這樣只要通過光盤啟動(dòng),就說明系統(tǒng)尚未被破壞過。
如果你創(chuàng)建了一個(gè)只讀的分區(qū),那么可以定期從光盤映像重新裝載它們。即使像/boot、/lib和/sbin這樣不能被安裝成只讀的分區(qū),你仍然可以根據(jù)光盤映像來檢查它們,甚至可以在啟動(dòng)時(shí)從另一個(gè)安全的映像重新下載它們。
2.其它方式的備份
雖然/etc中的許多文件經(jīng)常會變化,但/etc中的許多內(nèi)容仍然可以放到光盤上用于系統(tǒng)完整性驗(yàn)證。其它不經(jīng)常進(jìn)行修改的文件,可以備份到另一個(gè)系統(tǒng)(如磁帶)或壓縮到一個(gè)只讀的目錄中。這種辦法可以在使用光盤映像進(jìn)行驗(yàn)證的基礎(chǔ)上,再進(jìn)行額外的系統(tǒng)完整性檢查。
第三步:改進(jìn)內(nèi)部安全機(jī)制
通過改進(jìn)Linux操作系統(tǒng)的內(nèi)部功能,可以防止緩沖區(qū)溢出攻擊,這種破壞力極強(qiáng)卻又最難預(yù)防的攻擊方式,雖然這樣的改進(jìn)需要系統(tǒng)管理員具有相當(dāng)豐富的經(jīng)驗(yàn)和技巧,但對于安全級別要求高的Linux系統(tǒng)來講還是很有必要的。
1.Solaris Designer
Solaris Designer為2.0版內(nèi)核的安全Linux補(bǔ)丁提供了一個(gè)不可執(zhí)行的棧,以減少緩沖區(qū)溢出的威脅,從而大大提高了整個(gè)系統(tǒng)的安全性。
緩沖區(qū)溢出預(yù)防起來十分困難,系統(tǒng)管理員必須完全去掉緩沖區(qū)溢出存在的條件,才能防止這種方式的攻擊。正因?yàn)槿绱耍S多人甚至包括Linux Torvalds本人也認(rèn)為這個(gè)安全Linux補(bǔ)丁十分重要,因?yàn)樗乐沽怂惺褂镁彌_區(qū)溢出的攻擊。但是需要引起注意的是,這些補(bǔ)丁也會導(dǎo)致對執(zhí)行棧的某些程序和庫的依賴問題,這些問題也給系統(tǒng)管理員帶來的新的挑戰(zhàn)。
2.StackGuard
StackGuard是一個(gè)十分強(qiáng)大的安全補(bǔ)丁工具。你可以使用經(jīng)StackGuard修補(bǔ)過的gcc版本來重新編譯和鏈接關(guān)鍵的應(yīng)用。
StackGuard進(jìn)行編譯時(shí)增加了棧檢查以防止發(fā)生棧攻擊緩沖區(qū)溢出,雖然這會導(dǎo)致系統(tǒng)的性能略有下降,但對于安全級別要求高的特定應(yīng)用來講,StackGuard仍然是一個(gè)十分管用的工具。
3.增加新的訪問控制功能
Linux的2.3版內(nèi)核正試圖在文件系統(tǒng)中實(shí)現(xiàn)一個(gè)訪問控制列表,這要求在原來的三類(Owner、Group和Other)訪問控制機(jī)制的基礎(chǔ)上再增加更詳細(xì)的訪問控制。
在2.2和2.3 版的Linux內(nèi)核中還將開發(fā)新的訪問控制功能,它最終將會影響當(dāng)前有關(guān)ext2文件屬性的一些問題。與傳統(tǒng)的具有ext2文件系統(tǒng)相比,它提供了一個(gè)更加精確的安全控制功能。有了這個(gè)新的特性,應(yīng)用程序?qū)⒛軌蛟诓痪哂谐売脩魴?quán)限的情況下訪問某些系統(tǒng)資源,如初始套接等。
巧御外敵
方法一:將入侵消滅在“萌芽”
入侵者進(jìn)行攻擊之前最常做的就是端號掃瞄,如果能夠及時(shí)發(fā)現(xiàn)和阻止入侵者的這種行為,那么可以大大減少入侵事件的發(fā)生率。
Abacus Port Sentry是開放源代碼的工具包,它能夠監(jiān)視網(wǎng)絡(luò)接口,并且與防火墻交互操作來關(guān)閉端口掃瞄攻擊。
Abacus Port Sentry能夠檢測到慢掃瞄(Slow Scan),但它不能檢測到結(jié)構(gòu)化攻擊(Structured Attack),這兩種方式的最終目的都是要試圖掩蓋攻擊意圖。正確地使用這個(gè)軟件將能夠有效地防止對IMAP服務(wù)大量的并行掃瞄,并且阻止所有這樣的入侵者。Abacus Sentry與Linux 2.2內(nèi)核的IPChains工具一起使用時(shí)最有效,它 能夠自動(dòng)將所有的端口掃瞄行為定向到Port Sentry。
當(dāng)然更好的辦法就是使用專門的入侵檢測系統(tǒng),但這樣的產(chǎn)品一般價(jià)格較高,普通用戶承受起來有困難。
方法二:登錄服務(wù)器“單一化”
將系統(tǒng)的登錄服務(wù)器移到一個(gè)單獨(dú)的機(jī)器中會增加系統(tǒng)的安全級別,在大的Linux網(wǎng)絡(luò)中,最好使用一個(gè)單獨(dú)的登錄服務(wù)器用于Syslog服務(wù)。更安全的登錄服務(wù)器會大大削弱入侵者透過登錄系統(tǒng)竄改日志文件的能力。
1.安全Syslog
即使使用單獨(dú)的登錄服務(wù)器,Linux自身的Syslog工具也是相當(dāng)不安全的。因此,有人開發(fā)了所謂的安全log服務(wù)器,將密碼簽名集成到日志中,這會確保入侵者即使在竄改系統(tǒng)日志以后也無法做到不被發(fā)現(xiàn)。現(xiàn)在最常用于取代Syslog的安全log服務(wù)器稱為“安全Syslog”。用戶可以從Core SDI站點(diǎn)http://www.core-sdi.com/ssylog處下載這個(gè)工具。這個(gè)守護(hù)程序?qū)崿F(xiàn)一個(gè)稱為PEQ-1的密碼協(xié)議來實(shí)現(xiàn)對系統(tǒng)日志的遠(yuǎn)程審計(jì)。即使在入侵者獲得系統(tǒng)超級用戶權(quán)限的情況下也仍然可以進(jìn)行審計(jì),因?yàn)閰f(xié)議保證了以前以及入侵過程中的log信息沒有審計(jì)者的通知無法被修改。
2.第二代Syslog
另一個(gè)取代Syslog的工具是Syslogs-ng(下一代的Syslog)。它提供了密碼簽名來檢測對日志文件的竄改。密碼安全登錄服務(wù)器和遠(yuǎn)程審計(jì)功能可以使入侵者極難進(jìn)行日志竄改并且很容易被檢測到。
方法三:單一登錄系統(tǒng)更安全
維護(hù)分散的大網(wǎng)絡(luò)環(huán)境中的多個(gè)用戶賬號對于系統(tǒng)管理員來講是一件非常頭疼的事情?,F(xiàn)在有一些單一的登錄(Sign On)系統(tǒng)不僅可以減輕管理員的負(fù)擔(dān),而且同時(shí)還提高了安全級別。
1.NIS
網(wǎng)絡(luò)信息服務(wù)(NIS)是一個(gè)很好的單一登錄系統(tǒng),它是在Sun公司的Yellow Page服務(wù)的基礎(chǔ)上發(fā)展起來的 ,它的基本安全特性不夠健壯。NIS的更新版本NIS+,對原NIS的不足進(jìn)行了改進(jìn),現(xiàn)在已經(jīng)有了用于Linux的NIS+版本。
2.Kerberos
Kerberos也是一種非常有名的單一登錄系統(tǒng)。Kerberos V4存在一些安全漏洞,Ketberos V5對此進(jìn)行了改進(jìn)。
方法四:用陷阱和蜜罐誘敵深入
所謂陷阱就是激活時(shí)能夠觸發(fā)報(bào)警事件的軟件,而蜜罐(honeypot)程序是指設(shè)計(jì)用來引誘有入侵企圖者觸發(fā)專門報(bào)警的陷阱程序。
通過設(shè)置陷阱和蜜罐程序,一旦出現(xiàn)入侵事件,系統(tǒng)就可以很快發(fā)出報(bào)警。
在許多大的網(wǎng)絡(luò)中,一般都設(shè)計(jì)有專門的陷井程序。陷阱程序一般分為兩種:一種是只發(fā)現(xiàn)入侵者而不對其采取報(bào)復(fù)行動(dòng),另一種是同時(shí)采取報(bào)復(fù)行動(dòng)。
設(shè)置蜜罐的一種常用方法是故意聲稱Linux系統(tǒng)使用了具有許多脆弱性的IMAP服務(wù)器版本。當(dāng)入侵者對這些IMAP服務(wù)器進(jìn)行大容量端口掃瞄,就會落入陷阱并且激發(fā)系統(tǒng)報(bào)警。
另一個(gè)蜜罐陷阱的例子就是很有名的phf,它是一個(gè)非常脆弱的Webcgi-bin腳本。最初的phf是設(shè)計(jì)來查找電話號碼的,但它有一個(gè)嚴(yán)重的安全漏洞:允許入侵者使用它來獲得系統(tǒng)口令文件或執(zhí)行其它惡意操作。系統(tǒng)管理員可以設(shè)置一個(gè)假的phf腳本,但是它不是將系統(tǒng)的口令文件發(fā)送給入侵者,而是向入侵者返回一些假信息并且同時(shí)向系統(tǒng)管理員發(fā)出報(bào)警。
另外一類蜜罐陷阱程序可以通過在防火墻中將入侵者的IP地址設(shè)置為黑名單來立即拒絕入侵者繼續(xù)進(jìn)行訪問。拒絕不友好的訪問既可以是短期的,也可以是長期的。Linux內(nèi)核中的防火墻代碼非常適合于這樣做。