構(gòu)筑Unix系統(tǒng)內(nèi)防火墻體系的多種方案
近一段時(shí)間,某銀行地市級(jí)分行計(jì)算機(jī)中心的某些服務(wù)器,如儲(chǔ)蓄服務(wù)器、本地服務(wù)器多次出現(xiàn)了相同的奇怪現(xiàn)象:正常運(yùn)行的計(jì)算機(jī)被意外關(guān)掉。經(jīng)檢查機(jī)器的各方面資源都沒(méi)有明顯的故障,而且相同配置的服務(wù)器也只是個(gè)別機(jī)器被關(guān)掉,最關(guān)鍵的是被關(guān)的機(jī)器上除了關(guān)機(jī)信息外沒(méi)有其他報(bào)錯(cuò)信息。綜合種種跡象確定,是市分行下屬的某縣支行機(jī)房中有人用telnet登錄到市分行的服務(wù)器,進(jìn)入一個(gè)菜單用戶后,執(zhí)行了菜單中的關(guān)機(jī)選項(xiàng)而關(guān)掉了正在運(yùn)行的機(jī)器。通過(guò)這件事例,使人警覺(jué)到利用遠(yuǎn)程計(jì)算機(jī)進(jìn)行高科技作案的潛在危險(xiǎn)。 目前銀行系統(tǒng)的計(jì)算機(jī)網(wǎng)絡(luò)發(fā)展迅猛,由于全省乃至全國(guó)通存通兌的需要,地市級(jí)分行的計(jì)算機(jī)系統(tǒng)對(duì)上要與省分行的計(jì)算機(jī)網(wǎng)絡(luò)相連,對(duì)下連通了全市所轄的數(shù)十家縣市工行或辦事處的計(jì)算機(jī);又由于代理業(yè)務(wù)和電子商務(wù)的需要,銀行內(nèi)部網(wǎng)絡(luò)必須與越來(lái)越多的被代理企事業(yè)單位的計(jì)算機(jī)相連。這樣一個(gè)龐大的網(wǎng)絡(luò),要防范“黑客”的偷襲確實(shí)有一定的困難。為了使Unix服務(wù)器或前置機(jī)能安全正常地運(yùn)行,必須及時(shí)地根據(jù)業(yè)務(wù)的不同應(yīng)用和需求,有針對(duì)性地構(gòu)筑Unix系統(tǒng)內(nèi)的防火墻體系,對(duì)遠(yuǎn)程登錄和遠(yuǎn)程數(shù)據(jù)傳輸進(jìn)行過(guò)濾,從而實(shí)現(xiàn)Unix防火墻的作用, 同時(shí)能保障合法計(jì)算機(jī)遠(yuǎn)程業(yè)務(wù)操作的正常進(jìn)行。下面把多種防火墻體系的具體實(shí)現(xiàn)方案介紹給讀者。 方案一 禁止其他任何計(jì)算機(jī)向本機(jī)的遠(yuǎn)程登錄和遠(yuǎn)程數(shù)據(jù)傳輸。 設(shè)置方法 進(jìn)入超級(jí)用戶,用vi打開(kāi)/etc/inetd.conf文件,用'#'字封閉ftp、telnet、login、exec打頭的四行,然后執(zhí)行/etc/inetd命令,即可生效。 特點(diǎn) 網(wǎng)絡(luò)中其他計(jì)算機(jī)都無(wú)法遠(yuǎn)程登錄和傳輸數(shù)據(jù)到本機(jī),但本機(jī)卻可以登錄到其他計(jì)算機(jī),也可向其他計(jì)算機(jī)收發(fā)數(shù)據(jù)。對(duì)本機(jī)來(lái)說(shuō),遠(yuǎn)程登錄和數(shù)據(jù)傳輸變?yōu)閱蜗虿僮?雖然其設(shè)置非常簡(jiǎn)單,但它的應(yīng)用范圍極為有限。 方案二 禁止其他任何計(jì)算機(jī)向本機(jī)的遠(yuǎn)程登錄,允許其他計(jì)算機(jī)向本機(jī)部分用戶的遠(yuǎn)程傳輸數(shù)據(jù)。 設(shè)置方法 以允許用ftp到本機(jī)的普通用戶而禁止用ftp到超級(jí)用戶為例。 (1)進(jìn)入超級(jí)用戶,用vi打開(kāi)/etc/inetd.conf文件,用“#”字封閉telnet、login、 exec打頭的三行,并放開(kāi)ftp,然后執(zhí)行/etc/inetd命令。 (2)用vi修改/etc/passwd文件,把第一行 root:x:0:1:Superuser:/: 改為 root:x:0:1:Superuser:/:/bin/shcheck (3)用vi創(chuàng)建/etc/shcheck文件,內(nèi)容如下 /bin/sh /etc/profile /bin/sh /.profile /bin/sh -sh (4)修改/etc/profile文件,把其中的一行 -sh | -rsh | -ksh | -rksh) 改為 -sh | -rsh | -ksh | -rksh | /etc/profile) (5)執(zhí)行命令 chmod a-w /etc/shcheck chmod u+x /etc/shcheck 特點(diǎn) 仍禁止其他任何計(jì)算機(jī)向本機(jī)的telnet、login的登錄, 有條件地放開(kāi)用ftp進(jìn)行雙向傳輸數(shù)據(jù)。需要特別注意的是:必須按以上方法禁止其他機(jī)器用ftp進(jìn)入到本機(jī)的超級(jí)用戶,否則其他機(jī)器就可以用ftp接收本機(jī)的inetd.conf文件,經(jīng)修改后再用ftp傳回本機(jī),以達(dá)到放開(kāi)本機(jī)telnet、login等遠(yuǎn)程服務(wù)的目的。 方案三 以IP地址為對(duì)象,允許部分計(jì)算機(jī)向本機(jī)的遠(yuǎn)程登錄,允許其他計(jì)算機(jī)向本機(jī)普通用戶的遠(yuǎn)程傳輸數(shù)據(jù)。 設(shè)置方法 設(shè)置步驟如下: (1)進(jìn)入超級(jí)用戶,用vi打開(kāi)/etc/inetd.conf文件,放開(kāi)telnet、login、ftp的功能,然后執(zhí)行/etc/inetd命令。 (2)參照方案二中的(2)、(3)兩步的做法進(jìn)行設(shè)置。 (3)把/etc/profile文件修改成以下內(nèi)容 trap “”1 2 3 umask 022 fhq=‘netstat -n|grep ESTABLISHED|awk‘{print $5}'|cut -f1-4 -d. |head -1' fhq=“(“$fhq”)” fhqchk=‘grep $fhq /etc/.safe' if [“$fhq”=“$fhqchk”] then echo else echo “警告:你的地址為$fhq禁止非法登錄!” exit fi case “$0” in -sh | -rsh | -ksh | -rksh | /etc/profile) [“X$HUSHLOGIN” !=“XTRUE”] && [ -s /etc/motd ] && { trap : 1 2 3 echo “”# skip a line cat /etc/motd trap “”1 2 3 } if [“X$HUSHLOGIN”!=“XTRUE”] then [ -x /usr/bin/mail ] && { # if the program is installed [ -s “$MAIL”] && echo “you have mail” } if [“$LOGNAME”!=“root”-a -x /usr/bin/news ] # be sure it's there then news -n fi fi -su) : esac trap 1 2 3 (4)創(chuàng)建/etc/.safe文件,加入允許登錄的計(jì)算機(jī)的IP地址,一個(gè)地址占一行,格式如下所示 (195.1.2.3) (194.10.2.4) (5)執(zhí)行下列命令 chmod a-w /etc/shcheck /etc/.safe chmod u+x /etc/shcheck chmod 0100 /bin/su 特點(diǎn) 允許經(jīng)過(guò)定義的部分計(jì)算機(jī)用telnet、login登錄,允許其他計(jì)算機(jī)用ftp進(jìn)入本機(jī)的普通用戶進(jìn)行數(shù)據(jù)傳輸,未經(jīng)定義的計(jì)算機(jī)將被禁止登錄到本機(jī)。本方案的應(yīng)用范圍比較廣,可使經(jīng)過(guò)定義的多臺(tái)計(jì)算機(jī)形成一個(gè)內(nèi)部寬松而對(duì)外嚴(yán)防的安全系統(tǒng)。 方案四 以IP地址為對(duì)象,允許部分計(jì)算機(jī)向本機(jī)的部分用戶的遠(yuǎn)程登錄,允許其他計(jì)算機(jī)向本機(jī)普通用戶的遠(yuǎn)程傳輸數(shù)據(jù)。 設(shè)置方法 設(shè)置步驟如下: (1)參照方案三中的(1)、(2)兩步的做法進(jìn)行設(shè)置。 (2)對(duì)只允許部分計(jì)算機(jī)登錄本機(jī)的某一用戶的宿主目錄下的.profile文件進(jìn)行修改,加入以下內(nèi)容 fhq=‘netstat -n|grep ESTABLISHED|awk‘{print $5}'|cut -f1-4 -d. |head -1' fhq=“(“$fhq”)” fhqchk=‘grep $fhq /etc/.safe' if [“$fhq”=“$fhqchk”] then echo else echo “警告:你的地址為$fhq禁止非法登錄!” exit fi (3)對(duì)禁止其他任何計(jì)算機(jī)登錄本機(jī)的某一用戶的宿主目錄下的.profile文件進(jìn)行修改,加入以下內(nèi)容 ttychk=‘tty|grep ttyp' if [“$ttychk” !=“”] then echo “警告:禁止非法登錄!' exit fi (4)參照方案三中的(4)、(5)兩步的做法進(jìn)行設(shè)置。 特點(diǎn) 對(duì)計(jì)算機(jī)的IP地址和用戶同時(shí)進(jìn)行過(guò)濾處理,應(yīng)用范圍更為廣泛,可滿足各種業(yè)務(wù)運(yùn)行的需要,并具有較高的安全性。 方案五 以以太網(wǎng)地址為對(duì)象,允許部分計(jì)算機(jī)向本機(jī)的遠(yuǎn)程登錄,允許其他計(jì)算機(jī)向本機(jī)普通用戶的遠(yuǎn)程傳輸數(shù)據(jù)。 設(shè)置方法 設(shè)置步驟如下: (1)參照方案三中的(1)、(2)兩步的做法進(jìn)行設(shè)置。 (2)把/etc/profile文件修改成以下內(nèi)容 trap “”1 2 3 umask 022 fhq=‘netstat -n|grep ESTABLISHED|awk ‘{print $5}'|cut -f1-4 -d. |head -1' fhq=“(“$fhq”)” ether=‘a(chǎn)rp -a |grep $fhq |head -1|awk‘{print $4}'' ether=“(“$ether”)” fhqchk=‘grep $ether /etc/.safe' if [“$ether”=“$fhqchk”] then echo else echo “警告:你的以太網(wǎng)地址為$ether禁止非法登錄!” exit fi case “$0” in -sh | -rsh | -ksh | -rksh | /etc/profile) [“X$HUSHLOGIN”!=“XTRUE”] && [ -s /etc/motd ] && { trap : 1 2 3 echo“”# skip a line cat /etc/motd trap“”1 2 3 } if [“X$HUSHLOGIN” !=“XTRUE”] then [ -x /usr/bin/mail ] && { # if the program is installed [ -s “$MAIL” ] && echo “nyou have mail” } if [“$LOGNAME”!=“root” -a -x /usr/bin/news ] # be sure it's there then news -n fi fi -su) : esac trap 1 2 3 (3)創(chuàng)建/etc/.safe文件,加入允許登錄的計(jì)算機(jī)的以太網(wǎng)地址,一個(gè)地址占一行,格式如下所示 (0:90:27:d3:b3:21) (0:80:c8:e0:43:8e) (4)執(zhí)行下列命令 chmod a-w /etc/shcheck /etc/.safe chmod u+x /etc/shcheck chmod 0100 /bin/su 特點(diǎn) 以太網(wǎng)地址是計(jì)算機(jī)硬件地址,是每臺(tái)計(jì)算機(jī)唯一確定的,而IP地址在一臺(tái)計(jì)算機(jī)中可以有兩個(gè)或更多,所以以以太網(wǎng)地址為對(duì)象對(duì)遠(yuǎn)程登錄和遠(yuǎn)程傳輸數(shù)據(jù)進(jìn)行過(guò)濾比用IP地址為對(duì)象要安全得多。 以上五種方案都已在Unix3.2/4.2和SCO Open Server5.0.4中測(cè)試通過(guò),Unix系統(tǒng)管理者可以根據(jù)自己機(jī)器的實(shí)際情況從中任選一種建立Unix防火墻體系。以上方案中第三種和第四種應(yīng)用較廣,需要注意的是:如果選擇了第三、第四和第五種方案,那么最好在多臺(tái)相互間需要用telnet、login、ftp方式登錄而又不允許其他計(jì)算機(jī)登錄的機(jī)器上同時(shí)設(shè)置,從而組成一個(gè)局部的防火墻內(nèi)控系統(tǒng),以防止其他計(jì)算機(jī)非法間接登錄,即先登錄到已定義的計(jì)算機(jī),再通過(guò)已定義的計(jì)算機(jī)最終登錄到目標(biāo)計(jì)算機(jī)。
