■
單位的一臺(tái)服務(wù)器上安裝的是FreeBSD系統(tǒng),在其上開(kāi)啟了Apache服務(wù)程序,用來(lái)支持網(wǎng)站的運(yùn)行。但是不久前,該機(jī)遭到了黑客的攻擊,導(dǎo)致網(wǎng)站被惡意篡改??赡苁且?yàn)镽oot賬戶密碼設(shè)置得比較簡(jiǎn)單的原因,黑客破譯了密碼,進(jìn)而對(duì)服務(wù)器各項(xiàng)設(shè)置進(jìn)行了破壞,導(dǎo)致服務(wù)器運(yùn)行異常。經(jīng)過(guò)一番費(fèi)力的修復(fù)操作,才讓服務(wù)器恢復(fù)到正常狀態(tài)。
在一般人眼中,Linux/FreeBSD類型的服務(wù)器安全性都比較高,不容易遭到黑客的侵襲,但是實(shí)際情況卻不盡然。
不管什么系統(tǒng)或者服務(wù)器軟件,都可能存在這樣或者那樣的漏洞。如果服務(wù)器配置存在問(wèn)題,或者對(duì)服務(wù)器軟件沒(méi)有進(jìn)行及時(shí)的更新和升級(jí),就很容易遭到黑客的攻擊。
一般來(lái)說(shuō),當(dāng)某個(gè)漏洞被發(fā)現(xiàn)后,相關(guān)安全維護(hù)人員會(huì)第一時(shí)間在網(wǎng)上將其公布出來(lái),如果網(wǎng)管員存在麻痹思想或者疏于管理,沒(méi)有搶先升級(jí)軟件或者打上相應(yīng)的補(bǔ)丁,這就等于為黑客入侵打開(kāi)了大門,輕則導(dǎo)致數(shù)據(jù)丟失,重則導(dǎo)致服務(wù)器癱瘓。
除了及時(shí)修復(fù)系統(tǒng)漏洞之外,還需要使用分離技術(shù),將系統(tǒng)和各服務(wù)軟件分離開(kāi)來(lái),也就是說(shuō),將在系統(tǒng)上運(yùn)行的服務(wù)軟件和系統(tǒng)本身分離,讓他們之間斷開(kāi)聯(lián)系,這樣,當(dāng)黑客對(duì)服務(wù)程序(例如Apache)攻擊得手后,卻無(wú)法對(duì)系統(tǒng)進(jìn)行進(jìn)一步的滲透。
通過(guò)對(duì)本例入侵實(shí)例的分析,不難看出,因?yàn)榘惭b的Apache程序存在漏洞,而管理員卻沒(méi)有及時(shí)對(duì)其進(jìn)行修補(bǔ)更新,黑客通過(guò)該漏洞乘虛而入獲得了Web控制接口,通過(guò)嘗試本地溢出獲得了Root權(quán)限,因?yàn)閁nix/Linux系統(tǒng)的賬戶密碼信息存放在Shadow文件中,而該文件只有Root級(jí)別的賬戶才可以讀寫(xiě),通過(guò)破譯Shadow文件,黑客獲得了Root賬戶密碼,從而獲得了該機(jī)的控制權(quán)。
由此看出,黑客的入侵步驟是環(huán)環(huán)相扣的,如果將其中的一個(gè)環(huán)節(jié)切斷,黑客就無(wú)法進(jìn)一步入侵了。
基于這種考慮,如果將Apache服務(wù)程序和系統(tǒng)分離,黑客即使利用Apache漏洞入侵了服務(wù)器,也不會(huì)對(duì)系統(tǒng)本身構(gòu)成威脅。至多將Apache相關(guān)數(shù)據(jù)破壞掉而已,而對(duì)系統(tǒng)的危害就大大減小了。
在Linux*FreeBSD系統(tǒng)的樹(shù)形文件結(jié)構(gòu)中,可以看到其中存在一個(gè)名為“web_jail”的目錄,進(jìn)入該目錄,發(fā)現(xiàn)其內(nèi)部結(jié)構(gòu)類似于系統(tǒng)的樹(shù)形目錄。但是,在該目錄中并沒(méi)有存放系統(tǒng)中的相關(guān)文件,而是存放了和Apache相關(guān)的數(shù)據(jù),包括Apache啟動(dòng)程序、庫(kù)文件等。但是,我們可以將其視作存放Apache的小型系統(tǒng)。
因?yàn)镕reeBSD是免費(fèi)的Unix系統(tǒng),對(duì)安全性比較重視,在默認(rèn)安裝的程序中,就包含了名為Jail的程序,其作用就是將特定對(duì)象“監(jiān)禁”起來(lái),讓其只能在規(guī)定的范圍活動(dòng)?;谶@種想法,可以使用Jail將該小型系統(tǒng)進(jìn)行“監(jiān)禁”,讓Apache程序只能在該監(jiān)禁區(qū)域活動(dòng)。這樣,當(dāng)黑客通過(guò)Apache漏洞入侵成功后,卻無(wú)法越出監(jiān)禁區(qū)域進(jìn)行進(jìn)一步的入侵操作,這樣就有效的保護(hù)了Linux/Unix系統(tǒng)的安全。
接下來(lái)就介紹如何使用Jail來(lái)創(chuàng)建監(jiān)禁區(qū)域的,以Root身份登錄系統(tǒng),執(zhí)行以下指令:
執(zhí)行以上指令,在“web_jail”目錄中創(chuàng)建與正常系統(tǒng)相似的樹(shù)形結(jié)構(gòu)。之后執(zhí)行下列命令,復(fù)制HTTPF相關(guān)文件到Jail環(huán)境中,其中的Apachectl是一個(gè)Shell腳本文件,通過(guò)less命令查看其屬性,發(fā)現(xiàn)其運(yùn)行必須依賴Sh和Limits,所以必須將其全部復(fù)制到Jail環(huán)境中。
執(zhí) 行“l(fā)dd /usr/local/sbin/httpd”命令,來(lái)查看當(dāng)啟動(dòng)HTTPD服務(wù)時(shí),都使用到了哪些庫(kù)文件,之后將其復(fù)制到Jail監(jiān)控區(qū)域中。
復(fù)制完所需的文件后,執(zhí)行“chmod 777/web_jail/var/run/web_jail/var/log/web_jail/tmp/web_jail/dev/null”命令,將一些目錄的權(quán)限設(shè)置為允許所有用戶對(duì)其進(jìn)行讀寫(xiě)可執(zhí)行操作。接著執(zhí)行以下命令提取Root,www賬戶和組,將其放置到Jail環(huán)境中。
執(zhí) 行“pwd_mkdbd/web_jail/etc/web_jail/etc/mester.password”命令,創(chuàng)建賬戶數(shù)據(jù)庫(kù),之后執(zhí)行“l(fā)s/web_jail/etc”命 令,可 以看到生成的 group、master、password等文件。這樣,針對(duì)Apache程序的監(jiān)禁區(qū)域就創(chuàng)建完成了。當(dāng)然,在該區(qū)域中啟動(dòng)Apache和正常環(huán)境下啟動(dòng)Apache存在一些不同,例如執(zhí)行“apachectl start”命令,可以正常啟動(dòng)Apache,執(zhí)行“ps aux”命令,可以查看各進(jìn)程信息。
如果在Jail環(huán)境中啟動(dòng)Apache,可 以 執(zhí) 行“jail u root/web_jail www.xxx.com 192.168.92.90/usr/local/sbin/apachectl start”命令,可以在指定的IP上啟動(dòng)Apache,并運(yùn)行指定的網(wǎng)站。運(yùn)行“ps aux”命令,在進(jìn)程列表中看到于Root關(guān)聯(lián)的進(jìn)程ID為671,運(yùn)行“l(fā)sof p671”命令,可以查看Apache訪問(wèn)的文件信息。將其與上述信息對(duì)比可以發(fā)現(xiàn),在進(jìn)程信息中的“STAT”列中后者顯示一個(gè)“J”標(biāo)記,這說(shuō)明HTTPD運(yùn)行在Jail環(huán)境中。在文件訪問(wèn)信息中,發(fā)現(xiàn)后者訪問(wèn)的文件位于“web_jail”目錄中。如果訪問(wèn)網(wǎng)站正常的話,說(shuō)明Jail環(huán)境已經(jīng)成功運(yùn)作了。如果使用jail出錯(cuò),就說(shuō)明有些庫(kù)文件沒(méi)有完整復(fù)制,只需按照提示信息將其復(fù)制到Web_Jail目錄中就可以了。