防火墙技术概述
防火墙是位于两个(或多个)网络之间执行访问控制的软件和硬件系统,根据访问控制规则对进出网络的数据流进行过滤
防火墙技术主要用于内部网络和外部网络之间,限制外部用户访问内部网络(外部攻击),也限制内部网络用户访问外部网络(引入病毒)
一般企业架设的网络结构如下所示:
- 内部网络:企业内部的局域网,禁止外部网络访问,同时对外部网络的访问权有限
- DMZ:对外部提供服务的服务器,例如web服务器等放在该网段它单独于内部网络,为内外网之间的通信起缓冲作用
现在很多设备中都设有简单的防火墙,例如路由器、Windows和linux系统中自带的防火墙
防火墙是不同网络安全域间通信的唯一通道,根据相关规则和安全策略来进行不同的处理(允许、拒绝、监视、记录)
防火墙功能
访问控制功能
最基本和最重要的功能,禁止或允许特定用户访问特定资源
内容控制功能
对内容进行审查,如过虑不良信息的传播,防止一些病毒文件的传播
防火墙还可以关闭服务端口号,来禁用某些不安全的服务
日志功能
对所有的访问进行日志记录,对网络使用情况做出统计
检测网络攻击并告警
发生可疑访问时,可以进行监测和告警
集中管理
针对不同的网络情况和安全需要,指定不同的安全策略,在防火墙上集中实施
其他功能
流量控制、网络地址转换(NAT)、虚拟专用网络(VPN)等
防火墙分类
按在网络协议栈中的过滤层次可以分为:包过滤防火墙、电路级防火墙、应用级防火墙(代理防火墙)
一般防火墙的过滤层次越高,获得的信息越丰富,安全保护等级越高,速度也越慢,我一开始对此有疑问,感觉层次越往下不是封装的内容越多吗?现在我感觉可能是这样的虽然越往下封装的信息越完善,但是这里所说的作用层次只对该层协议所添加的信息进行控制,例如网络层可能只对IP地址进行控制,而不去控制已封装的其他信息,这与网络协议的分层策略是相符合的
包过滤防火墙
也称为分组过滤防火墙,根据网络层的协议信息进行控制,也用了传输层的协议、端口号等信息
目前的路由器都集成了简单的包过滤功能
网络管理员首先根据企业的安全策略定义一组访问控制规则,然后防火墙的内存中会生成一张与访问控制规则相对应的访问控制列表,防火墙按规则处理数据包,若有记录,则按规定的操作对其操作,没有的话,采用默认操作(默认丢弃和默认允许)
静态包过滤
访问控制列表不会动态变化,规则配置复杂,特别是对于需要打开动态端口的应用
过滤规则只利用了IP、TCP/UDP、ICMP报头中的几个字段,不会检查数据段的内容
如:来源地的IP地址、目的地的IP地址、协议类型(TCP/UDP)、TCP或UDP的源端口、TCP或UDP的目的端口、ICMP的类型
独立过滤单个报文,对数据包的检测是孤立、无状态的
- 独立:报文与报文之间不相互关联,仅检查当前的数据包,是否允许其通过只取决于当前数据包
如图所示:
具体处理过程
- 接收每个到达防火墙的数据包
- 对数据包按序匹配过滤原则,对数据包的IP头和传输协议头字段进行检查。如果数据包的头信息与一组规则相匹配,则根据该规则确定是转发还是丢弃该数据包;如果没有规则与之匹配,则施加默认规则
优点
- 对网络性能影响小,只简单根据几个字段来控制,当规则较多时,才会感觉性能下降
- 成本较低,因为路由器已经集成了简单包过滤功能
- 对用户透明,与应用层无关,不用改动应用程序,用户感觉不到它的存在,使用方便
缺点
- 安全性低,不能对数据包进行更高层的分析和过滤
- 缺少状态感知能力,一些需要动态分配端口的服务需要防火墙一开始就进行配置,无法调节
- 容易遭受IP欺骗攻击,没有对协议细节进行分析
- 创建访问控制规则比较困难,创建一个完美的这是需要认真对系统和策略进行研究分析的
动态包过滤
像前面所说,一些需要动态打开端口的服务在静态包过滤中很不方便,所以出现了动态包过滤
动态包过滤技术是根据网络当前的状态检查数据包,根据当前所交换的信息动态调整过滤规则表
动态包过滤技术能够通过检查应用程序信息以及连接信息,来判断某个端口是否需要临时打开。当传输结束时,端口又可以马上恢复为关闭状态。这样的话就可以保证主机的端口没有一个是永远打开的,那么外界也就无从连接主机。只有在主机主动地跟外界连接时,其他的机器才可以跟它连接。跟外界链接时,将其记录,后来的信息符合让其通过,然后关闭。
动态包过滤防火墙不仅采用包过滤类似的方法来监控网络传输,还会更进一步检查报文数据流的内容与行为,并非只是单纯地过滤个别报文。
具体处理过程
动态包过滤持续追踪连接状态直到连接结束为止,借以判断是否为有效的连接而允许报文通过
建立每个连接阶段的状态表,然后根据此前后关联状况来判断是否允许或拒绝此报文通过
工作过程如下图所示:
一句话:动态包过滤就是为每个由内部发起的连接,建立一个连接状态表,根据此表来判断返回的信息是否是该连接中的
优点
- 高安全性,相比于静态包过滤而言,具有状态感知能力,所以防火墙可以区分连接的发起方与接收方,也可以通过检查数据包的状态阻断一些攻击行为。与此同时,对于不确定端口的协议数据包,防火墙也可以通过分析打开相应的端口
- 高性能,由于防火墙在连接建立后保存了连接状态,当后续数据包通过防火墙时,不再需要烦琐的规则匹配过程,这就减少了访问控制规则数量增加对防火墙性能造成的影响,因此其性能比静态包过滤防火墙好很多
- 伸缩性和易拓展性,动态包过滤防火墙不像代理防火墙那样,每一个应用对应一个服务程序,这样所能提供的服务是有限的,而且当增加一个新的服务时,必须为新的服务开发相应的服务程序,这样系统的可伸缩性和可扩展性降低,动态包过滤防火墙不区分每个具体的应用,对应用程序透明,只是根据从数据包中提取的信息、对应的安全策略及过滤规则处理数据包,当有一个新的应用时,它能动态产生新的应用的规则,而不用另外写代码,因此,具有很好的伸缩性和扩展性
- 应用范围广,动态包过滤防火墙不仅支持基于TCP的应用,而且支持基于无连接协议的应用,如RPC和基于UDP的应用。对于无连接的协议,静态包过滤防火墙和应用代理对此类应用要么不支持,要么开放一个大范围的UDP端口,这样暴露了内部网,降低了安全性。动态包过滤防火墙对基于UDP应用安全的实现是通过在UDP通信之上保持一个虚拟连接来实现的。防火墙保存通过网关的每一个连接的状态信息,允许穿过防火墙的UDP请求包被记录,当UDP包在相反方向上通过时,依据连接状态表确定该UDP包是否是被授权的,若已被授权,则通过,否则拒绝。如果在指定的一段时间响应数据包没有到达,则连接超时,该连接被阻塞。动态包过滤防火墙也支持RPC,因为对于RPC服务来说,其端口号是不固定的,因此,简单的跟踪端口号是不能实现该种服务的安全的,动态包过滤防火墙通过动态端口映射图记录端口号,为验证该连接还保存连接状态与程序号等,通过动态端口映射图来实现此类应用的安全。
缺点
- 仍没有对数据包的内容进行过滤,相比应用级安全性弱
- 如果动态包过滤防火墙在连接建立时没有遵循RFC建议的三步握手协议,就会引入额外的风险,例如如果防火墙在连接建立时仅使用两次握手,很可能导致防火墙在DoS/DDoS攻击时因耗尽所有资源而停止响应,因为如果仅两次握手,那么无用请求数据就会建立连接,然后防火墙中就会保存大量的无用的连接状态
- 规则仍然难于设计创建,顺序很重要
电路级防火墙
根据传输层的协议信息进行过滤,很少单独存在,一般作为应用级防火墙的一个模块
应用级防火墙
也称为代理防火墙,根据应用层协议的信息进行过滤,代理是特定于某一个应用的。例如http代理等
应用代理包括客户代理和服务器代理,如下图所示:
即内外网之间进行交互时,并不是直接进行连接,而是通过代理服务器进行
具体处理过程
应用级防火墙截获进出网络的数据包,对数据包的内容进行检查
如果符合所制定的安全规则,则允许数据通过;否则根据安全策略的要求进行处理。比如:可以直接丢弃数据包,也可以删除数据包的不良内容,将改变的数据包传递到通信的另一端。
优点
- 高安全性,由于应用代理避免了服务器和客户机之间的直接连接,其安全性是最高的。应用级防火墙完全可以对服务(如HTTP、FTP等)的命令字过滤,也可以实现内容过滤,甚至可以进行病毒的过滤。
- 强大的认证功能,由于应用级防火墙在应用层实现认证,因此它可以实现的认证方式比电路级防火墙要丰富得多
- 日志记录详细,应用级网关可以记录用户通过HTTP访问了哪些网站页面、通过FTP上传或下载了什么文件、通过SMTP给谁发送了邮件,甚至邮件的主题、附件等信息,都可以作为日志的内容
- 规则配置简单,在配置应用级网关时关注的重点就是应用服务,而不必像配置包过滤防火墙一样还要考虑规则顺序的问题
缺点
- 灵活性差,每一种应用都需要设置一个代理,每当出现一种新的应用新的协议时,必须编写新的代理程序,实际中集成了包过滤和电路级过滤
- 虽然应用级防火墙防火墙具有很高的安全性,但是它有一个固有的缺点,那就是缺乏透明性,即你所看到的未必是原来的信息
- 各种代理配置方法不同,配置繁琐
- 性能不高,制约网络
防火墙部署模式
有三种典型模式:屏蔽主机模式、双宿/多宿主机模式、屏蔽子网模式
在这三种模式中都有一个很重要的主机,堡垒主机
堡垒主机
堡垒主机(Bastion Host)是一种配置了较为全面的安全防范措施的网络上的计算机,它为网络间的通信提供了一个阻塞点。通常堡垒主机可以用作应用级和电路级网关的平台,是一个组织机构网络安全的中心主机。它和蜜罐是不同的,蜜罐是诱使敌人攻击的,而堡垒主机是那种防范很完备的出入口,是进入内部网络的一个检查点,达到把整个网络的安全问题集中在某个主机上解决的目的,通常有两块网卡,一个连接内网,一个连接外网
堡垒主机上通常可以运行代理服务,如Telnet,DNS,FTP,SMTP以及用户认证等。
防火墙或包过滤路由器也可以看作是堡垒主机,是暴露在外网的,有些蜜罐也属于堡垒主机,作为牺牲品保全网络,吸引入侵者的注意力,耗费攻击真正网络主机的时间并且使追踪入侵企图变得更加容易。
这里要区别于堡垒机,堡垒机是一种运维安全审计系统,主要的功能是对运维人员的运维操作进行审计和权限控制。
因为堡垒主机对网络安全至关重要,对它必须进行完善的防御。这就是说,堡垒主机是由网络管理员严密监视的。
屏蔽主机模式
如下所示:
实质是包过滤和代理服务的结合,堡垒主机提供身份认证和代理服务功能
优点
- 这种配置能够实现数据包级过滤和应用级过滤,在定义安全策略时有相当的灵活性
- 在入侵者威胁到内部网络的安全以前,必须能够“穿透”两个独立的系统(包过滤路由器和堡垒主机)
- 这种配置在对Internet进行直接访问时,有更大的灵活性。例如,内部网络中有一个Web服务器,这时可以配置路由器允许网络流量在信息服务器和Internet之间传输
缺点
该模式为单宿主机模式,一旦过滤路由器遭到破坏,堡垒主机就可能被越过,使得内部网络完全暴露
双宿/多宿主机模式
如下所示:
通常用一台装有两块或多块网卡的堡垒主机作为防火墙,每块网卡各自与受保护网络和外部网连接,关闭IP转发,就会避免一旦被攻破其中一个而导致可以连接到其他网络,其网关功能是通过提供代理服务而不是通过IP转发来实现的。显然只有特定类型的协议请求才能被代理服务处理。于是,网关采用了“缺省拒绝”策略以得到很高的安全性。
优点
简单明了,易于实现,成本低,能够为内外网提供检测、认证、日志等功能
缺点
一旦黑客侵入堡垒主机并打开其IP转发功能,则任何网上用户均可随意访问内部网络。因此,双宿/多宿网关防火墙对不可信任的外部主机的访问必须进行严格的身份验证。
屏蔽子网模式
如下所示:
这三种模式中最为安全的一种配置模式
使用了两个包过滤路由器,一个位于堡垒主机和外部网络之间,另一个位于堡垒主机和内部网络之间,然后这两个包过滤路由器间就形成了一个被隔离的子网
该子网被称为“非军事区”(DMZ),这一网络所受到的威胁不会影响到内部网络,网络管理员可以将堡垒主机、Web服务器、E-mail服务器等公用服务器放在非军事区网络中,将重要的数据放在内部网服务器上,内部包过滤路由器只允许源于堡垒主机的数据包进入
优点
安全,即使外部路由器和堡垒主机被入侵者控制,内部网络仍受到内部包过滤路由器的保护
缺点
成本高,两台包过滤路由器
防火墙评价
防火墙的弊端
- 不能防范不经由防火墙的攻击,例如,如果允许从受保护网内部不受限制的向外拨号,一些用户可以形成与Internet的直接的SLIP。从而绕过防火墙,造成一个潜在的后门攻击渠道。
SLIP
串行线路网际协议(Serial Line Internet Protocol)是一个在串行线路上对IP分组进行封装的简单的面向字符的协议,用以使用户通过电话线和调制解调器接入Internet。
- 不能防止有毒文件的传播和恶意数据的执行
- 制约网络,安装、管理配置等复杂
性能指标
吞吐量
该参数体现了防火墙转发数据包的能力。它决定了每秒钟可以通过防火墙的最大数据流量,通常用防火墙在不丢包的条件下每秒转发包的最大数目来表示。该参数以位每秒(bit/s)或包每秒(p/s)为单位。
时延
直接体现了在系统重载的情况下,防火墙是否会成为网络访问服务的瓶颈。
时延指的是在防火墙最大吞吐量的情况下,数据包从到达防火墙到被防火墙转发出去的时间间隔。
丢包率
丢包率参数指明防火墙在不同负载的情况下,因为来不及处理而不得不丢弃的数据包占收到的数据包总数的比例,这是一个服务的可用性参数。
背对背
防火墙的背对背指的是从空闲状态开始,以传输介质极限传输速率发送相当数量的固定长度的帧,当出现第一个帧丢失时,发送的帧数。
背对背包的技术指标结果能体现出被测防火墙的缓冲容量,网络上经常有一些应用会产生大量的突发数据包(如NFS、备份、路由更新等),而且这样的数据包的丢失可能会产生更多的数据包,强大缓冲能力可以减小这种突发对网络造成的影响,因此,背对背指标描述了网络设备承受突发数据的能力,即对突发数据的缓冲能力。
最大位转发速率
防火墙的位转发率指在特定负载下每秒钟防火墙将允许通过的数据流转发至正确的目的接口的位数。最大位转发率指在不同的负载下反复测量得出的位转发率数值中的最大值。
最大并发连接数
最大并发连接数指穿越防火墙的主机之间或主机与防火墙之间能同时建立的最大连接数。这项性能可以反映一定流量下防火墙所能顺利建立和保持的并发连接数及一定数量的连接情况下防火墙的吞吐量变化。
并发连接数主要反映了防火墙建立和维持TCP连接的性能,同时也能通过并发连接数的大小体现防火墙对来自于客户端的TCP连接请求的响应能力。
最大并发连接建立速率
在此项测试中,分别测试防火墙的每秒所能建立起的TCP/HTTP连接数及防火墙所能保持的最大TCP/HTTP连接数。 测试在一条安全规则下打开和关闭NAT(静态)对TCP连接的新建能力和保持能力。
有效通过率
根据RFC 2647对防火墙测试规范中定义的一个重要的指标:good put (防火墙的有效通过率)。
由于防火墙在使用过程中,总会有数据包的丢失和重发,因此,简单测试防火墙的通过率是片面的,good put从应用层测试防火墙的真实有效的传输数据包速率。简单地说,就是防火墙端口的总转发数据量(bit/s)减去丢失的和重发的数据量(bit/s)。
其他指标
还包括最大策略数、平均无故障间隔时间、支持的最大用户数等。