NAT——网络地址转换,是通过将专用网络地址(如企业内部网Intranet)转换为公用地址(如互联网Internet),从而对外隐藏了内部管理的 IP 地址。这样,通过在内部使用非注册的 IP 地址,并将它们转换为一小部分外部注册的 IP 地址,从而减少了IP 地址注册的费用以及节省了目前越来越缺乏的地址空间(即IPV4)。同时,这也隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
NAT功能通常被集成到路由器、防火墙、单独的NAT设备中,当然,现在比较流行的操作系统或其他软件(主要是代理软件,如WINROUTE),大多也有着NAT的功能。NAT设备(或软件)维护一个状态表,用来把内部网络的私有IP地址映射到外部网络的合法IP地址上去。每个包在NAT设备(或软件)中都被翻译成正确的IP地址发往下一级。与普通路由器不同的是,NAT设备实际上对包头进行修改,将内部网络的源地址变为NAT设备自己的外部网络地址,而普通路由器仅在将数据包转发到目的地前读取源地址和目的地址。 NAT分为三种类型:静态NAT(staticNAT)、NAT池(pooledNAT)和端口NAT(PAT)。其中静态NAT将内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址,而NAT池则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络,端口NAT则是把内部地址映射到外部网络的一个IP地址的不同端口上。 废话说了不少,让我们转入正题,看一下如何利用NAT保护内部网络。
使用网络地址转换NAT,使得外部网络对内部网络的不可视,从而降低了外部网络对内部网络攻击的风险性。 在我们将内部网络的服务使用端口映射到NAT设备(或是软件)上时,NAT设备看起来就像一样对外提供服务器一台服务器一样(如图一)。这样对于攻击者来讲,具有一定的难度,首先他要攻破NAT设备,再根据NAT设备连接到内部网络进行破坏。 由图一我们可以看出,内部网络中的A、B和C提供相应的MAIL、FTP和HTTP服务。我们利用NAT将所提供服务机器的对应的服务端口25、110、20、21和80映射到NAT服务器上(IP:88.88.88.88,域名:5imax.net上,其中端口及服务对应如下: 说到20,我来加一个小插曲。我们都知道FTP对应的端口应该是21,为什么又冒出来一个20呢?其实,我们们进行FTP文件传输中,客户端首先连接到FTP服务器的21端口,进行用户的认证,认证成功后,当我们要传输文件时,服务器会开一个端口为20来进行传输数据文件,也就是说,端口20才是真正传输所用到的端口,端口21只用于FTP的登陆认证。我们平常下载文件时,会遇到下载到99%时,文件不完成,不能成功的下载。其实是因为文件下载完毕后,还要在21端口再行进行用户认证,而我们下载文件的时间如果过长,客户机与服务器的21端口的连接会被服务器认为是超时连接而中断掉,就是这个原因。解决方法就是设置21端口的响应时间。 话题扯远了(别拿柿子、鸡蛋……扔我啊),我们继续我们的NAT吧。由图一为例,当外部访问者访问http://www.5imax.net时,NAT会自动把请求提交到内部的192.168.0.102的80端口上,反之也一样,我们所收到的信息也是内部的192.168.0.102通过NAT来传输给外部访问者的。同样FTP及MAIL的服务也是如此。 其中的NAT既可以用操作系统和代理软件,又可以用路由器及NAT设备。下面我们用软件的方法来具体实现具体的NAT设置。 使用WINDOWS 2000 SERVER进行NAT的设置 WINDOWS 20000 SERVER FAMILY强大的网络功能,说起来真是VERY GOOD。她集成很多网络功能,比如说DHCP、DNS、SNMP、路由……,进行NAT的设置,我们只需要一个WINDOWS 2000 SERVER就足够了,不必借助于其他的软件。 说干就干,我们以中文版的WINDOWS 2000 SERVER为例,在NAT服务器上加两块网卡,一块是与内部网络相连(如IP:192.168.0.35),另一块则是与外部网络相连(如IP:88.88.88.88),在配置之前,要保证NAT服务器与内部私有网络及外部公用网络的数据传输没有故障。具体配置如下: 打开“开始——>程序——>管理工具——>路由和远程访问”,出现一个对话框,左侧有一个“服务器状态”,一个“BDWSER(本地)”(不一定是BDWSER,其实就应该是你的机器名),点“BDWSER(本地)”,然后点“操作——>配置并启用路由和远程访问”,会弹出一个的对话框,下一步,会出现如图二的对话框,选择“Internet连接服务器”,下一步, 如图三,选择“设置有网络地址转换(NAT)路由协议的路由器”,下一步 如图四,选择“使用选择的Internet连接——>本地连接2”,这里要注意一点,“本地连接2”即为服务器的外部连接,如本例中域名为5imax.net地址为88.88.88.88;而“本地连接”而是服务器与内部网络的连接。然后“下一步——>完成”,此时“路由和远程访问”会自动启动,我们稍侯等待“路由和远程访问”的启动。 通过以上的配置,我们就可以利用NAT将内部地址转发到外部地址,也就相当于本机(WINDOWS 2000 SERVER)可以通过NAT代理内部的机器共享上网了。如果NAT服务器使用了DHCP,那么客户机只要自动获取IP即可;如果没有设置,客户机要指定IP:192.168.0.*,子网掩码:255.255.255.0,网关:192.168.0.35,DNS:202.97.224.68(使用本地ISP提供DNS服务器地址即可)。接下来,我们应该来配置外部端口到内部端口的映射(如图一中的88.88.88.88:80——>192.168.0.102:80),使得外部访问者访问http://www.5imax.net相应的HTTP服务时,NAT主机会将服务的请求自动转换到内部网络所提供相应服务的主机上,反之,内部主机服务的反馈信息经由NAT主机转换发送到外部访问者。 在“路由和远程访问”对话框的左侧,打开“BDWSER(本地)——>IP路由选择——>网络地址转换(NAT)”,这时在“路由和远程访问”对话框的右侧窗口应该有二个接口,外部网络和内部网络(如图五)。 在详细信息窗格中,右键单击要配置的接口,然后单击“属性”。 在“特殊端口”选项卡上,在“协议”中,单击“TCP”或“UDP”(根据不同的服务选择不同的协议,如HTTP服务为TCP,TFTP服务为UDP,但此例中并未涉及到UDP协议),然后单击“添加”。 在“传入端口”中,键入传入公用通信的端口号(如图六中的“传入端口80)。在“传出端口”中,键入专用网络资源的端口号(如图六中的“传出端口80”)。在“专用地址”中,键入专用网络资源的专用地址(如图六中的“专用地址192.168.0.102”,即图一所示主机C:192.168.0.102)。单击“确定”,添加完毕。同样,FTP和MAIL的服务添加的端口为20,21,25和110。 以上的例子是仅使用单个公用IP进行NAT的转换,如果是使用多个公用IP,那么我们在配置映射端口之前,要进行NAT地址池的设置。在详细信息窗格中,右键单击要配置的接口(即外部网络接口,本地连接2),然后单击“属性”。在“地址池”选项卡上,单击“添加”,并执行下列操作之一: 如果正在使用以 IP 地址和子网掩码表示的 IP 地址范围,则在“起始地址”中键入起始 IP 地址,然后在“掩码”中键入子网掩码。
如果正在使用不能以 IP 地址和子网掩码表示的 IP 地址范围,在“起始地址”中键入起始 IP 地址,然后在“结束地址”中键入结束 IP 地址。
在设置端口映射时(即特殊端口),请单击“在此地址池项上”,然后键入传入公用通信的公用 IP 地址,其他的设置与上述的设置方法相访。 到了这里,我们的全部工作——利用NAT主机代理内部网络共享Interent和内部网络到NAT主机的端口映射——就完成了。为了安全起见,我们最好在NAT主机的接入处加一个防火墙或设置NAT主机的“IP安全机制(IPSEC)”和“TCP/IP筛选”。“IP安全机制”和“TCP/IP筛选”的设置就在外部网络的TCP/IP协议中的安全选项中,参考WINDOWS 2000的帮助文件进行设置就可以,我们在这里就不再赘述了。 当然,使用NAT进行端口映射,用NAT代理软件同样可以做到(比如说WINROUTE),而且相应的设置比较简单,一般只要默认安装上后,在软件中进行简单设置就可以了。手都写累了,有机会我们以后再谈。 利用NAT保护内部网络,特别是软件的NAT,适用于小、中型的网络,而大型的网络一般要使用硬件(如路由),因为NAT服务也要消耗NAT服务器的资源的。在大型的网络中,使用路由来做NAT,要做相应的安全设置,一般参考路由手册及CISCO ISO安全模型即可。 NAT的使用,使内部网络相应于外部网络不可见化,入侵者要先侵入NAT服务器(或NAT设备),然后利用NAT做跳板,进一步侵入内部网络。这样,对于入侵者就有一定的难度,如果NAT服务器与内部服务器使用不同的操作系统,那么入侵者需要对这两个操作系统都要熟悉才可以做到的,这对于一般的入侵者来说,入侵行为无疑是提高了一个台阶。文章到此结束,本文的意图不仅仅只是一个步骤,而是希望大家以此为一个基点,利用现有的技术,组建出更安全的网络。 由于写作上的失误及本人水平有限,本文难免会出现纰漏,希望大家指正。 |