构筑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方式登录而又不允许其他计算机登录的机器上同时设置,从而组成一个局部的防火墙内控系统,以防止其他计算机非法间接登录,即先登录到已定义的计算机,再通过已定义的计算机最终登录到目标计算机。