📄 防火墙的工作原理中国it认证实验室---争分夺秒报道it认证资讯!.htm
字号:
<TD style="LINE-HEIGHT: 150%" noWrap>
比如,默认的telnet服<BR>当它是服务器)的telnet连接,<BR>23目标端口号的包过滤就行了。<BR>标准来实现相当可靠的防火墙了<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>务连接端口号是23。假如我们不许PC<BR>那么我们只需命令防火墙检查发送目<BR>这样,我们把IP地址和目标服务器TC<BR>吗?不,没这么简单。
<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>客户机建立对UNIX计算机(在这时我们<BR>标是UNIX服务器的数据包,把其中具有<BR>P/UDP端口结合起来不就可以作为过滤<BR><BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap> 客户机也有TCP/UDP端口
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
TCP/IP是一种端对端协<BR>用层的每个应用程序和服务都具<BR>机和服务器的各种应用之间的有<BR>机也有一个端口号,否则客户机<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>议,每个网络节点都具有唯一的地址<BR>有自己的对应“地址”,也就是端口<BR>效通信联系。比如,telnet服务器在<BR>的IP栈怎么知道某个数据包是属于哪<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>。网络节点的应用层也是这样,处于应<BR>号。地址和端口都具备了才能建立客户<BR>端口23侦听入站连接。同时telnet客户<BR>个应用程序的呢?
<BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
由于历史的原因,几乎所有的TCP/IP客户<BR>上的root用户才可以访问1024以下的端口,而这些<BR>有具有大于1023端口号的数据包进入网络,否则各<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>程序都使用大于1023的随机分配端口号。只有UNIX计算机<BR>端口还保留为服务器上的服务所用。所以,除非我们让所<BR>种网络连接都没法正常工作。
<BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
这对防火墙而言可就麻烦了,如果阻塞入<BR>因为服务器发出响应外部连接请求的入站(就是进<BR>反过来,打开所有高于1023的端口就可行了吗?也<BR>client、基于RPC的NFS服务以及为数众多的非UNIX<BR>端口标准的数据包都进入网络的话网络还能说是安<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>站的全部端口,那么所有的客户机都没法使用网络资源。<BR>入防火墙的意思)数据包都没法经过防火墙的入站过滤。<BR>不尽然。由于很多服务使用的端口都大于1023,比如X
<BR>IP产品等(NetWare/IP)就是这样的。那么让达到1023<BR>全的吗?连这些客户程序都不敢说自己是足够安全的。
<BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center
border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%"> <IMG
src="防火墙的工作原理中国IT认证实验室---争分夺秒报道IT认证资讯!.files/2002.12.17.16.50.39.fire04.jpg">
</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap> 双向过滤
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
OK,咱们换个思路。我<BR>墙之外。比如,如果你知道用户<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>们给防火墙这样下命令:已知服务的<BR>要访问Web服务器,那就只让具有源<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>数据包可以进来,其他的全部挡在防火<BR>端口号80的数据包进入网络:
<BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center
border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%"> <IMG
src="防火墙的工作原理中国IT认证实验室---争分夺秒报道IT认证资讯!.files/2002.12.17.16.50.58.fire05.jpg">
</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
不过新问题又出现了。<BR>HTTP这样的服务器本来就是可以<BR>没法访问哪些没采用标准端口号<BR>的就一定来自Web服务器。有些<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>首先,你怎么知道你要访问的服务器<BR>任意配置的,所采用的端口也可以随<BR>的的网络站点了!反过来,你也没法<BR>黑客就是利用这一点制作自己的入侵<BR></TD>
<TD style="LINE-HEIGHT: 150%" noWrap>具有哪些正在运行的端口号呢?
象<BR>意配置。如果你这样设置防火墙,你就<BR>保证进入网络的数据包中具有端口号80<BR>工具,并让其运行在本机的80端口!
<BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap> 检查ACK位
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
源地址我们不相信,源端口也信不得了,<BR>任呢?还好,事情还没到走投无路的地步。对策还<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>这个不得不与黑客共舞的疯狂世界上还有什么值得我们信<BR>是有的,不过这个办法只能用于TCP协议。
<BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
TCP是一种可靠的通信<BR>为了实现其可靠性,每个TCP连<BR>在后续的其他包被发送出去之前<BR>应,实际上仅仅在TCP包头上设<BR>ACK位。连接会话的第一个包不<BR>了。
<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>协议,“可靠”这个词意味着协议具<BR>接都要先经过一个“握手”过程来交<BR>必须获得一个确认响应。但并不是对<BR>置一个专门的位就可以完成这个功能<BR>用于确认,所以它就没有设置ACK位<BR><BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>有包括纠错机制在内的一些特殊性质。<BR>换连接参数。还有,每个发送出去的包<BR>每个TCP包都非要采用专门的ACK包来响<BR>了。所以,只要产生了响应包就要设置<BR>,后续会话交换的TCP包就要设置ACK位<BR><BR></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center
border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%"> <IMG
src="防火墙的工作原理中国IT认证实验室---争分夺秒报道IT认证资讯!.files/2002.12.17.16.51.30.fire06.jpg">
</TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
举个例子,PC向远端的<BR>务器响应该请求时,服务器就发<BR>然后客户机就用自己的响应包再<BR>。通过监视ACK位,我们就可以<BR>TCP连接但却能响应收到的数据<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>Web服务器发起一个连接,它生成一<BR>回一个设置了ACK位的数据包,同时<BR>响应该数据包,这个数据包也设置了<BR>将进入网络的数据限制在响应包的范<BR>包了。
<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>个没有设置ACK位的连接请求包。当服<BR>在包里标记从客户机所收到的字节数。<BR>ACK位并标记了从服务器收到的字节数<BR>围之内。于是,远程系统根本无法发起<BR><BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
这套机制还不能算是无懈可击,简单地举<BR>得不被打开以便外部请求可以进入网络。还有,对<BR>位。还有一些TCP应用程序,比如FTP,连接就必须<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>个例子,假设我们有台内部Web服务器,那么端口80就不<BR>UDP包而言就没法监视ACK位了,因为UDP包压根就没有ACK<BR>由这些服务器程序自己发起。
<BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap> FTP带来的困难
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
一般的Internet服务对<BR>第一对端口号用于FTP的“命令<BR>据通道”提供客户机和服务器之<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>所有的通信都只使用一对端口号,FT<BR>通道”提供登录和执行命令的通信链<BR>间的文件传送。
<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>P程序在连接期间则使用两对端口号。<BR>路,而另一对端口号则用于FTP的“数<BR><BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
在通常的FTP会话过程中,客户机首先向<BR>后执行LOGIN、DIR等各种命令。一旦用户请求服务<BR>的数据端口发起连接。问题来了,如果服务器向客<BR>位的数据包,防火墙则按照刚才的规则拒绝该数据<BR>就是够聪明的防火墙才能看出客户机刚才告诉服务<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>服务器的端口21(命令通道)发送一个TCP连接请求,然<BR>器发送数据,FTP服务器就用其20端口
(数据通道)向客户<BR>户机发起传送数据的连接,那么它就会发送没有设置ACK<BR>包同时也就意味着数据传送没戏了。通常只有高级的、也<BR>器的端口,然后才许可对该端口的入站连接。
<BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap> UDP端口过滤
</TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap> 好了,现在我们回过头<BR>过滤。UDP
是发出去不管的“不<BR>信任务。NFS、DNS、WINS、NetB<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>来看看怎么解决UDP问题。刚才说了<BR>可靠”通信,这种类型的服务通常用<BR>IOS-over-TCP/IP和
NetWare/IP都使<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>,UDP包没有ACK位所以不能进行ACK位<BR>于广播、路由、多媒体等广播形式的通<BR>用UDP。
<BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
看来最简单的可行办法<BR>包,来自外部接口的UDP包则不<BR>DNS服务,至少得允许一些内部<BR>使用它,就同样要让他们的UDP<BR>制。但是,什么叫可信任!如果<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>就是不允许建立入站UDP连接。防火<BR>转发。现在的问题是,比方说,DNS<BR>请求穿越防火墙。还有IRC这样的客<BR>包进入网络。我们能做的就是对那些<BR>黑客采取地址欺骗的方法不又回到老<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>墙设置为只许转发来自内部接口的UDP<BR>名称解析请求就使用UDP,如果你提供<BR>户程序也使用UDP,如果要让你的用户<BR>从本地到可信任站点之间的连接进行限<BR>路上去了吗?
<BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
有些新型路由器可以通过“记忆”出站UD<BR>的目标地址和端口号就让它进来。如果在内存中找<BR>产生数据包的外部主机就是内部客户机希望通信的<BR>论上当然可以从附着DNS的UDP端口发起攻击。只要<BR>办法是采用代理服务器。
<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>P包来解决这个问题:如果入站UDP包匹配最近出站UDP包<BR>不到匹配的UDP包就只好拒绝它了!但是,我们如何确信<BR>服务器呢?如果黑客诈称DNS服务器的地址,那么他在理<BR>你允许DNS查询和反馈包进入网络这个问题就必然存在。<BR><BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap>
所谓代理服务器,顾名<BR>网络内外的直接连接。它本身就<BR>不是简单地将其转发了事。给人<BR>的后面,露面的不过是代理这个<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>思义就是代表你的网络和外界打交道<BR>提供公共和专用的DNS、邮件服务器<BR>的感觉就是网络内部的主机都站在了<BR>假面具。
<BR></TD>
<TD style="LINE-HEIGHT: 150%"
noWrap>的服务器。代理服务器不允许存在任何<BR>等多种功能。代理服务器重写数据包而<BR>网络的边缘,但实际上他们都躲在代理<BR><BR></TD></TR></TBODY></TABLE><BR>
<TABLE cellSpacing=0 cellPadding=0 width="18%" border=0>
<TBODY>
<TR>
<TD style="LINE-HEIGHT: 150%" noWrap> 小结
</TD></TR></TBODY></TABLE>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -