防火墙的设计
1. 数据包过滤包过滤防火墙一般作用在网络层(IP层),故也称网络层防火墙(Network Lev Firewall)或IP过滤器(IP filters)它是对进出内部网络的所有信息进行分析,并按照一定的安全策略(信息过滤规则)对进出内部网络的去处进行限制,允许授权信息通过,拒绝非授权信息通过。信息过滤规则是以其所收到的数据包头信息为基础,比如IP数据包源地址IP数据包目的地址、封装协议类型(TCP、UDP、ICMP等)、TCP/IP源端口号、TCP/IP目的端口号、ICMP报文类型等。当一个数据包满足过滤规则,则允许此数据包通过,否则拒绝此包通过,相当于此数据包所要到达的网络物理上被断开,起到了保护内部网络的作用。包过滤的核心就是安全策略即包过滤算法的设计。采用这种技术的防火墙优点在于速度快、实现方便,但安全性能差,且由于不同操作系统环境下TCP和UDP端口号所代表的应用服务协议类型有所不同,故兼容性差。
包过滤型防火墙往往可以用一台过滤路由器来实现,对所接收的每个数据包做允许拒绝的决定。路由器审查每个数据包以便确定其是否与某一条包过滤规则匹配。过滤规则基于可以提供给IP转发过程的包头信息。
包头信息中包括IP源地址、IP目的地址、内装协议(ICP、UDP、ICMP、或IP Tunnel)、TCP/UDP目标端口、ICMP消息类型、TCP包头中的ACK位。包的进入接口和输出接口如果有匹配,并且规则允许该数据包通过,那么该数据包就会按照路由表中的信息被转发。如果匹配并且规则拒绝该数据包,那么该数据包就会被丢弃。如果没有匹配规则,用户配置的缺省参数会决定是转发还是丢弃数据包。
包过滤路由器使得路由器能够根据特定的服务允许或拒绝流动的数据,因为多数的服务收听者都在已知的TCP/UDP端口号上。例如,Telnet服务器在TCP的23号端口上监听远地连接,而SMTP服务器在TCP的25号端口上监听连接。为了阻塞所有进入的Telnet连接,路由器只需简单的丢弃所有TCP端口号等于23的数据包。为了将进来的Telnet连接限制到内部的数台机器上,路由器必须拒绝所有TCP端口号等于23并且目标IP地址不等于允许主机的IP地址的数据包。
(1) 过滤路由器型防火墙的优点
1) 处理包的速度比较快,过滤路由器为用户提供了一种透明的服务,用户不用改变客户端程序或改变自己的行为。
2) 实现包过滤几乎不再需要费用(或极少的费用),因为这些特点都包含在标准的路由器软件中。由于Internet访问一般都是在WAN接口上提供,因此在流量适中并定义较少过滤器时对路由器的性能几乎没有影响。
3) 包过滤路由器对用户和应用来讲是透明的,所以不必对用户进行特殊的培训和在每台主机上安装特定的软件。
(2) 包过滤路由器型防火墙的缺点
1)防火墙的维护比较困难,定义数据包过滤器会比较复杂,因为网络管理员需要对各种Internet服务、包头格式、以及每个域的意义有非常深入的理解。
2)对于外部主机伪装其他可信任的外部主机IP的IP欺骗不能阻止。
3)任何直接经过路由器的数据包都有被用做数据驱动式攻击的潜在危险。我们已经知道数据驱动式攻击从表面上来看是由路由器转发到内部主机上没有害处的数据。该数据包括了一些隐藏的指令,能够让主机修改访问控制和与安全有关的文件,使得入侵者能够获得对系统的访问权。
4)一些包过滤网关不支持有效的用户认证。因为IP地址是可以伪造的,因此如果没有基于用户的认证,仅通过IP地址来判断是不安全的。
5)不可能提供有用的日志,或根本就不提供。
6)随着过滤器数目的增加,路由器的吞吐量会下降。可以对路由器进行这样的优化:抽取每个数据包的目的IP地址,进行简单的路由表查询,然后将数据包转发到正确的接口上去传输。如果打开过滤功能,路由器不仅必须对每个数据包作出转发决定,还必须将所有的过滤器规则施用给每个数据包。这样就消耗CPU时间并影响系统的性能。
7)IP包过滤器可能无法对网络上流动的信息提供全面的控制。包过滤路由器能够允许或拒绝特定的服务,但是不能理解特定服务的上下文环境和数据。
所以包过滤防火墙一般用在下列场合:
" 机构是非集中化管理。
" 机构没有强大的集中安全策略。
" 网络的主机数非常少。
" 主要依赖于主机安全来防止入侵,但是当主机数增加到一定的程度的时候,仅靠主机安全是不够的。
" 没有使用DHCP这样的动态IP地址分配协议。
(3) 过滤规则制定
1) 按地址过滤
最简单的数据包过滤结构是按地址过滤。这种方法的过滤要用户限制基于数据包源或目的地址的数据包流,而不考虑包括什么协议。这样过滤能用来允许特定的外部主机与特定的内部主机对话。例如,阻止侵袭者注入伪造的数据包(如伪造源IP地址)到用户的网络中去。
例如,如果用户想要阻止引入有伪造源地址的数据包,用户就可以做这样的规定:
规则 方向 源地址 目的地址 动作
A 入站 内部 任意 拒绝
因为内部地址只可能是出站方向,所以出现表中所示情况表明伪造源地址,从而加以拒绝。
规则A说明包过滤防火墙可以帮助用户过滤掉一些伪造源地址的攻击,但如果一个攻击者声称是另一个不同的外部主机,这个规则就无能为力。
按地址过滤最大的好处就是可以将一些不希望内部用户登陆的站点屏蔽掉,例如黄色网站,反动言论网站等。
按地址过滤的另一个应用就是防止内部网络中的某主机对外部网络中一目标主机进行拒绝服务攻击(DoS)。
拒绝服务(Denial of Service,简称DOS),是一种简单的破坏性攻击,通常攻击者利用TCP/IP协议中的某个弱点,或者系统存在的某些漏洞,对目标系统发起大规模的进攻,致使攻击目标无法对合法用户提供正常的服务,攻击模型如图7.1.6所示。
大量数据包 攻击方 攻击方内部网络 Internet 被攻击目标系统
防火墙(路由器) 图7.1.6 拒绝服务攻击示意图在对目标系统的攻击中,必须伪造源地址,目标主机对伪造的源地址是不能识别的,因为它并不能判断这些数据包的真正来源。也不知道其实来自同一台主机,但攻击者的出口路由器却能发现,因为一般伪造源地址都是随机的,不可能都选用攻击者所在内部网络主机的IP地址,所以,出口路由器能发现一个出站方向的数据包源地址居然是外部网络的主机地址。这台路由器上的包过滤防火墙就可以加一个规则:
规则 方向 源地址 目的地址 动作
B 出站 外部 任意 拒绝过滤掉这些数据包,从而阻止单机的DOS攻击。但对于象DDOS(即分布式拒绝服务攻击)这样的多点攻击,包过滤防火墙则无能为力。 2)按服务过滤
按地址对数据包过滤并不能消除所有的安全隐患,或者是,虽然消除了这些安全隐患,却限制了很多的服务。譬如,我们只想屏蔽某台外部主机对内部主机的Telnet服务,而该外部主机其他的服务是允许的,用地址过滤的办法是无法做到这一点的,要么禁止该主机的一切服务,要么屏蔽一切该主机的一切服务。在这样的情况下,可以使用按服务过滤。
如果不希望自己内网主机对外部主机特定服务的请求,例如远程登录(Telnet)。或者屏蔽自己内部主机对外的服务,则可以做如下规定:
规则集C(禁止内部主机对外部主机Telnet)
规则 方向 源地址 目的地址 包类型 源端口 目标端口 动作
C 出站 内部 外部 TCP 任意(>1023) 23 拒绝规则集D(禁止外部主机对内部主机telnet)
规则 方向 源地址 目的地址 包类型 源端口 目标端口 动作
D 入站 外部 内部 TCP 23 任意(>1023) 拒绝规则集E(禁止telnet)
规则 方向 源地址 目的地址 包类型 源端口 目标端口 动作
E 出站 内部 任意 TCP 任意(>1023) 23 拒绝
入站 任意 内部 TCP 23 任意(>1023) 拒绝 3)综合过滤
更多的时候,访问限制的规则比以上两种情况要复杂得多,譬如,需要对某台特定主机而不是所有主机的特定服务做限制,对与该主机的其他服务,或着其他主机的这种服务是允许的,那么就需要做综合的过滤。规则集F(禁止某外部主机host对内部网络提供的telnet服务)
规则 方向 源地址 目的地址 包类型 源端口 目标端口 动作
F 出站 内部 host TCP 任意(>1023) 23 拒绝
入站 host 内部 TCP 23 任意(>1023) 拒绝
2 应用层防火墙
在应用层实现防火墙,方式多种多样,下面是几种应用层防火墙的设计实现。
(1)代理与代管服务
¢ 应用代理服务器(Application Gateway Proxy)
在网络应用层提供授权检查及代理服务。当外部某台主机试图访问受保护网络时,必须先在防火墙上经过身份认证。通过身份认证后,防火墙运行一个专门为该网络设计的程序,把外部主机与内部主机连接。在这个过程中,防火墙可以限制用户访问的主机、访问时间及访问的方式。同样,受保护网络内部用户访问外部网时也需先登录到防火墙上,通过验证后,才可访问。
应用网关代理的优点是既可以隐藏内部IP地址,也可以给单个用户授权,即使攻击者盗用了一个合法的IP地址,也通不过严格的身份认证。因此应用网关比报文过滤具有更高的安全性。但是这种认证使得应用网关不透明,用户每次连接都要受到认证,这给用户带来许多不便。这种代理技术需要为每个应用写专门的程序。
¢ 回路级代理服务器
即通常意义的代理服务器,它适用于多个协议,但不能解释应用协议,需要通过其他方式来获得信息,所以,回路级代理服务器通常要求修改过的用户程序。
套接字服务器(Sockets Server)就是回路级代理服务器。套接字(Sockets)是一种网络应用层的国际标准。当受保护网络客户机需要与外部网交互信息时,在防火墙上的套服务器检查客户的User ID、IP源地址和IP目的地址,经过确认后,套服务器才与外部的服务器建立连接。对用户来说,受保护网与外部网的信息交换是透明的,感觉不到防火墙的存在,那是因为网络用户不需要登录到防火墙上。但是客户端的应用软件必须支持 "Socketsified API",受保护网络用户访问公共网所使用的IP地址也都是防火墙的IP地址。
¢ 代管服务器
代管服务器技术是把不安全的服务如FTP、Telnet等放到防火墙上,使它同时充当服务器,对外部的请求作出回答。与应用层代理实现相比,代管服务器技术不必为每种服务专门写程序。而且,受保护网内部用户想对外部网访问时,也需先登录到防火墙上,再向外提出请求,这样从外部网向内就只能看到防火墙,从而隐藏了内部地址,提高了安全性。
(2)地址扩充与地址保护
¢ 网络地址转换器(NAT Network Address Translate)
当受保护网连到Internet上时,受保护网用户若要访问Internet,必须使用一个合法的IP地址。但由于合法Internet IP地址有限,而且受保护网络往往有自己的一套IP地址规划(非正式IP地址)。网络地址转换器就是在防火墙上装一个合法IP地址集。当内部某一用户要访问Internet时,防火墙动态地从地址集中选一个未分配的地址分配给该用户,该用户即可使用这个合法地址进行通信。同时,对于内部的某些服务器如Web服务器,网络地址转换器允许为其分配一个固定的合法地址。外部网络的用户就可通过防火墙来访问内部的服务器。这种技术既缓解了少量的IP地址和大量的主机之间的矛盾,又对外隐藏了内部主机的IP地址,提高了安全性。
¢ 隔离域名服务器(Split Domain Name Server )
这种技术是通过防火墙将受保护网络的域名服务器与外部网的域名服务器隔离,使外部网的域名服务器只能看到防火墙的IP地址,无法了解受保护网络的具体情况,这样可以保证受保护网络的IP地址不被外部网络知悉。
(3)邮件技术(Mail Forwarding)
当防火墙采用上面所提到的几种技术使得外部网络只知道防火墙的IP地址和域名时,从外部网络发来的邮件,就只能送到防火墙上。这时防火墙对邮件进行检查,只有当发送邮件的源主机是被允许通过的,防火墙才对邮件的目的地址进行转换,送到内部的邮件服务器,由其进行转发。
3.代理服务
对于防火墙来说,如果它的用户不能访问Internet,与其连接就没有意义。但从另一个角度来说,如果在Internet和用户站点的每一台机器之间都有通道可以自由访问,则在与Internet连接时将没有安全感。因此,有时我们不得不采用一些折中的办法。最明显的就是将内部所有的用户通过单一主机访问Internet。这就是代理服务。
代理只对一个内部网络的某个主机或某几个主机提供Internet访问服务,而看上去却是对整个网络的所有主机提供服务。具有访问功能的主机就充当没有访问入口的那些主机的代理来完成那些主机想要做的事。
代理不要求任何硬件,但对于大部分服务它要求特殊的软件,安装了一个特殊协议或一组协议的代理服务器运行在一个双宿主主机或一个堡垒主机上,这个代理服务器判断来自自己用户的要求并决定哪个可以传送,哪个可以忽略。对于许可的要求,代理服务器就会代表用户与真正的服务器交互而将要求从用户传给真实服务器,也将真实服务器的应答传给用户。
对于用户,与代理服务器交谈就像与真实服务器交谈一样,对于真实服务器,它只是与一个代理服务器交谈,事实上它也不能判断与自己交谈的是一个代理服务器而不是一台普通主机,它也不能知道真正用户的存在。
使用代理的优点
(1) 代理服务允许用户直接进入到Internet服务中。
在传统双宿主主机方式中,用户要想使用因特网的服务首先要登录到双宿主主机上去,对于用户,这样会很不方便,以至于有些用户可能用其他方式寻找Internet通道,例如通过拨号上网,这对防火墙的安全是重大隐患;但是另一方面,这种双宿主主机接入方式对于双宿主主机来说,很多帐户的管理也将使系统变得更为复杂。
(2) 代理服务优化日志服务。
代理服务允许日志服务以特殊和有效的方式来进行。例如,一个FTP代理服务器只记录已发出的命令和服务器接收到的回答,并以此来代替记录所有传送的数据。
使用代理的缺点
(1) 代理服务落后于非代理服务。
尽管一些简单的服务可以找到其代理软件,但是对于比较新的服务有时很难找到可靠的代理软件。通常代理服务器与服务之间有一个明显的滞后。在没有合适代理软件可用之前,一些服务只能放置在防火墙之外,这样就有了很多潜在的危险。
(2) 对于每项代理可能要求不同的代理服务器。
有时用户不得不为每个协议设置专门的代理服务器。因为代理服务器必须理解协议以便判断什么该允许什么该拒绝,因此选择不同的代理服务器对用户来说是一件很复杂的事情。
(3) 代理服务器可能会限制用户或过程。
一般情况下,代理服务器会对用户和过程进行限制,由于这种限制,代理应用就不能象非代理那样灵活。
页:
[1]