邪恶八进制信息安全团队技术讨论组's Archiver

EvilOctal 2005-7-25 22:31

[转载]理解Cisco Secure PIX Firewall上的alias命令

<P>undefined文章作者:fog</P>
<P>前言:<BR>最近我设置防火墙vpn和服务器,DMZ区服务器发布的问题,从互联网访问inside或dmz的服务器都很正常,从inside可以上互联网,但就是不能通过互联网域名访问inside和dmz的服务器,很是苦恼,用google搜索资料,逛到这个论坛来了,这里还不错,有很多新手和大虾。在我用google搜索的过程中,不停的遇到很多朋友和我一样的问题,但始终没有看到一个妥善解决的办法。有的朋友提到用内部dns作转向,这代价未免太大了,就算是本身有DNS,也不是很方便。个别朋友提到alias和alias的资料,但都没有详细的解说,我到cisco官方网站查到此用法,终于圆满解决了此问题,特将其翻译并加些注意事项作些补充,供大家参考。</P>
<P><BR>介绍</P>
<P>本文档阐述lias在Cisco PIX防火墙中的用法.</P>
<P>Alias的两个功能:<BR>利用DNS Doctoring修正外部DNS服务器回复<BR>o 利用DNS Doctoring,PIX 将"改变" 外部DNS响应的地址到另一个IP,这个地址不同于DNS服务器上真实提供的域名-IP记录。<BR>o 此功能实现从内部客户端通过内部IP地址连接到内部服务器上。 <BR>转换目标IP地址的dnat(Destination NAT)到另一个IP。 <BR>o 用dnat改变应用程序的标地址. <BR>o 此功能实现从内部客户端调用外部地址访问周边网络(例如DMZ区),不修改DNS回复。</P>
<P>例如,一台机器发送数据到99.99.99.99,可使用alias命令把数据重定向到另一个地址10.10.10.10.可使用此命令避免你网络里的IP与互联网或另一个企业内部网的IP冲突。请参考pix官方文档:<A href="http://www.cisco.com/univercd/cc/td/doc/product/iaabu/pix/index.htm">[url]http://www.cisco.com/univercd/cc/td/doc/product/iaabu/pix/index.htm[/url]</A></P>
<P>硬件和软件版本<BR>・ 此文适用于Cisco Secure PIX Firewall Software Releases 5.0.x或更高版本</P>
<P>用DNS Doctoring转换内部地址<BR>例1:web服务器地址10.10.10.10,对应的外部IP为99.99.99.99.<BR>注意: DNS在防火墙外.在dos提示窗输入nslookup验证一下DNS服务器是如何解析你的web服务器的外部IP.客户端PC应该返回的是内部地址10.10.10.10,因为DNS请求经过PIX已经被它改变了。另外,要让DNS fixup正常工作, 需禁止proxy-arp功能。 如果你为DNS fixup使用alias命令,用列命令禁止proxy-arp<BR>sysopt noproxyarp internal_interface<BR>(注:但是我的PIX525没用此命令仍然设置成功。)<BR>网络图如下:<BR><A href="http://eviloctal.bbnl.org/forum/attachment/f08449cb6d28509.gif" target=_blank><IMG style="WIDTH: 482px; HEIGHT: 568px" onclick="if(this.width>screen.width-461) window.open('attachment/f08449cb6d28509.gif');" height=122 src="http://eviloctal.bbnl.org/forum/attachment/f08449cb6d28509.gif" width=200 onload="if(this.width>screen.width-460)this.width=screen.width-460"></A><BR>如果你想用10.10.10.25这台机器通过www.mydomain.com访问你的web服务器,我们只需要实现以下alias命令:<BR>alias (inside) 10.10.10.10 99.99.99.99 255.255.255.255<BR>!--- 设置inside端口的DNS Doctoring.,一旦监测到发往inside端口的DNS<BR>!---回复里IP内容为99.99.99.99,则用10.10.10.10替换掉,再发到客户端PC<BR><BR>接下来,必须为web服务器做静态地址转换,为所有人提供web服务器的80端口访问权(http):<BR>static(inside,outside) 99.99.99.99 10.10.10.10 netmask 255.255.255.255<BR>!--- 此命令建立web服务器真实地址10.10.10.10和外部地址99.99.99.99的转换<BR><BR>用access list命令赋予访问权<BR>access-list 101 permit tcp any host 99.99.99.99 eq www<BR>access-group 101 in interface outside<BR>!--- 允许来自outside的任何用户访问web服务器的80端口 <BR><BR>如果你喜欢用老版本的语法,可以用conduit命令代替access-list和access-group<BR>conduit permit tcp host 99.99.99.99 eq www any<BR>!--- 允许来自outside的任何用户访问web服务器的80端口<BR><BR>用目标NAT(dnat)转换DMZ地址<BR><BR>如果web服务器在PIX的DMZ区,必须用alias作Destination NAT (dnat).<BR><BR>例2,web服务器在DMZ的地址为192.168.100.10, 外部地址99.99.99.99.我们要用dnat转换99.99.99.99为web服务器的真实地址192.168.100.10;从inside客户端发出的DNS请求和回复不会改变. 从inside的PC上看来就象访问外部地址99.99.99.99一样,所以DNS回复并未被PIX修改.<BR>网络图如下:<BR><A href="attachment/2ea64b013865ecf.gif" target=_blank><IMG onclick="if(this.width>screen.width-461) window.open('attachment/2ea64b013865ecf.gif');" src="attachment/2ea64b013865ecf.gif" onload="if(this.width>screen.width-460)this.width=screen.width-460"></A><BR>我们想从10.10.10.0 /24网络通过外部域名www.mydomain.com访问DMZ里的web服务器,并不想让PIX修改我们的DNS回复。让PIX作dnat把外部IP地址转为DMZ里web服务器真实地址192.168.100.10。<BR><BR>注意:当然了,如果从inside访问dmz里的192.168.100.10都不能够,光作这个也是不能访问的,前提是inside用户能够外访,也能访问到DMZ内部地址:<BR>global (outside) 1 interface<BR>global (dmz) 1 interface<BR>nat (inside) 1 0 0<BR>你不想利用interface占的地址,也可以另指定你相应端口网络里的地址<BR>global (outside) 1 99.99.99.3<BR>global (dmz) 1 192.168.100.2<BR>nat (inside) 1 0 0<BR><BR>现在,用alias命令作dnat:<BR>alias(inside) 99.99.99.99 192.168.100.10 255.255.255.255<BR>!--- 此句设置dnat.DNS回复不会被PIX修改,因为外部地址99.99.99.99不匹配第二个地址(192.168.100.10),由于发往客户端的DNS回复里有与目标地址99.99.99.99匹配,请求会”dnat-ed”.<BR>注意: 此例中IP地址与上面DNS Doctoring的例子中顺序相反.<BR><BR>接下来做web服务器的静态转换,允许所有人访问其80端口(http):<BR>static(dmz,outside) 99.99.99.99 192.168.100.10 netmask 255.255.255.255<BR>!--- 建立dmz区服务器地址192.168.100.10与外部地址99.99.99.99间静态转换<BR><BR>赋予访问权,access list命令如下:<BR>access-list 101 permit tcp any host 99.99.99.99 eq www<BR>access-group 101 in interface outside<BR>!--- 允许所有来自outside用户访问web服务器80端口.<BR><BR>同样,也可以使用老版本的conduit命令:<BR>conduit permit tcp host 99.99.99.99 eq www any<BR>!--- 允许所有来自outside用户访问web服务器80端口.<BR><BR><BR>配置中的说明 <BR>・ alias命令里的interface应该是发出请求的客户端所在那个端口. <BR>・ 如果DMZ里也有客户端PC,需专门为dmz设置的alias命令 (也就是DNS doctoring),<BR>例如,你想让DMZ的其他客户端用外部域名访问DMZ的web服务器,其实做法已跟例1没什么区别,为DMZ增加一条alias,做一个DNS Doctoring修改它DNS回复就行了:<BR>alias (dmz) 192.168.100.10 99.99.99.99 255.255.255.255<BR>・ 如果PIX有更多的端口,可以为不同的端口作多条alias命令。</P>

页: [1]
© 1999-2008 EvilOctal Security Team