作者: 刘宏光
邮件: iceblood@163.com
以前我已经写过一次《利用FreeBSD组建安全的网关》,主要偏向于如何建立一个FreeBSD防火墙,而防火墙在很多时候主要是要看如何使用,现在我们看看如何使用建立好了的FreeBSD防火墙保护企业,关于FreeBSD的防火墙建设过程请参考我的《利用FreeBSD组建安全的网关》,首先假设某企业有以下服务器和工作站:
1、WEB服务器两台、一台企业主页,一台做BBS,希望IP地址为xxx.xxx.xxx.001和xxx.xxx.xxx.002
2、DNS服务器一台,并且兼带企业E-mail服务,IP地址为xxx.xxx.xxx.003,把www.testdomain.com解析到xxx.xxx.xxx.001以及bbs.testdomain.com解析到xxx.xxx.xxx.002
3、企业内部局域网络,计算机N台,IP地址为10.125.0.0到10.125.255.255
对于这样的一个企业,我们首先要设计好网络构架,在设计的同时要考虑到各个服务器以及内部网络各放在什么位置,才能更有效的配合防火墙,使得防火墙对每个部分都能充分的保护。
我们首先来分析一下“黑客”入侵的手段和途径,作为一个入侵者,他的第一步自然是先要找到目标企业在网络中的位置,假设他已经知道该企业没有使用主机托管服务,而是和企业的网络放在了一起,那么他只须ping一下该企业的主页就能了解到该企业的IP地址为xxx.xxx.xxx.001和xxx.xxx.xxx.002,而另外还有一台DNS服务器,也可以使用nslookup这样的工具,一下就能查到目标企业的DNS服务器为地址xxx.xxx.xxx.003,并且他还会计划,假设已经进入以上三台服务器中的一台,他就会马上分析网络结构,并且进入内网,获取内部网络员工资料,以及很多重要数据。从上面看得出来,要保护这个网络,我们需要做很多东西,首先我们可以想办法对服务器之间以及服务器和内部网络之间进行隔离,但又能应用到他们应该有的功能,现在对该企业的网络做如下策划:
首先确定FreeBSD防火墙是作为企业连接到Internet服务器的唯一途径,然后对FreeBSD进行一定的设置,开启它的ipfirewall以及NATD功能,上图告诉了我们现在是把WWW、BBS、DNS等服务器都放在内部进行保护,所以在防火墙要开启NATD的反向代理功能,首先我们把xxx.xxx.xxx.001,xxx.xxx.xxx.002,xxx.xxx.xxx.003,绑定在FreeBSD外部网卡上,假设外部网卡号为fxp0,在rc.conf里我们需要设置如下:
ifconfig_fxp0="inet xxx.xxx.xxx.001 netmask 255.255.255.0"
ifconfig_fxp0_alias0="inet xxx.xxx.xxx.002 netmask 255.255.255.0"
ifconfig_fxp0_alias1="inet xxx.xxx.xxx.003 netmask 255.255.255.0"
绑好之后我们现在就开始分析了,首先我们来看看内部网络,内部要上Internet就必须要有一个网关,并且让他们正常的使用网络,假设FreeBSD内部网卡编号为fxp1,那么我们还要在rc.conf里加入:
ifconfig_fxp1="inet 10.125.0.1 netmask 255.255.0.0"
然后在防火墙规则里加上:
divert 8668 ip from any to any via fxp0
这条规则,允许NATD服务,仅允许NATD服务还不行,还要设置内部网络能连接到Internet,我们再加上:
allow ip from any to 10.125.0.0/16
allow ip from 10.125.0.0/16 to any
内部网络设置Gateway为10.125.0.1,这样企业的内部网络就能正常连接到Internet了。
然后我们来看看WWW服务器,这个服务器一般来说只要开放三个端口就够了,第一个端口自然是HTTP端口不用说了,第二个端口那就是ftp端口以及ftp数据端口,其中HTTP端口自然是让Internet上以及企业内部访问的端口,而FTP端口是用来更新主页或做别的事的,并且只须要企业内部人员访问就足够了,当然有必要的话还要开telnet或ssh端口,这是方便企业内部系统管理员远程管理的,这里我建议使用ssh,并且为了防止万一入侵者进来了,他可能要对其他机器进行攻击,我决定对WWW服务器进行单独分离,现在假设FreeBSD的内部网卡编号为fxp1,我们编辑rc.conf文件,加上:
ifconfig_fxp1_alias0 ="inet 10.80.0.1 netmask 255.255.255.0"
然后我们把WWW的服务器设置成10.80这个网段,网关为10.80.0.1,这样就把WWW服务器单独划在了一个特殊的区域里了,假设我们设置WWW的IP为10.80.0.80现在我们再设置防火墙规则:
allow tcp from any to xxx.xxx.xxx.001 80 in
allow tcp from xxx.xxx.xxx.001 80 to any out //允许任意地方能访问防火墙的80
allow tcp from 10.80.0.80 80 to any out
allow tcp from any to 10.80.0.80 80 in //允许任意地方访问WWW服务器的80端口
allow tcp from 10.125.0.0/16 to 10.80.0.80 21 in
allow tcp from 10.125.0.0/16 to 10.80.0.80 20 in
allow tcp from 10.80.0.80 21 to 10.125.0.0/16 out
allow tcp from 10.80.0.80 20 to 10.125.0.0/16 out //允许内部网络使用FTP服务器连接WWW服务器
设置完成防火墙规则还不行还需要设置NATD,我们设置NATD为:
redirect_port tcp 10.80.0.80:80 xxx.xxx.xxx.001:80
这样设置以后,WWW服务器就可以允许企业内部人员顺利的更新主页和浏览主页了,而Internet却只能浏览WWW服务器上的主页,就算万一WWW服务器利用HTTP服务器入侵了该机器,由于该服务器的各种连接都被放火墙阻断,而无法对企业内部网络进行入侵和破坏,达到充分保护WWW服务器以及内部网络的目的。
现在我们再来分析DNS服务器,由于BBS服务器和WWW服务器实质上都一样这里就不讨论了,DNS服务器自然要提供DNS服务器,也就是UDP53端口,由于同时还带MAIL功能,所以还要开放SMTP端口以及POP3端口,而POP3服务器同样只允许内部企业访问,所以我们给rc.conf加入:
ifconfig_fxp1_alias0="inet 10.80.2.1 netmask 255.255.255.0"
然后给DNS服务器设置IP为10.80.2.53,设置防火墙规则为:
allow udp from any to xxx.xxx.xxx.003 53 in
allow udp from xxx.xxx.xxx.003 53 to any out //允许任意地方能访问防火墙的53端口
allow tcp from any to xxx.xxx.xxx.003 25 in
allow tcp from xxx.xxx.xxx.003 25 to any out //允许任意地方能访问防火墙的smtp端口
allow udp from 10.80.2.53 53 to any out
allow udp from any to 10.80.2.53 53 in //允许任意地方访问DNS服务器的53端口
allow tcp from any to 10.80.2.53 25 in
allow tcp from 10.80.2.53 25 to any out //允许任意地方访问DNS的SMTP端口
allow tcp from 10.125.0.0/16 to 10.80.2.53 110 in
allow tcp from 10.80.2.53 110 to 10.125.0.0/16 out //允许企业内部访问DNS的POP3端口
NATD设置为:
redirect_port udp 10.80.2.53:53 xxx.xxx.xxx.003:53 //把10.80.2.53的53转到xxx.xxx.xxx.003的53上,使用的UDP。
redirect_port tcp 10.80.2.53:25 xxx.xxx.xxx.003:25 //把10.80.2.53的25转到xxx.xxx.xxx.003的25上,使用的TCP。
按照上面的规则设置好企业网络后,使得企业网络保护更加的严密,服务器和服务器之间以及服务器和企业内部网络之间进行了严格控制。当然这里没有考虑内部入侵,以及内部IP盗用行为,这也就是FreeBSD防火墙的局限性。不过可以添加一块网卡,把企业内部人员的网络单独用一个网卡来进行隔离,达到弥补的办法。
好了,以上为我使用FreeBSD防火墙保护企业网络的个人做法,希望能给一部分企业网管有所帮助。