网络/Network - TCP/IP协议栈 - 网络安全( 二 )


在包过滤防火墙中,防火墙直接对流经的TCP和UDP包进行处理 。而应用网关防火墙需要对TCP和UDP包进行解析,处理成应用层的数据协议,如HTTP 。因此应用网关防火墙对于网络的性能会产生负面影响,而且不是所有的应用都能够很好地兼容代理的存在,所以部署应用网关防火墙有可能对系统的可用性产生影响 。除此之外,在应用网关防火墙中,服务端看到的请求都来自于代理,这会导致服务端无法有效地追踪请求的来源 。
尽管应用网关防火墙有这些潜在的危害存在,但是它能处理的信息最多,能够提供的安全防护能力也最强 。
由于Web攻击是黑客常见的攻击手段,因此,应用网关防火墙也逐渐演变成了专门的Web防火墙,在之后的课程中,我们会详细介绍,这里暂时就不多说啦 。
3.状态检测防火墙
状态检测防火墙是包过滤防火墙的一种升级,它同样工作在网络层和传输层之上 。
状态检测和包过滤防火墙最大的不同在于,它会以连接的形式来“看待”低层级的TCP和UDP数据包 。怎么理解呢?
我来举个简单的例子 。
当客户端发起一次完整的HTTP请求时,会需要进行“TCP三次握手”建立连接(SYN+ACK数据包),HTTP请求和响应的数据往往也是通过多个数据包才能完整发送 。传统的包过滤防火墙只能基于每一个数据包进行判断,比如在“握手”的过程中,包过滤防火墙会分别看到SYN、SYN+ACK、ACK这三个数据包,并对每一个数据包进行判断 。而事实上,这三个数据包(SYN、SYN+ACK、ACK)代表的是一次握手请求 。所以,状态检测防火墙会尝试将这一连串的数据包组成一次完整的连接请求,从而获得一个更全面的视角,大大提高其安全性 。
对比应用网关防火墙,状态检测防火墙通常不会尝试将数据包构建成高层级的数据,也就是说它不会尝试去解析整个HTTP请求中的内容 。因此,状态检测防火墙能获得更优的性能 。目前市面上普遍采用的,都是状态检测防火墙 。
防火墙可以为网络边界提供哪些保护呢?
网络边界之间的信用层级通常是不一样的,因此,我们需要利用防火墙在网络边界上提供必要的保护,使得跨越边界的数据和连接相对可信 。那防火墙究竟可以为网络边界提供哪些保护呢?
下面,我就详细来讲一讲 。
1.保护操作系统的漏洞
在操作系统的发展历程中,出现过很多臭名昭著的漏洞 。比如:由于对网络请求处理不当,导致的DDoS攻击(如死亡之PING、SYN洪泛等);由于高危服务默认开放导致的代码执行(如熊猫烧香扫描的是135和445端口的弱密钥);由于服务漏洞导致的代码执行(如永恒之蓝利用的SMB漏洞) 。
如果在这些漏洞曝光时,我们能即时更新操作系统补丁、关闭对应服务,那自然是能够避免系统和应用受到侵害 。但是,在通常情况下,尤其是当公司扩大规模的时候,服务器管理员意识到问题并采取措施的这段响应时间,已经足够病毒或者蠕虫进行大规模的传播了 。
这时,防火墙的存在就很有必要了 。一方面,防火墙可以迅速对全网的服务器进行保护,拒绝向高危端口发起的请求,如中的135、137和445等,这也就是我们之前所说的“虚拟补丁” 。另一方面,更加智能的防火墙,能够检测到整体流量中的异常变化,比如,突然出现了针对某个端口的大量请求,这就说明系统或者应用中很可能出现了新的漏洞,这时,防火墙可以产生报警甚至自动对异常的请求进行拦截,及时避免网络中的操作系统受到攻击 。
2.阻止非法的信息流动
在网络边界之间流动的数据,往往都会受到一定的规则约束 。最著名的有中国的防火长城(Great ) 。