| 防火墙知识问答(下)
11.我必须满足用户要求的各种要求吗?
对这个问题的答案完全有可能是“不”。对于需要什么,不需要什么,每个站点都有自己的策略,但是,重要的是记住作为一家机构的看门人的主要工作之一是教育。用户需要流视频、实时聊天,并要求能够向请求在内部网络上的活数据库进行交互查询的外部客户提供服务。
这意味着完成任何这类事情都会给机构造成风险,而造成的风险往往比想像中沿着这条路走下去的“价值”的回报更高。多数用户不愿使自己的机构遭受风险。他们只看一看商标,阅读一下广告,他们也愿意做上述那些事。重要的是了解用户真正想干些什么,帮助他们懂得他们可以以更安全的方式实现他们的真正目的。
你不会总受到欢迎,你可以甚至会发现自己收到了难以置信愚蠢的命令,让你做一些诸如“打开所有的口子”这样的事,但不要为此担心。在这种时刻,明智的做法是将你的交换数据全都保存起来,这样当一个十二岁的小孩闯入网络时,你至少能够使你自己远离混乱局面。
12.如何才能通过自己的防火墙运行Web/HTTP?
有三种办法做到这点:
1、如果你使用屏蔽路由器的话,允许“建立起的”连接经过路由器接入到防火墙外。
2、使用支持SOCKS的Web客户机,并在你的桥头堡主机上运行SOCKS。
3、运行桥头堡主机上的某种具有代理功能的Web服务器。一些可供选择的代理服务器包括Squid、Apache、Netscape Proxy和TIS防火墙工具包中的http-gw。这些选件中的多数还可以代理其它协议(如gopher和ftp),并可缓存捕获的对象。后者一般会提高用户的性能,使你能更有效地使用到Internet的连接。基本上所有的Web客户机(Mozilla、Internet Explorer、Lynx等等)都具有内置的对代理服务器的支持。
13.在使用防火墙时,怎样使用DNS呢?
一些机构想隐藏DNS名,不让外界知道。许多专家认为隐藏DNS名没有什么价值,但是,如果站点或企业的政策强制要求隐藏域名,它也不失为一种已知可行的办法。你可能必须隐藏域名的另一条理由是你的内部网络上是否有非标准的寻址方案。不要自欺欺人的认为,如果隐藏了你的DNS名,在攻击者打入你的防火墙时,会给攻击者增加困难。有关你的网络的信息可以很容易地从网络层获得。假如你有兴趣证实这点的话,不妨在LAN上“ping”一下子网广播地址,然后再执行“arp -a”。还需要说明的是,隐藏DNS中的域名不能解决从邮件头、新闻文章等中“泄露”主机名的问题。 这种方法是许多方法中的一个,它对于希望向Internet隐瞒自己的主机名的机构很有用。这种办法的成功取决于这样一个事实:即一台机器上的DNS客户机不必与在同一台机器上的DNS服务器对话。换句话说,正是由于在一台机器上有一个DNS服务器,因此,将这部机器的DNS客户机活动重定向到另一台机器上的DNS服务器没有任何不妥(并且经常有好处)。
首先,你在可以与外部世界通信的桥头堡主机上建立DNS服务器。你建立这台服务器使它宣布对你的域名具有访问的权力。事实上,这台服务器所了解的就是你想让外部世界所了解的:你网关的名称和地址、你的通配符MX记录等等。这台服务器就是“公共”服务器。
然后,在内部机器上建立一台DNS服务器。这台服务器也宣布对你的域名具有权力;与公共服务器不同,这台服务器“讲的是真话”。它是你的“正常”的命名服务器,你可以在这台服务器中放入你所有的“正常”DNS名。你再设置这台服务器,使它可以将它不能解决的查询转发到公共服务器(例如,使用Unix机上的/etc/ named.boot中的“转发器”行(forwarder line))。
最后,设置你所有的DNS客户机(例如,Unix机上的/etc/resolv.conf文件)使用内部服务器,这些DNS客户机包括公共服务器所在机器上的DNS客户机。这是关键。
询问有关一台内部主机信息的内部客户机向内部服务器提出问题,并得到回答;询问有关一部外部主机信息的内部客户机向内部服务器查询,内部客户机再向公共服务器进行查询,公共服务器再向Internet查询,然后将得到的答案再一步一步传回来。公共服务器上的客户机也以相同的方式工作。但是,一台询问关于一台内部主机信息的外部客户机,只能从公共服务器上得到“限制性”的答案。
这种方式假定在这两台服务器之间有一个包过滤防火墙,这个防火墙允许服务器相互传递DNS,但除此之外,限制其它主机之间的DNS。
这种方式中的另一项有用的技巧是利用你的IN-ADDR.AROA域名中通配符PTR记录。这将引起对任何非公共主机的“地址到名称”(address-to-name)的查找返回像“unknown.YOUR.DOMAIN”这样的信息,而非返回一个错误。这就满足了像ftp.uu.net匿名FTP站点的要求。这类站点要求得到与它们通信的计算机的名字。当与进行DNS交叉检查的站点通信时,这种方法就不灵了。在交叉检查中,主机名要与它的地址匹配,地址也要与主机名匹配。
14.怎样才能穿过防火墙使用FTP?
一般来说,可以通过使用像防火墙工具包中的ftp-gw这类代理服务器,或在有限的端口范围允许接入连接到网络上(利用如“建立的”屏蔽规则这样的规则来限制除上述端口外的接入),使FTP可以穿过防火墙工作。然后,修改FTP客户机,使其将数据端口连接在允许端口范围内的一个端口上。这样做需要能够修改在内部主机上的 FTP客户机应用。
在某些情况下,如果FTP的下载是你所希望支持的,你不妨考虑宣布FTP为“死协议”(dead protocol),并且让户通过Web下载文件。如果你选择FTP-via-Web方式,用户将不能使用FTP向外传输文件,这可能会造成问题,不过这取决你试图完成什么。
另一个不同的办法是使用FTP "PASV"选项来指示远程FTP服务器允许客户机开始连接。PASV方式假设远程系统上的FTP服务器支持这种操作。(详细说明请参看RFC1579)
另一些站点偏爱建立根据SOCKS库链接的FTP程序的客户机版本。
15.怎样才能穿过防火墙使用telnet?
利用像防火墙工具包中的tn-gw这类应用代理,或简单地配置一台路由器使它利用像“建立的”屏蔽规则等策略允许接出,一般都可以支持使用telnet。应用代理可以以运行在桥头堡主机上的独立代理的形式,或以SOCKS服务器和修改的客户机的形式存在。
16.怎样才能穿过防火墙使用RealAudio?
RealNetworks中含有关于如何使穿过防火墙RealAudio的一些说明。在没有清楚地了解做哪些改动,了解新的改动将带来什么样的风险的情况下,就改动你的防火墙,是很不明智的。
17.如何才能使web服务器作为专用网络上的一个数据库的前端呢?
实现这点的最佳途径是通过特定的协议在web服务器与数据库服务器之间允许很有限的连接。特定的协议只支持你将使用的功能的级别。允许原始SQL或其它任何可为攻击者利用来进行定制提取(extractions)的东西,一般来说不是一个好主意。
假设攻击者能够进入你的web服务器,并以web服务器同样的方式进行查询。难道没有一种机制能提取web服务器不需要的像信用卡信息这样的敏感信息吗?攻击者难道不能发出一次SQL选择,然后提取你整个的专用数据库吗?
同其它所有应用一样,“电子商务”应用从一开始设计时就充分考虑到了安全问题,而不是以后再想起来“增加”安全性。应当从一个攻击者的角度,严格审查你的结构。假设攻击者了解你的结构的每一个细节。现在,再问问自己,想要窃取你的数据、进行非授权的改动或做其它任何你不想让做的事的话,应当做些什么。你可能会发现,不需要增加任何功能,只需做出一些设计和实施上的决策就可大大地增加安全性。
下面是一些如何做到这点的想法:
以一般的原则,从数据库中提取你所需要的数据,使你不用对包含攻击者感兴趣的信息的整个数据库进行查询。对你允许在web服务器与数据库之间传输流实行严格的限制和审计。
[转载声明:文章作者或文章所属网站对此文享有著作权,转载请与作者本人或其所属网站联系,特此声明。] |