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