文档介绍:第十讲: 防火墙关键技术
防火墙只是保护网络安全与保密的一种概念,并无严格的定义。防火墙的研究与开发正日新月异。各种新产品、新功能不断涌现。到目前为止,防火墙所涉及的关键技术包括:包过滤技术、代理技术、电路级网关技术、状态检查技术、地址翻译技术、加密技术、虚拟网技术、安全审计技术、安全内核技术、身份认证技术、负载平衡技术、内容安全技术等。其中有些技术(比如加密、认证等)已经在前一讲中作了介绍,所以,此处再介绍一些关键技术。
A: 包过滤技术
包过滤技术一般由一个包检查模块来实现。包过滤可以安装在一个双宿网关上或一个路由器上实现,当然也可以安装在一台服务器上。数据包过滤可以控制站点与站点、站点与网络、网络与网络之间的相互访问,但不能控制传输的数据的内容,因为内容是应用层数据,不是包过滤系统所能辨认的,数据包过滤允许你在单个地方为整个网络提供特别的保护。
包检查模块深入到操作系统的核心,在操作系统或路由器转发包之前拦截所有的数据包。当把包过滤防火墙安装在网关上之后,包过滤检查模块深入到系统的在网络层和数据链路层之间。因为数据链路层是事实上的网卡(NIC),网络层是第一层协议堆栈,所以防火墙位于软件层次的最底层。
通过检查模块,防火墙能拦截和检查所有出站和进站的数据。防火墙检查模块首先验证这个包是否符合过滤规则,不管是否符合过滤规则,防火墙一般要记录数据包情况,不符合规则的包要进行报警或通知管理员。对丢弃的数据包,防火墙可以给发方一个消息,也可以不发。这要取决于包过滤策略,如果都返回一个消息,攻击者可能会根据拒绝包的类型猜测包过滤规则的大致情况。所以对是否发一个返回消息给发送者要慎重。包检查模块能检查包中的所有信息,一般是网络层的IP头和传输层的头。包过滤一般要检查下面几项:
IP源地址
IP目标地址
协议类型(TCP包、UDP包、ICMP包)
TCP或UDP的源端口
TCP或UDP的目标端口
ICMP消息类型
TCP报头中的ACK位
此外,TCP的序列号、确认号,IP校验和、分割偏移也往往是要检查的选项。
IP分段字段用来确定数据包在传输过程中是否被重新分段。分段带来的问题是只有第一个段有高层协议的报头(如TCP头),而其它的段中没有。数据包过滤器一般是让非首段包通过,而仅对第一个分段进行过滤。因为目标主机如果得不到第一个分段,也就不能组装一个完整的数据包,因此这样做是可以接受的。强大的防火墙应该考虑非第一个分段有可能泄露有用的信息。比如出站的NFS数据包几乎肯定要分段,内部网中的敏感数据经过NFS传输可能会泄露。因此防火墙要根据第一个分段的操作策略来决定是否转发非第一个分段。
IP分段也经常用来进行拒绝服务器攻击。攻击者向目标主机发非第一个分段包,防火墙对这种包不作处理而直接让其通过,目标主机得不到第一个分段来重组数据包时,会放弃该包,同时发一个ICMP“数据组装超时”的包给源主机。如果目标主机大量收到这种非第一个分段包,它需要占用大量的CPU时间来进行处理。当达到一定极限之后,目标主机就不能处理正常的服务,而造成拒绝服务攻击。此外返回的ICMP也会泄露有用的消息,因此对这种ICMP,防火墙应该过滤掉。
TCP是面向连接的可靠传输协议,TCP的可靠主要是通过下面三个条来保证的:
目标主机将按发送的顺序接受应用数据,
目标主机将接受所有的应用数据,
目标主机将不重复接受任何数据。
TCP协议通过对错误的数据重传来保证数据可靠到达,并且事先要建立起连接才能传输。如果要阻止TCP的连接,仅阻止第一个连接请求包就够了。因为没有第一个数据包,接收端不会把之后的数据组装成数据流,且不会建立起连接。
UDP数据包和TCP数据包有相似之处,UDP数据包中也有源端口和目标端口,但没有确认号、序列号、ACK位,故UDP数据包的过滤特性和TCP数据包有所不同。包过滤系统无法检查UDP包是客户到服务器的请求,还是服务器对客户的响应。
要对UDP数据包进行过滤,防火墙应有动态数据包过滤的特点,就是说防火墙应记住流出的UDP数据包,当一个UDP数据包要进入防火墙时,防火墙会看它是否和流出的UDP数据包相配,若相匹配则允许它进入,否则阻塞该数据包。
UDP的返回包的特点是目标端口是请求包的源端口,目标地址是请求包的源地址,源端口是请求包的目的端口,源地址是请求包的目标地址。
ICMP数据包是用来响应请求、应答、超时、无法到达目标和重定向等。包过滤应根据ICMP的类型来进行过滤。
ICMP数据包用于主机之间、主机和路由器之间的路径、流量控制、差错控制和阻塞控制等,包过滤应根据ICMP的类型来进行过滤。ICMP数据包被封装在IP包中。不同的消息类型用于不同类型的机器,如有的消息只能由路由器发