一个Internet接入方案,用了三层防火墙,但是总是觉得有点怪异。
网络架构简介:
网络结构是这样的,该网络通过CISCO 2509上联128k DDN接入Internet,CISCO 2509上启用了包过滤;接下来是一个国际知名厂商的Firewall(抱歉我不能说出这个
Firewall的软件的具体版本),我把它做成了一个包过滤的防火墙,因为它的代理做得并不好;再接下来用了一个代理方式的防火墙,用的是MS Proxy 2.0(呵呵,这个可以说了,因为常用)。
另外这个网络中还有一台WEB+DNS服务器,放在ROUTER和FIREWALL之间;它的E-Mail服务器放在内部网络(因为这个网络中主要的邮件来往是在内部网络;同时在MS Proxy上启用了一个DNS服务,作为内部网络的DNS服务器;因为客户需要在内部网络划一个特别的网络,这个网络和主要的内部网络不能互通,而且能上Internet,没有办法,在MS Proxy上启用了第三块网卡。呵呵,这个网络是不是有点怪?
为了方便,给出网络拓扑图:
WEB+DNS服务器:
先说简单的,放在外面的DNS+WEB服务器,用什么架的就不在我们的关心范围了,说说这个服务器的功能和一些我们关心的设置,因为我们把它放在ROUTER和FIREWALL之间,这里面没有什么NAT和反向代理,所以这个服务器的IP肯定是用申请来的合法的外部IP;这个DNS服务器是我们申请的,就是在CCNIC注册了的合法的DNS服务器,负责在Internet中解释这个注册了的域。
CISCO 2509:
ROUTER上启用的包过滤主要是为了保护上面说的那台WEB+DNS服务器,因为WEB服务器我们很难保障它的安全(想想白宫的WEB服务器,呵呵),所以我把它放在了最外面,
可以算一台牺牲主机了。
包过滤防火墙:
接下来是一个包过滤的防火墙(堡垒主机),在这个防火墙中,除了包过滤的设置,有一个NAT的功能,并且有一个DNS转发功能。说到这个DNS转发器,就想起以前John说的那个从他的内部网络不能访问内部网络做了NAT的主机的事呢,用这样的DNS转发器,就可以实现这个功能了,先卖个关子,下面说!
为什么要设置NAT应该不用多说了吧!因为在后面的MS Proxy的外部网卡是个内部保留IP,这种IP是不能在Internet上出现的,所以我们要使用NAT把这个内部的保留IP转
换为外部的IP。
MS Proxy:
MS Proxy启用了三块网卡,172.16.0.0(内部),10.1.1.0(内部),192.168.1.0
(外部)三个网段。这种Proxy一般不常见,而且某个内部网段(172.16.0.0)有一个内部的网关(172.16.1.254)。不过在设置也没有什么太大的区别,在LAT中把内部的两个网段包含进去,而且用route命令加入一条静态路由:
route -p add 172.16.0.0 mask 255.255.0.0 172.16.1.254
加入-p的参数,是为了能够在系统重启后这条静态路由不会丢失,加入这条静态路由后,在MS Proxy上就可以和三个网段通讯了。
内部网络访问Internet:
内部网络的客户端先通过MS Proxy的Winsock Proxy或WEB Proxy,经过包过滤的Firewall通过ROUTER连接Internet。包过滤的Firewall的过滤法则可以配置为只能出,不能进!MS Proxy也启用了访问控制,这样从内部网络可以访问Internet上的各项资源,而从Internet上不能访问包过滤防火墙后面的(包括防火墙)的各项端口,甚至是PING,可以做到从内部可以PING外面(在MS Proxy上,因为MS Proxy不支持
ICMP :(),外面就不能PING内部网络(谁说PING是双向的!!!呵呵!),从Internet上用端口扫描器来扫描包过滤的防火墙和经过NAT映射出来的MS Proxy的虚拟IP,包过滤的防火墙上只开了DNS(53)一个端口(因为有个DNS转发器),而MS Proxy只有两个端口(一个是SMTP,一个是POP3,SMTP是必要的,POP3是为了像我这样经常出差的人设置的
),MS Proxy上的SMTP,POP3端口是反向代理做出来
的。
三个DNS服务器:
接下来说说这个DNS解释的问题,外面的DNS服务器负责解释这个域,Internet上就可以查询到这个域的各项记录了;
而内部的MS Proxy中的DNS服务器负责解释内部的DNS名字,像在内部网络的E-Mail服务器的DNS名字如果用外部的DNS服务器来解释是一个外部的合法IP,这个IP是通过NAT转换出来的,如果内部网络也访问这个IP,就会找不到(这个问题在John的那个问题的讨论中已经提出过了),所以我们要启用内部的DNS服务器,把这个E-Mail的服务器的DNS名字解释成一个内部的E-Mail服务器的真实IP。内部的DNS服务器也设置一个
转发器,如果内部DNS服务器不能解释的,都转发给包过滤中的DNS转发器。
Firewall上的DNS转发器是单向的,如果在外部的DNS服务器上查询不到的纪录不会通过Firewall中的DNS转发器转发;而内部网络的DNS服务器不能解释的纪录都会转发给外部的DNS服务器来解释。这样一来,内部的客户端使用内部的DNS服务器来解释域名,通过两层DNS转发,可以
解释所有的域名。而外部的Internet用户只能查询外部的DNS服务器的纪录,而不能得到内部的DNS服务器的纪录(因为包过滤防火墙中的DNS转发器是单向的)。这样就解决了John的那个问题。
Exchange behind MS Proxy & Firewall
这个网络架构中的E-Mail服务器也很怪异!首先,E-Mail服务器的真实IP是172.16.0.0网段的,首先经过一个MS Proxy的反向代理(纸马写了一份Exchange Behind MS Proxy的文档,所以我就不在这里详细说明这个反向代理的过程了,谢谢
纸马!:)),做了反向代理之后,SMTP和POP3端口就守候在MS Proxy的外部网卡了,IP地址从172.16.0.0转换到了192.168.1.0网段了;MS Proxy早就被包过滤的防火墙中的NAT转换成外部的合法的IP地址了。这样,IP又从192.168.1.0网段转换到了合法的外部地址了。
从内部网络来看,因为我们的内部的DNS服务器把E-Mail服务器解释成内部IP,所以内部网络的用户可以直接使用E-Mail资源;而外部的DNS服务器把E-Mail服务器解释成MS Proxy的外部网卡的IP经过NAT转换的合法的外部IP,那么外部的Internet用户就会认为这个E-Mail服务器是在外部网络的。呵呵,我不说谁也不知道它已经经过了两层转换了。
在包过滤中要开放从外部网络到内部网络的25和110端口,25是必须的,否则在内部网络的E-Mail服务器不能接收到Internet上别的E-Mail服务器发出的邮件。
总结:
之所以做成这样,很多原因是客户的需求导致的。
首先,客户要求要限制某些NT域用户访问Internet,为了账号的同一,启用了MS Proxy;
客户要求一个独立的内部网络,并且要求能够访问Internet,所以在MS Proxy上启用了第三块网卡;
因为客户的邮件交流主要是内部网络的,而且能够拥有邮箱的用户要和能上网的用户独立开来,所以E-Mail服务器必须放在内部网段,所以做了一个MS Proxy的反向代理,并且在Firewall上用NAT来转换。
纵观怎个网络的架构,安全性主要建立在Firewall的安全上,通过包过滤之后,连接被MS Proxy隔断,所以从外部无法直接进入内部网络,哪怕Firewall的过滤法则被攻破。
我们建立一个网络的防火墙,主要是保障内部网络的安全,在这个网络中,内部网络的E-Mail服务器的25,110端口直接暴露在外部,这确实是个不安全的因素,不过E-Mail服务器的操作系统(WINDOWS NT)的漏洞都被Firewall和MS Proxy屏蔽了,只要保证E-Mail服务的安全(就是Exchange的安全)就可以保证整个服务器的安全了,也保证了整个内部网络的安全。