第一章 绪论
1.1. 防火墙技术发展概述
传统的防火墙通常是基于访问控制列表(ACL)进行包过滤的,位于在内部专用网的入口处,所以也俗称"边界防火墙"。随着防火墙技术的发展,防火墙技术也得到了发展,出现了一些新的防火墙技术,如电路级网关技术、应用网关技术和动态包过滤技术,在实际运用中,这些技术差别非常大,有的工作在OSI参考模式的网络层,;有的工作在传输层,还有的工作在应用层。
在这些已出现的防火墙技术中,静态包过滤是最差的安全解决方案,其应用存在着一些不可克服的限制,最明显的表现就是不能检测出基于用户身份的地址欺骗型数据包,并且很容易受到诸如DoS(拒绝服务)、IP地址欺诈等黑客攻击。现在已基本上没有防火墙厂商单独使用这种技术。应用层网关和电路级网关是比较好的安全解决方案,它们在应用层检查数据包。但是,我们不可能对每一个应用都运行这样一个代理服务器,而且部分应用网关技术还要求客户端安装有特殊的软件。这两种解决方案在性能上也有很大的不足之处。动态包过滤是基于连接状态对数据包进行检查,由于动态包过滤解决了静态包过滤的安全限制,并且比代理技术在性能上有了很大的改善,因而目前大多数防火墙厂商都采用这种技术。但是随着主动攻击的增多,状态包过滤技术也面临着巨大的挑战,更需要其它新技术的辅助。
除了访问控制功能外,现在大多数的防火墙制造商在自己的设备上还集成了其它的安全技术,如NAT和VPN、病毒防护等。
1.2. 防火墙的应用
随着新的网络攻击的出现,防火墙技术也有一些新的发展趋势。这主要可以从包过滤技术、防火墙体系结构和防火墙系统管理三方面来体现。
1. 防火墙包过滤技术发展趋势
防火墙基本模型
(1). 一些防火墙厂商把在AAA系统上运用的用户认证及其服务扩展到防火墙中,使其拥有可以支持基于用户角色的安全策略功能。该功能在无线网络应用中非常必要。具有用户身份验证的防火墙通常是采用应用级网关技术的,包过滤技术的防火墙不具有。用户身份验证功能越强,它的安全级别越高,但它给网络通信带来的负面影响也越大,因为用户身份验证需要时间,特别是加密型的用户身份验证。
(2). 多级过滤技术
所谓多级过滤技术,是指防火墙采用多级过滤措施,并辅以鉴别手段。在分组过滤(网络层)一级,过滤掉所有的源路由分组和假冒的IP源地址;在传输层一级,遵循过滤规则,过滤掉所有禁止出或/和入的协议和有害数据包如nuke包、圣诞树包等;在应用网关(应用层)一级,能利用FTP、SMTP等各种网关,控制和监测Internet提供的所用通用服务。这是针对以上各种已有防火墙技术
的不足而产生的一种综合型过滤技术,它可以弥补以上各种单独过滤技术的不足。
这种过滤技术在分层上非常清楚,每种过滤技术对应于不同的网络层,从这个概念出发,又有很多内容可以扩展,为将来的防火墙技术发展打下基础。
(3). 使防火墙具有病毒防护功能。现在通常被称之为"病毒防火墙",当然目前主要还是在个人防火墙中体现,因为它是纯软件形式,更容易实现。这种防火墙技术可以有效地防止病毒在网络中的传播,比等待攻击的发生更加积极。拥有病毒防护功能的防火墙可以大大减少公司的损失。
2. 防火墙的体系结构发展趋势
随着网络应用的增加,对网络带宽提出了更高的要求。这意味着防火墙要能够以非常高的速率处理数据。另外,在以后几年里,多媒体应用将会越来越普遍,它要求数据穿过防火墙所带来的延迟要足够小。为了满足这种需要,一些防火墙制造商开发了基于ASIC的防火墙和基于网络处理器的防火墙。从执行速度的角度看来,基于网络处理器的防火墙也是基于软件的解决方案,它需要在很大程度上依赖于软件的性能,但是由于这类防火墙中有一些专门用于处理数据层面任务的引擎,从而减轻了CPU的负担,该类防火墙的性能要比传统防火墙的性能好许多。
与基于ASIC的纯硬件防火墙相比,基于网络处理器的防火墙具有软件色彩,因而更加具有灵活性。基于ASIC的防火墙使用专门的硬件处理网络数据流,比起前两种类型的防火墙具有更好的性能。但是纯硬件的ASIC防火墙缺乏可编程性,这就使得它缺乏灵活性,从而跟不上防火墙功能的快速发展。理想的解决方案是增加ASIC芯片的可编程性,使其与软件更好地配合。这样的防火墙就可以同时满足来自灵活性和运行性能的要求。
1.3. 本课题研究的目的和内容
1.3.1. 防火墙的远程管理
远程管理是防火墙产品的一种管理功能的扩展,也是防火墙非常实用的功能
之一。用户可以利用防火墙的远程管理功能在办公室管理托管在电信部门的防火墙产品,甚至坐在家中就可以重新调整防火墙的安全规则和策略。
越来越多的用户将防火墙是否提供远程管理功能作为选择防火墙产品的重要参考指标之一。的确,防火墙的远程管理功能为用户的使用和对防火墙的管理提供了更加方便、快捷的手段。
1.3.2. 远程管理的三种技术
目前防火墙产品的远程管理大致使用以下三种技术:一种是基于浏览器的Web界面管理方式,另一种是基于管理端软件的GUI界面,除此之外,还有基于命令行的CLI管理方式(一般通过串口进行配置)。
无论是Web界面管理方式还是基于管理端软件的GUI界面,管理界面一般需要完成对防火墙的配置、管理和监控。CLI命令行的管理方式适合对防火墙进行初始化、网卡配置等基本操作,不适合做丰富的管理功能。
GUI的管理方式:GUI直观,是一种重要的管理工具,适合对防火墙进行复杂的配置,管理多台防火墙,同时支持丰富的审计和日志的功能。
Web管理方式:Web界面管理方式是另一种管理工具。这种方式提供了简单的管理界面,适合那些功能不是很多的防火墙的管理工作。
CLI管理方式:这种方式不适合对防火墙进行管理,事实上,不太可能通过命令行的方式对一个具有复杂功能的防火墙进行很好的配置,它比较适合高级用户和厂商对防火墙进行调试。
1.3.3. 三种技术的比较
纵观当今国内外防火墙技术的发展不难看出,其实WEB 是当前应用程序的趋势,其简单明了的特性为用户发挥产品功能提供了更好的条件。
CLI可以为设备提供非常精确的配置,但需要记忆的命令很多,一般的应用未必用得到,但是资深的网络工程师还是喜欢用CLI的,因为它可以提供更深入更细致的配置,换句话说就是WEB对一些很深入,很细微的配置是无能为力的。
CISCO机器上大命鼎鼎IOS是一个功能全面细致稳定的网络操作系统,但价格比较高昻,而且需要非常专业的CISCO课程知识才能操作。本次设计是本着将比较专业的路由防火墙设置简单化,傻瓜化,平民化,所以本次设计不使用CLI。另外强调CISCO是非常好的产品,非常严谨的设计,稳定的运行,是其他产品无法比拟的,其高端产品符合电信运营网的要求,世界上大部分电信运营商的网络核心都是CISCO的设备,所以有的书说In some area of the world,CISCO is
network, network is CISCO!!!!
WEB界面利用了WEB本身就是一种远程与主机交互的工具,现在非常多的网络产品都提供WEB管理界面,一般的ADSL MODEM, CABLE MODEM, 路由器等等都提供WEB管理界面,虽然WEB有被人攻击的风险,但新的加密技术例如SSH,HTTPS都给WEB提供了有效的保护。
管理界面设计直接关系到防火墙的易用性和安全性。管理主机和防火墙之间的通信一般经过加密。国内比较普遍采用自定义协议、一次性口令进行管理主机与防火墙之间通信(适用GUI界面)。当然也有一些更安全的措施,比如NetEye防火墙除了支持一次性口令的认证之外,还支持了RSA公司的SecurID的Token令牌认证,为防火墙的管理提供了更加可靠的保证。
GUI界面可以设计的比较美观和方便,并且可以自定义协议,也是被多数厂商使用的一个主要原因,这也是基于Web界面管理的防火墙无法做到的。一般基于Web管理界面的防火墙很少可以提供丰富的统计和审计功能,基本不能提供一些统计图和统计表。
目前国内大部分防火墙厂商还不是十分重视管理界面,大多做的比较粗糙,不是十分完善。反观之管理界面固然很重要,然而它毕竟不是一个防火墙的全部,一个系统功能设计完善的防火墙其管理部分必然容易设计。
注意:对于基于Web界面的管理方式存在被恶意用户或者黑客进行口令字攻击的风险。这种口令字攻击既可能来自外部,也可能来自内部。
我们可以设想,管理员在家中打开电脑,调出IE浏览器,在URL栏输入公司防墙的IP地址,这时IE显示出需要输入用户名和口令,网管输入了用户名和口令,回车后登陆进入防火墙。以下以国内某品牌防火墙为例。
但是在管理主机与防火墙通过单独接口通信的情况下,口令字攻击是不存在的。黑客没有防火墙的管理端软件是无法连接防火墙的,即使黑客得到了防火墙的管理端软件,多种认证方式也限制了黑客很难通过远程控制防火墙。
1.3.4. 本课题所采用的技术及原因
本次设计是使用RedHat Linux 9.0系统,在上面运行Apache服务器,Apache服务器执行CGI代码,CGI代码是由古老但实用的Perl语言写成。
选用Linux的原因是它具有非常强大的网络功能,而且执行效率很高,不打开GUI的情况下,在很低配置的电脑上已经可以运行得很好,例如一台P133 ,32m ram,的旧586电脑。我们的防火墙建立后日常的运行是不需要GUI界面的,这样做大大节省了内存,提高了效率,降低出错的机会,降低机器的要求。很多人赞叹Linux的CLI界面竟然可以做到这么多事情!在Windows上很庞大的程序都未必能做得很好的,在Linux上简单的CLI竟然可以做得这么好,这么稳定。这
是CLI的魅力。
Apache,这个引擎几乎是唯一的选择了,Apache是Linux 里最有名的WEB引擎,它拥有非常稳定的运行表现,很低的硬件需求,不同于微软的iis,iis一定要在Windows下运行。只是运行一个Windows XP最少的内存要求就要256M内存,加上Windows庞大的GUI界面,很难保证不出现错误而影响到机器的运行;Apache是可以配置成运行在CLI界面下的,所以它的稳定性自然比较高,难怪世界上大部分的真正的WEB服务器都使用Apache,而不是微软的iis。
采用CGI的原因是CGI可以在Linux下的Apache中利用system()函数调用Linux的Shell命令,本次设计就是用CGI与WEB交互,获得用户想要的操作,然后内部使用CGI调用Shell,实现相应的防火墙,路由,地址转换等功能。
第一章 绪论
1.1. 防火墙技术发展概述
传统的防火墙通常是基于访问控制列表(ACL)进行包过滤的,位于在内部专用网的入口处,所以也俗称"边界防火墙"。随着防火墙技术的发展,防火墙技术也得到了发展,出现了一些新的防火墙技术,如电路级网关技术、应用网关技术和动态包过滤技术,在实际运用中,这些技术差别非常大,有的工作在OSI参考模式的网络层,;有的工作在传输层,还有的工作在应用层。
在这些已出现的防火墙技术中,静态包过滤是最差的安全解决方案,其应用存在着一些不可克服的限制,最明显的表现就是不能检测出基于用户身份的地址欺骗型数据包,并且很容易受到诸如DoS(拒绝服务)、IP地址欺诈等黑客攻击。现在已基本上没有防火墙厂商单独使用这种技术。应用层网关和电路级网关是比较好的安全解决方案,它们在应用层检查数据包。但是,我们不可能对每一个应用都运行这样一个代理服务器,而且部分应用网关技术还要求客户端安装有特殊的软件。这两种解决方案在性能上也有很大的不足之处。动态包过滤是基于连接状态对数据包进行检查,由于动态包过滤解决了静态包过滤的安全限制,并且比代理技术在性能上有了很大的改善,因而目前大多数防火墙厂商都采用这种技术。但是随着主动攻击的增多,状态包过滤技术也面临着巨大的挑战,更需要其它新技术的辅助。
除了访问控制功能外,现在大多数的防火墙制造商在自己的设备上还集成了其它的安全技术,如NAT和VPN、病毒防护等。
1.2. 防火墙的应用
随着新的网络攻击的出现,防火墙技术也有一些新的发展趋势。这主要可以从包过滤技术、防火墙体系结构和防火墙系统管理三方面来体现。
1. 防火墙包过滤技术发展趋势
防火墙基本模型
(1). 一些防火墙厂商把在AAA系统上运用的用户认证及其服务扩展到防火墙中,使其拥有可以支持基于用户角色的安全策略功能。该功能在无线网络应用中非常必要。具有用户身份验证的防火墙通常是采用应用级网关技术的,包过滤技术的防火墙不具有。用户身份验证功能越强,它的安全级别越高,但它给网络通信带来的负面影响也越大,因为用户身份验证需要时间,特别是加密型的用户身份验证。
(2). 多级过滤技术
所谓多级过滤技术,是指防火墙采用多级过滤措施,并辅以鉴别手段。在分组过滤(网络层)一级,过滤掉所有的源路由分组和假冒的IP源地址;在传输层一级,遵循过滤规则,过滤掉所有禁止出或/和入的协议和有害数据包如nuke包、圣诞树包等;在应用网关(应用层)一级,能利用FTP、SMTP等各种网关,控制和监测Internet提供的所用通用服务。这是针对以上各种已有防火墙技术
的不足而产生的一种综合型过滤技术,它可以弥补以上各种单独过滤技术的不足。
这种过滤技术在分层上非常清楚,每种过滤技术对应于不同的网络层,从这个概念出发,又有很多内容可以扩展,为将来的防火墙技术发展打下基础。
(3). 使防火墙具有病毒防护功能。现在通常被称之为"病毒防火墙",当然目前主要还是在个人防火墙中体现,因为它是纯软件形式,更容易实现。这种防火墙技术可以有效地防止病毒在网络中的传播,比等待攻击的发生更加积极。拥有病毒防护功能的防火墙可以大大减少公司的损失。
2. 防火墙的体系结构发展趋势
随着网络应用的增加,对网络带宽提出了更高的要求。这意味着防火墙要能够以非常高的速率处理数据。另外,在以后几年里,多媒体应用将会越来越普遍,它要求数据穿过防火墙所带来的延迟要足够小。为了满足这种需要,一些防火墙制造商开发了基于ASIC的防火墙和基于网络处理器的防火墙。从执行速度的角度看来,基于网络处理器的防火墙也是基于软件的解决方案,它需要在很大程度上依赖于软件的性能,但是由于这类防火墙中有一些专门用于处理数据层面任务的引擎,从而减轻了CPU的负担,该类防火墙的性能要比传统防火墙的性能好许多。
与基于ASIC的纯硬件防火墙相比,基于网络处理器的防火墙具有软件色彩,因而更加具有灵活性。基于ASIC的防火墙使用专门的硬件处理网络数据流,比起前两种类型的防火墙具有更好的性能。但是纯硬件的ASIC防火墙缺乏可编程性,这就使得它缺乏灵活性,从而跟不上防火墙功能的快速发展。理想的解决方案是增加ASIC芯片的可编程性,使其与软件更好地配合。这样的防火墙就可以同时满足来自灵活性和运行性能的要求。
1.3. 本课题研究的目的和内容
1.3.1. 防火墙的远程管理
远程管理是防火墙产品的一种管理功能的扩展,也是防火墙非常实用的功能
之一。用户可以利用防火墙的远程管理功能在办公室管理托管在电信部门的防火墙产品,甚至坐在家中就可以重新调整防火墙的安全规则和策略。
越来越多的用户将防火墙是否提供远程管理功能作为选择防火墙产品的重要参考指标之一。的确,防火墙的远程管理功能为用户的使用和对防火墙的管理提供了更加方便、快捷的手段。
1.3.2. 远程管理的三种技术
目前防火墙产品的远程管理大致使用以下三种技术:一种是基于浏览器的Web界面管理方式,另一种是基于管理端软件的GUI界面,除此之外,还有基于命令行的CLI管理方式(一般通过串口进行配置)。
无论是Web界面管理方式还是基于管理端软件的GUI界面,管理界面一般需要完成对防火墙的配置、管理和监控。CLI命令行的管理方式适合对防火墙进行初始化、网卡配置等基本操作,不适合做丰富的管理功能。
GUI的管理方式:GUI直观,是一种重要的管理工具,适合对防火墙进行复杂的配置,管理多台防火墙,同时支持丰富的审计和日志的功能。
Web管理方式:Web界面管理方式是另一种管理工具。这种方式提供了简单的管理界面,适合那些功能不是很多的防火墙的管理工作。
CLI管理方式:这种方式不适合对防火墙进行管理,事实上,不太可能通过命令行的方式对一个具有复杂功能的防火墙进行很好的配置,它比较适合高级用户和厂商对防火墙进行调试。
1.3.3. 三种技术的比较
纵观当今国内外防火墙技术的发展不难看出,其实WEB 是当前应用程序的趋势,其简单明了的特性为用户发挥产品功能提供了更好的条件。
CLI可以为设备提供非常精确的配置,但需要记忆的命令很多,一般的应用未必用得到,但是资深的网络工程师还是喜欢用CLI的,因为它可以提供更深入更细致的配置,换句话说就是WEB对一些很深入,很细微的配置是无能为力的。
CISCO机器上大命鼎鼎IOS是一个功能全面细致稳定的网络操作系统,但价格比较高昻,而且需要非常专业的CISCO课程知识才能操作。本次设计是本着将比较专业的路由防火墙设置简单化,傻瓜化,平民化,所以本次设计不使用CLI。另外强调CISCO是非常好的产品,非常严谨的设计,稳定的运行,是其他产品无法比拟的,其高端产品符合电信运营网的要求,世界上大部分电信运营商的网络核心都是CISCO的设备,所以有的书说In some area of the world,CISCO is
network, network is CISCO!!!!
WEB界面利用了WEB本身就是一种远程与主机交互的工具,现在非常多的网络产品都提供WEB管理界面,一般的ADSL MODEM, CABLE MODEM, 路由器等等都提供WEB管理界面,虽然WEB有被人攻击的风险,但新的加密技术例如SSH,HTTPS都给WEB提供了有效的保护。
管理界面设计直接关系到防火墙的易用性和安全性。管理主机和防火墙之间的通信一般经过加密。国内比较普遍采用自定义协议、一次性口令进行管理主机与防火墙之间通信(适用GUI界面)。当然也有一些更安全的措施,比如NetEye防火墙除了支持一次性口令的认证之外,还支持了RSA公司的SecurID的Token令牌认证,为防火墙的管理提供了更加可靠的保证。
GUI界面可以设计的比较美观和方便,并且可以自定义协议,也是被多数厂商使用的一个主要原因,这也是基于Web界面管理的防火墙无法做到的。一般基于Web管理界面的防火墙很少可以提供丰富的统计和审计功能,基本不能提供一些统计图和统计表。
目前国内大部分防火墙厂商还不是十分重视管理界面,大多做的比较粗糙,不是十分完善。反观之管理界面固然很重要,然而它毕竟不是一个防火墙的全部,一个系统功能设计完善的防火墙其管理部分必然容易设计。
注意:对于基于Web界面的管理方式存在被恶意用户或者黑客进行口令字攻击的风险。这种口令字攻击既可能来自外部,也可能来自内部。
我们可以设想,管理员在家中打开电脑,调出IE浏览器,在URL栏输入公司防墙的IP地址,这时IE显示出需要输入用户名和口令,网管输入了用户名和口令,回车后登陆进入防火墙。以下以国内某品牌防火墙为例。
但是在管理主机与防火墙通过单独接口通信的情况下,口令字攻击是不存在的。黑客没有防火墙的管理端软件是无法连接防火墙的,即使黑客得到了防火墙的管理端软件,多种认证方式也限制了黑客很难通过远程控制防火墙。
1.3.4. 本课题所采用的技术及原因
本次设计是使用RedHat Linux 9.0系统,在上面运行Apache服务器,Apache服务器执行CGI代码,CGI代码是由古老但实用的Perl语言写成。
选用Linux的原因是它具有非常强大的网络功能,而且执行效率很高,不打开GUI的情况下,在很低配置的电脑上已经可以运行得很好,例如一台P133 ,32m ram,的旧586电脑。我们的防火墙建立后日常的运行是不需要GUI界面的,这样做大大节省了内存,提高了效率,降低出错的机会,降低机器的要求。很多人赞叹Linux的CLI界面竟然可以做到这么多事情!在Windows上很庞大的程序都未必能做得很好的,在Linux上简单的CLI竟然可以做得这么好,这么稳定。这
是CLI的魅力。
Apache,这个引擎几乎是唯一的选择了,Apache是Linux 里最有名的WEB引擎,它拥有非常稳定的运行表现,很低的硬件需求,不同于微软的iis,iis一定要在Windows下运行。只是运行一个Windows XP最少的内存要求就要256M内存,加上Windows庞大的GUI界面,很难保证不出现错误而影响到机器的运行;Apache是可以配置成运行在CLI界面下的,所以它的稳定性自然比较高,难怪世界上大部分的真正的WEB服务器都使用Apache,而不是微软的iis。
采用CGI的原因是CGI可以在Linux下的Apache中利用system()函数调用Linux的Shell命令,本次设计就是用CGI与WEB交互,获得用户想要的操作,然后内部使用CGI调用Shell,实现相应的防火墙,路由,地址转换等功能。