企業(yè)Linux開(kāi)源系統(tǒng)主機(jī)入侵檢測(cè)及防御實(shí)戰(zhàn)
企業(yè)在實(shí)際的入侵檢測(cè)及防御體系的構(gòu)建中,有的以網(wǎng)絡(luò)為主,進(jìn)行網(wǎng)絡(luò)威脅的發(fā)現(xiàn)和封堵;有的以主機(jī)防御為主,主要保證主機(jī)不遭受入侵。如果光針對(duì)其中一方面進(jìn)行構(gòu)建的話,則會(huì)存在偏差,建議綜合多方面的信息,進(jìn)行縱深的綜合性防御,這樣才能起到很好的效果。
在開(kāi)源系統(tǒng)中,例如Linux操作系統(tǒng),從應(yīng)用到內(nèi)核層面上提供了3種入侵檢測(cè)系統(tǒng)來(lái)對(duì)網(wǎng)絡(luò)和主機(jī)進(jìn)行防御,它們分別是網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)Snort、主機(jī)入侵檢測(cè)系統(tǒng)LIDS以及分布式入侵檢測(cè)系統(tǒng)SnortCenter。其中,Snort專(zhuān)注于在網(wǎng)絡(luò)層面進(jìn)行入侵檢測(cè);LIDS則側(cè)重于在主機(jī)層面進(jìn)行入侵檢測(cè)和防御;SnortCenter則是為了在分布式環(huán)境中提升入侵檢測(cè)的實(shí)時(shí)性和準(zhǔn)確性的一種分布式檢測(cè)機(jī)制。
在企業(yè)的實(shí)際應(yīng)用過(guò)程中,經(jīng)常會(huì)忽略LIDS的特殊作用。其實(shí),作為植根于內(nèi)核層次的主機(jī)入侵檢測(cè)機(jī)制,它是開(kāi)源系統(tǒng)作為主機(jī)尤其是服務(wù)器不可缺少的安全機(jī)制。本文將詳細(xì)介紹如何使用它進(jìn)行逐級(jí)安全防御。
簡(jiǎn)介
LIDS是Linux下的入侵檢測(cè)和防護(hù)系統(tǒng),是Linux內(nèi)核的補(bǔ)丁和安全管理工具,它增強(qiáng)了內(nèi)核的安全性,它在內(nèi)核中實(shí)現(xiàn)了參考監(jiān)聽(tīng)模式以及強(qiáng)制訪問(wèn)控制(Mandatory Access Control)模式。區(qū)別于本文在前面部分介紹的Snort入侵檢測(cè)系統(tǒng),它屬于網(wǎng)絡(luò)IDS范疇,而LIDs則屬于主機(jī)IDS范疇。
一般來(lái)說(shuō),LIDS主要功能包括如下幾方面:
重要系統(tǒng)資源保護(hù):保護(hù)硬盤(pán)上任何類(lèi)型的重要文件和目錄,如/bin、/sbin、/usr/bin、/usr/sbin、/etc/rc.d等目錄和其下的文件,以及系統(tǒng)中的敏感文件,如passwd和shadow文件,防止未被授權(quán)者(包括root用戶(hù))和未被授權(quán)的程序進(jìn)入。保護(hù)重要進(jìn)程不被終止,任何人包括root也不能殺死進(jìn)程,而且可以隱藏特定的進(jìn)程。防止非法程序的I/O操作,保護(hù)硬盤(pán),包括MBR保護(hù)等等。
入侵檢測(cè):LIDS可以檢測(cè)到系統(tǒng)上任何違反規(guī)則的進(jìn)程。
入侵響應(yīng):來(lái)自?xún)?nèi)核的安全警告,當(dāng)有人違反規(guī)則時(shí),LIDS會(huì)在控制臺(tái)顯示警告信息,將非法的活動(dòng)細(xì)節(jié)記錄到受LIDS保護(hù)的系統(tǒng)log文件中。LIDS還可以將log信息發(fā)到用戶(hù)的信箱中。并且,LIDS還可以馬上關(guān)閉與用戶(hù)的會(huì)話。#p#
安裝LIDS
第一步:打補(bǔ)丁并配置Linux內(nèi)核選項(xiàng)安裝
LIDS通常需要下載其最新版本的LIDS內(nèi)核補(bǔ)丁包,然后進(jìn)行安裝。下載的網(wǎng)站為:http://www.lids.org/,目前網(wǎng)站上的最新版本為:lids-2.2.3rc7-2.6.28.patch。首先將下載的LIDS內(nèi)核補(bǔ)丁包保存到/usr/src目錄下,然后以根用戶(hù)的權(quán)限進(jìn)入命令行模式進(jìn)行如下步驟地操作:
(1)假設(shè)系統(tǒng)內(nèi)核文件在/usr/src/Linux目錄下,通過(guò)下列命令安裝LIDS內(nèi)核補(bǔ)丁包:
# cd /usr/src/Linux
# patch p1 < /usr/src/ lids-2.2.3rc7-2.6.28.patch
(2)編輯內(nèi)核,選取相關(guān)選項(xiàng):
//進(jìn)入編輯內(nèi)核界面
# make menuconfig
進(jìn)入內(nèi)核編譯菜單界面后,建議把有關(guān)LIDS的所有項(xiàng)都選中。這樣做的目的能讓不太熟悉內(nèi)核編譯的用戶(hù)能省去很多不必要的麻煩,并且將所有的LIDS項(xiàng)都選擇上也不會(huì)占用多少的內(nèi)核空間,對(duì)加入LIDS后的內(nèi)核性能也不會(huì)產(chǎn)生多少的影響。下面對(duì)一些選項(xiàng)進(jìn)行解釋?zhuān)?/p>
Prompt for development and/or incomplete code/drivers
Sysctl support
Linux Intrusion Detection System support.
[ ] Hang up console when raising a security alert
當(dāng)收到一個(gè)安全警告掛起控制臺(tái)
[ ] Security alert when execing unprotected programs before sealing LIDS
當(dāng)執(zhí)行沒(méi)有受LIDS保護(hù)的程序時(shí)發(fā)送安全警告
[ ] Do not execute unprotected programs before sealing LIDS
在安裝LIDS前不執(zhí)行沒(méi)有受保護(hù)的程序
[ ] Try not to flood logs
盡量不要讓日志溢出
[ ] Allow switching LIDS protections
允許轉(zhuǎn)換LIDS保護(hù)
[ ] Allow remote users to switch LIDS protections
允許遠(yuǎn)程用戶(hù)來(lái)轉(zhuǎn)換LIDS保護(hù)
[ ] Allow any program to switch LIDS protections
允許任何程序來(lái)轉(zhuǎn)換LIDS保護(hù)
[ ] Allow reloading config. File
允許重新引導(dǎo)配置文件
[ ] Port Scanner Detector in kernel
內(nèi)核的端口掃描器
[ ] Send security alerts through network
通過(guò)網(wǎng)絡(luò)發(fā)送安全警告
[ ] Hide klids kernel thread
隱藏內(nèi)核進(jìn)程
[ ] Use generic mailer pseudo-script
使用通用的郵件發(fā)送腳本
(3)在選擇好要加入到內(nèi)核中的LIDS項(xiàng)后,就可以通過(guò)下列命令重新編譯內(nèi)核:
# make dep
# make clean
# make bzImage
# make modules
# make modules_install
完成上述內(nèi)核編譯工作后,一個(gè)加入了LIDS的內(nèi)核就重新編譯好了。要使加入了LIDS的新內(nèi)核工作,必需重新啟動(dòng)系統(tǒng)。
第二步:源代碼安裝LIDS工具包
同樣,首先從上述網(wǎng)站上下載LIDS工具包的安裝文件,目前網(wǎng)站上的最新版本為:lids-2.3.rc7-2.6.28.patch,然后按如下步驟安裝它:
(1)解壓縮源碼包
# tar -zxvf lids-2.3.rc7-2.6.28.patch
(2)切換目錄并生成makefile文件
# cd lids-2.3.rc7-2.6.28
# ./configure
(3)安裝
# make
# make install
這樣就會(huì)將Lidsadm和Lidsconf這兩個(gè)工具安裝到/sbin/目錄中,同時(shí)會(huì)創(chuàng)建一個(gè)/etc/lids的目錄,并會(huì)在此目錄下生成一個(gè)默認(rèn)的配置文件。#p#
配置和使用LIDS
基本配置
必須配置LIDS系統(tǒng),使其符合用戶(hù)的安全需要。用戶(hù)可以定義受保護(hù)的文件、受保護(hù)的進(jìn)程等等。
首先,更新缺省lids.conf的inode/dev值:
# /sbin/lidsadm –U
然后,獲得一個(gè)RipeMD-160加密口令:
# /sbin/lidsadm -P
缺省情況下,lidsadm將把缺省配置文件安裝到/etc/lids/。用戶(hù)必須根據(jù)自己的需要重新配置。當(dāng)內(nèi)核啟動(dòng)時(shí),配置信息就把相關(guān)信息讀入內(nèi)核來(lái)初始化LIDS系統(tǒng)。需要特別注意該目錄中的如下幾個(gè)相關(guān)的配置文件:
lids.conf:這個(gè)文件用來(lái)存儲(chǔ)LIDS ACLs信息。它包括定義對(duì)象訪問(wèn)類(lèi)型的ACLs(訪問(wèn)控制列表);
lids.cap:這個(gè)文件包括系統(tǒng)的所有性能,可以編輯這個(gè)文件來(lái)配置這些性能;
lids.net:這個(gè)文件用來(lái)配置發(fā)給管理員信箱的警告信息。用戶(hù)可以定義SMTP服務(wù)器、端口、消息頭等。僅在配置內(nèi)核時(shí),選擇了Send security alerts through network內(nèi)核配置選項(xiàng)才有該文件;
lids.pw:這個(gè)文件存儲(chǔ)由“lidsadm –P”命令生成的密碼文件。配置內(nèi)核時(shí)需要選擇Allow switching LIDS protections選項(xiàng),就必須有該文件。
Lidsadm工具
Lidsadm是LIDS的管理工具單元,可以用它來(lái)管理系統(tǒng)中的LIDS。Lidsadm的作用主要就是啟用或停用LIDS,以及封存LIDS到內(nèi)核中和查看LIDS狀態(tài)。
使用下列命令可以列出Lidsadm的所有可用選項(xiàng):
# lidsadm –h
其常用命令參數(shù)的具體含義如下:
-s:開(kāi)關(guān)某些保護(hù)選項(xiàng)時(shí)指示應(yīng)提交密碼;
-I:開(kāi)關(guān)某些保護(hù)選項(xiàng)時(shí)不提交密碼
LIDS_FLAG:為L(zhǎng)idsadm的標(biāo)志值
-v:顯示版本
-V:查看現(xiàn)在LIDS狀態(tài)
-h:列出所有選項(xiàng)
另外,Lidsadm還包括了許多常用的部分主要功能模塊,它們的列表和主要功能說(shuō)明如表1所示:
表1 Lidsadm主要功能模塊說(shuō)明
另外,Lidsadm還有如下可用的標(biāo)志值(Available flags):
LIDS:禁止或激活本地LIDS;
LIDS_CLOBAL:完全禁止或激活LIDS;
RELOAD_CONF:重新加載配置文件。
Lidsconf工具
Lidsconf主要用來(lái)為L(zhǎng)IDS配置訪問(wèn)控制列表(ACLs)和設(shè)置密碼。輸入以下命令能顯示Lidsconf所有的可用選項(xiàng):
# lidsconf –h
此命令執(zhí)行后會(huì)返回以下命令參數(shù):
-A:增加一條指定的選項(xiàng)到已有的ACL中
-D:刪除一條指定的選項(xiàng)
-E:刪除所有選項(xiàng)
-U:更新dev/inode序號(hào)
-L:列出所有選項(xiàng)
-P:產(chǎn)生用Ripemd-160加密的密碼
-V:顯示版本
-h:顯示幫助
-H:顯示更多的幫助
-s [--subject]:指定一個(gè)子對(duì)像,可以為任何程序,但必須是文件。
-o[object]:可以是文件、目錄或功能(capabilities)和socket名稱(chēng)。
-j:它有以下幾個(gè)參數(shù):
DENY:禁止訪問(wèn)
READONLY:只讀
APPEND:增加
WRITE:可寫(xiě)
GRANT:對(duì)子對(duì)像授與能力
ignore:對(duì)設(shè)置的對(duì)像忽略所有權(quán)限
disable:禁止一些擴(kuò)展特性
其它選項(xiàng):
-d:目標(biāo)的可執(zhí)行domain
-i:繼承級(jí)別
-t:指定從某一時(shí)段到某一時(shí)段可以進(jìn)行怎樣的操作
-e:擴(kuò)展列表#p#
主要使用方法
(1)配置LIDS保護(hù)的文件和目錄
首先,用戶(hù)需要根據(jù)具體的情況來(lái)確定要保護(hù)哪些文件。一般情況下,為了保證Linux系統(tǒng)安全,至少需要保護(hù)系統(tǒng)二進(jìn)制文件和系統(tǒng)配置文件,比如:/bin、/sbin/、/usr/、/etc/、/var/log/等。
其次,需要確定以什么方式來(lái)保護(hù)文件。LIDS提供了如下四種保護(hù)類(lèi)型:
1)拒絕任何人訪問(wèn):帶有DENY標(biāo)志的文件和目錄沒(méi)有人能夠看見(jiàn),也不能修改。那些非常敏感的文件應(yīng)該加上DENY標(biāo)志。其用法如下:
lidsconf -A -o file_to_protected -j DENY
例如,可以使用如下命令來(lái)拒絕用戶(hù)(包括root用戶(hù))對(duì)/etc/passwd文件的訪問(wèn):
# lidsconf -A -o /etc/ passwd -j DENY
在重啟或重新加載配置文件后,用戶(hù)將會(huì)看到相應(yīng)的操作遭到LIDS的拒絕,從而保護(hù)該文件:
# ls /etc/passwd
ls: /etc/passwd: No such file or directory
2)配制只讀文件:任何用戶(hù)不能改變帶有只讀標(biāo)記的文件。比如/etc/passwd、/bin/passwd文件一般屬于此類(lèi)。
其用法如下:
lidsconf -A -o file_to_protect -j READONLY
例如,我們可以保護(hù)整個(gè)/bin/目錄,使之只讀,如下命令所示:
# /sbin/lidsconf -A -o /bin/ -j READONLY
也可以保護(hù)/etc/passwd文件為只讀,如下命令:
# /sbin/lidsconf -A -o /etc/passwd -j READONLY
3)只能追加的文件:一般來(lái)說(shuō),系統(tǒng)日志文件應(yīng)定義成此類(lèi)。比如/var/log/message、/var/log/secure。這些文件只能以追加的模式打開(kāi),用戶(hù)不能修改前面的部分。
其用法如下:
lidsconf -A -o filename_to_protect -j APPEND
例如,我們可以保護(hù)系統(tǒng)日志文件,如下命令所示:
# /sbin/lidsconf -A -o /var/log/message -j APPEND
# /sbin/lidsconf -A -o /var/log/secure -j APPEND
我們也可以針對(duì)具體的網(wǎng)絡(luò)服務(wù)器日志進(jìn)行保護(hù):
//保護(hù)httpd日志文件
# /sbin/lidsconf -A -o /var/log/httpd -j APPEND
//保護(hù)vsftpd日志文件
# /sbin/lidsconf –A –o /var/log/vsftpd –