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