应用原理
在Linux系统里,如果网络上的某台机器连接到了Internet上,那么可以配置网络上的其它系统通过这个连接访问Internet。使用这种方式,仅仅通过一个IP地址,几个不同的系统就可以同时连接到Internet上。这种方法称为IP伪装。
在Linux上的IP伪装是用ipchains防火墙工具实现的。实际上,配置防火墙也就是配置IP伪装。目前的IP伪装和ipchains防火墙一样,支持所有通用的网络服务,如Web浏览、telnet、ping和gopher。
在Linux系统上实现的IP伪装,具有Internet地址的那台机器同时也作为局域网上的防火墙和网关。本地的机器使用防火墙的Internet地址连接到Internet上。实现了IP伪装的防火墙有时也被称为MASQ gates。使用IP伪装,连接到Internet的系统(防火墙)可监听到来自本地网络上主机的Internet请求。接到请求后,它把发出请求的本地主机上的IP地址替换为防火墙Internet上的IP地址,然后将这些请求发送到Internet上,就如同自己的请求一样。来自Internet上的响应会送到防火墙系统上。防火墙所接收到的响应是通过自己的Internet地址来定位的。防火墙接着判断该响应对应于本地系统上的哪一个请求,然后它删除该响应的IP地址并通过本地网将其发送给本地主机。对本地机器来说,连接是透明的,就如同直接连接到Internet上一样。
防火墙的实现
1. 硬件配置
一台旧的AST 486DX/66的计算机,有8M内存和500M的硬盘,装有两块网卡,分别接到内部局域网和主干网,同时主干网通过一个路由器连到中国地震局和Internet。
2.安装Linux系统
先对Linux系统来一次的安装(我使用的版本是Redhat 6.0,所有实例都基于该版本)。因为所装的组件越少,系统的后门、安全漏洞就越少,所以只装一个最小的系统就够了。选择一个稳定的内核,本例使用Linux 2.2.5-15 kernel。
Linux内核包括对防火墙的支持,其中实现防火墙的工具称为ipchains。我们可以利用这个工具实现IP伪装和代理。在使用ipchains之前,需要将它编译成为内核的一部分。Redhat 6.0已经实现了这一部分。
3.配置两块网卡
由于AST 486DX/66机器中只有EISA、ISA扩展槽,因此专门到市场上购得两块3C509(10M)以太网卡。通过该网卡的配置软件(3c5x9cfg.exe)进行中断号和I/O地址的设置。注意不要与机器内已占用地址发生冲突。
4. 配置网络地址
我们将eth0的IP地址配置为210.72.114.141(连接主干网的有效IP地址),eth1的IP地址配置为10.3.15.2(连接内部网的IP地址),如图1所示。
[[The No.1 Picture.]]
图1 配置网络地址
为了能在启动时进行网络配置,我在/etc/sysconfig/network-scripts 目录中加入了ifcfg-eth0和ifcfg-eth1两个文件(具体内容略)。这两个文件在启动时由系统读取,配置网络和路由表。
5. 测试
用ifconfig 和route对系统进行测试,具体测试过程略。
安装IP MASQ gates
要实现IP伪装,需要用ipchains来指定转发规则。在开始之前,要打开内核的IP forwarding,使系统能够转发所有要发出的数据,再配好路由表,保证内部网和外部网之间畅通无阻了,在我们控制任意之下才能任意访问。
实现方法:在/etc/rc.d/目录下创建一个script,叫作ipchains.rules(执行#chmod u+x ipchains.rules确保为可执行文件,具体内容略)。然后加一行/etc/rc.d/ipchains.rules到/etc/rc.d/rc.local中,以确保每次机器重新启动后即运行所设定的各项防火墙规则。这样基于ipchains和IP masquerading的包过滤防火墙就建立起来了。
安全事项
上面的设置启动了一个基本的防火墙系统,禁止IP欺骗、广播包,但建立一个完整的防火墙系统,仍然要注意下面四点。
1.设置/etc/inetd.conf,禁止所有不需要的服务,像所有的R命令、finger、talk等。一般而言,仅保留ftp、telnet服务,便于内部维护用途。同时设置/etc/hosts.allow和/etc/hosts.deny,仅允许内部某些管理用户可以telnet/ftp到该防火墙。当然,更安全的办法是禁止所有的inetd服务。例如对于ftp、telnet,我们可以安装SSH,用SSH/scp代替telnet和ftp。
2.启用影子口令(shadow password),使远程用户获得根密码更为困难。
3.运行ntsysv检查,看是否启动了不需要的后台程序。
4.创建尽可能少的用户账号,不断升级有安全漏洞的软件包。
应用体会
我局利用Redhat 6.0版的Linux操作系统,在AST 486计算机上建立起来的包过滤防火墙系统,有效地利用了硬件资源,使得建立在Windows NT Server 4.0系统上的省局内部局域网系统平滑地接入到江西省地震信息网络平台上。在用户上网不受影响的前提下,有效地保护了内部网络系统的安全。同时,还发挥了卫星通信信道的作用,为地震信息的快速传递起了很好的作用。
目前,不少单位和家庭都有淘汰下来的486或586(奔腾一代)计算机。虽然这些计算机已经不适合日益复杂的桌面应用,但是通过安装Linux系统却能搭建一个功能不错的防火墙,足以负担2M以下的Internet接入。如果系统硬件资源允许的话,还可以通过配置透明代理服务来实现Internet缓冲功能,从而节省Internet带宽资源,提高上网效率。