上述漏洞的最常见的后果:
执行代码:在漏洞导致代码被非法执行时,一些有害的代码就会甚嚣尘上。这包括但不限于黑客编写的代码。
更改目标源:在一个漏洞准许一个源的状态被一个攻击者非法利用时,就会发生目标源的更改。源可以是一台主机、一个防火墙的规则表,或者是一个防火墙所保护的任何实体。
对目标源的更改:在某漏洞准许攻击者非法访问某些源时就会发生对目标源的访问。同样地,这种源可以是防火墙所保护的任何实体。这种漏洞影响的实例包括,准许攻击者读取防火墙的规则表,或者是可以发现在一台受保护的主机上有哪些服务。
拒绝服务攻击:在一个漏洞被利用来中断某种提供给合法用户的服务时,就会发生拒绝服务攻击。这种情况中的服务可以是数据包转发、网络地址转换、管理等。
最好使用一些自动化的工具来确认防火墙的漏洞,如漏洞扫描器。这种扫描器通过将防火墙的配置与已知的漏洞相比较而决定防火墙的漏洞所在。下面是业界最常用的一些工具:
一种称为活动漏洞扫描器,如ISS Internet Scanner,赛门铁克的NetRecon,Nessus(下文将有介绍)。
另外一种称为基于主机的扫描器,如微软的基准安全分析程序(MBSA),ISS System Scanner,赛门铁克的Enterprise Security Manager。
下面的内容将涉及到网络数据包的流动问题。漏洞扫描程序应当与其它的专业工具相互补充,分析通过网络的数据包。
扫描网络
除了直接评估规则库的错误配置和漏洞,管理员也应当在每一个可能的接口上扫描网络自身,不管是内部的接口还是外部的接口。要实现这些扫描,可以使用网络映射和端口侦察工具,如NMAP、hping、Superscan、Nemesis。也可以使用被动漏洞评估工具(数据包嗅探程序),这些工具可以捕获和显示网络通信,并加以分析。这些工具的例子包括Wireshark、tcpdump、windump。最后一点,还有主动漏洞扫描工具,经过精心编制的探查插件来扫描网络,查看目标的响应。主动扫描工具有Nessus、Saint、SARA等。
使用上述工具,用户可以执行一些基本的测试,如:
使用TCP和UDP协议扫描防火墙上的全部65535个端口。
执行ping扫描,查看响应请求是否可以通过。
执行SYN扫描子网,查看开放的端口(为代理使用一个完整的TCP连接)。
借助ACK数据包执行扫描,以查看其处理方式是否有所不同。
执行慢速的SYN扫描,以查看是否检测到端口扫描。
借助FIN数据包执行扫描,以查看其处理方式是否有所不同。
对ACK数据包进行分段,以查看其处理方式是否有所不同。
执行UDP扫描子网,以查看开放的端口。
我们建议安全管理员们更多地使用多种工具来扫描和监视网络。多个工具的使用将会减少诸多似是而非及“似非而是”的情况,会给网络一个更加完整的映像。
在扫描过程中,要保障配置好嗅探程序,以监视通过防火墙的数据通信。不要单独轻信防火墙的日志。
使用nmap
在执行上述的基本测试时,下面的屏幕截图展示了NMAP的基本使用。注意,有几种类型的信息,如开放的端口和运行的服务,都被当作了输出信息。
对防火墙的全部65535个端口的TCP和UDP扫描如下图6所示,其语法是:Nmap –sTU –p1-65535 <目标>
图6
下图7展示的是执行ping扫描,查看响应请求是否可以通过,其语法是:Nmap –PE <目标系统的IP地址>
图7
下图8展示的是运行SYN扫描子网,查找开放的端口(为代理使用一个完整的TCP连接),其语法是:
Nmap –sS <目标系统的IP地址>
图8
下图9展示的是借助FIN数据包实施的扫描,目的是决定是否以不同的方式处理。其语法是:
Nmap –sF <目标系统的IP地址>
图9
下图10展示的是借助ACK数据包扫描系统,以查看其处理方式是否不同,其语法是:
图10
Nmap –sA <目标系统的IP地址>
下图11展示的是运行UDP扫描子网,以查找开放的端口。
Nmap –sU <目标系统IP地址>/24
图11
使用hping2
另外一个好工具是hping2,它是一个命令行的TCP/IP数据包分析程序。它效仿了unix的ping命令,支持TCP、UDP、ICMP等协议,支持traceroute模式,即通过一个隐蔽通道来发送文件,还有许多其它的特性。所有的报头字段都可用命令行工具来修改和控制。此工具的有些使用是针对防火墙的测试的,其它的使用包括高级端口扫描、使用不同的网络协议实施网络测试、服务类型、分段、最大传输单元(MTU)发现、所支持协议的高级追踪(traceroute)、远程操作系统的指纹识别、远程正常运行时间的推测、TCP/IP协议堆栈的审计等。
执行hping的UDP端口123的扫描,如下图12:
图12
发送一个ICMP时间戳请求数据包,如下图13:
图13
运行hping,执行SYN扫描1号端口,如下图14:
图14
修改控制
如果不经常检查,即使配置得当的防火墙规则库很快也会“弱不禁风”。有些管理员们在配置好了防火墙的规则后,就以为可以高枕无忧了。这种现象司空见惯。要知道,每时每刻都有可能发现新的操作系统漏洞和防火墙的新漏洞。如果防火堵的操作系统和软件(包括规则库)没有及时更新,防火墙就无法抵挡住攻击。也就无法承诺什么谨慎性、合理性等要求了。
然而,对防火墙的更改绝不凭一时冲动或心血来潮。一个恰当的改变管理程序,应当是总体安全策略的一部分。不管何时修改了规则,下面的信息都应当作为注释包括进去:
修改规则的人员姓名
修改的日期和时间
修改的原因
管理部门的许可
这里,最好的说法是这种检查是定制的,是根据基本要求而进行的自动检查。你为什么不让系统为自己做这项工作,并且如果不经过正确的更改程序,就让它及时发出警告呢?
验证防火墙
在防火墙被投入使用之前(一个不断变化的环境),应当验证其配置。验证意味着检查防火墙的配置是否能够使防火墙执行安全功能,检查它是否与单位的安全策略相一致。用户无法通过查看策略自身而验证防火墙。策略是一个指示器,但未必表明真实状态。保障防火墙可以正常运行的唯一方法是使用其控制机制来测试它。要验证防火墙,你需要向它发送数据包。
验证防火墙需要持续地监视其健康状态和稳定性。应当不断地监视关于防火墙规则库的适当的更改管理程序和策略。每形成一条规则,防火墙都应当作为一个整体而验证,而不仅仅是在添加或改变某条特定规则时进行验证。
应当立即调查非正常的通信模式。如果一台服务通常情况下通过防火墙仅接收少量的数据通信,但突然某一天有海量的通信通过了防火墙,那么这种情况可能需要深入调查。虽然在某些情况下,有可能出现一些正常的突然性的通信激增(例如一台不同寻常的服务器),但这种突然性也有可能意味着错误配置或攻击的开始。
规则的违反应当作为事件来对待。查看由防火墙所禁止的通信可能导致一些有趣的发现,但即使最小的单位也可以看看所有的日志。对于源自于内部网络的通信来说,这一点尤其重要。这个问题最常见的原因往往是一个错误配置的系统或是一个不清楚通信限制的用户,不过,对违反规则活动的分析也可能发现一些通过设备发送恶意通信的请求。
应当定期检测源自内部可信任网络的探测活动。这是十分有意思的,因为这有可能代表着一个受损的内部系统试图扫描互联网主机的活动,也有可能意味着某个内部用户在运行一个扫描工具。这两种情况都值得注意。
除了前面提到的这些问题,管理员也应当经常监视防火墙的日志文件,检查一些重大的事件。这分为三大类型,一是关键的系统问题(如硬件失效或性能瓶颈),二是重大的经授权的管理事件(如规则集的改变、管理账户的改变),三是网络连接日志。解析如下:
主机操作系统日志消息 为了行文的需要,笔者在最小的安全要求下捕获了这种数据,也记录了有关的操作系统问题。
网络界面的更改 我们需要测试默认的操作系统日志是否捕获了这种信息,或者说这种防火墙软件是否在什么地方作了记录。
对防火墙策略的更改
系统损害
网络连接日志 这些日志中的信息包括丢弃或拒绝的连接请求、准许连接的时间、协议、IP地址、用户名等,还有传输的数据量。
有一些工具可以使防火墙记录的监视自动化,包括实时警告和通知、定制的报告等。
对于处理机密数据的防火墙的配置检查应当是强制性的。事实上,付款卡行业数据安全标准(PCI-DSS)要求定期(如每季检查一次)检查防火墙系统的付款处理问题。