传统上的网络管理者通常是通过SNMP (Simple Network Management Protocol) 协议的工具从支持SNMP的网络设施搜集网络流量数据,虽然通过这种方式取得信息不会造成处理上过重的负担,但是SNMP 提供的只是粗糙、简略的资料。这些信息只能让管理者发现问题,却无法进一步解决问题。
那么有没有另外一种能提供更详细网络信息的技术呢?网络探针(sniffer) 或是类似的监听工具开始被部署在网络设备上,用来捕捉流过的数据包并将数据包加以翻译,找出数据包头中字段的相关信息,并进一步分析其内容以取得更详细的信息。
虽然通过数据包监听工具可以取得更详细的网络信息,但监听工具通常专注在单一网络数据包的内容,所以网络管理者很难从监听工具所提供的信息来掌握整体网络的状态。此外,分析数据包非常耗费时间,而且数据包监听所储存并需要分析的数据量非常庞大,对于资源和人员的消耗是惊人的,这种方式显然不适合高校环境下的网络管理。
NetFlow 便是在这种情况下应运而生并成为网管人员热门工具的,越来越多的学校在通过这一工具了解网络使用情形。NetFlow 不仅能提供更详细的网络信息,而且其分析方式避免了网络频宽及运算资源过重的负担。 NetFlow 运作机制
NetFlow 是由Cisco 公司的Darren Kerr 和Barry Bruins 在1996 年开发的一套网络流量监测技术,目前已内建在大部分Cisco 路由器上,Juniper、Ex-treme、港湾网络等网络设备供货商也支持NetFlow 技术,它已逐渐成为大家都能接受的标准。 NetFlow 本身是一套网络流量统计协议,其主要原理是根据网络数据包传输时,连续相邻的数据包通常是往相同目的地IP 地址传送的特性,配合cache 快取机制,当网络管理者开启路由器或交换机接口的NetFlow 功能时,设备会在接收数据包时分析其数据包的标头部分来取得流量资料,并将所接到的数据包流量信息汇整成一笔一笔的Flow,在NetFlow 协议中Flow 是被定义为两端点间单一方向连续的数据流,这意味着每一个网络的连接都会被分别纪录成两笔Flow 数据,其中一笔记录从客户端连到服务器端,另外随着一笔纪录从服务器端连回到客户端的信息。
网络设备通过以下字段来区分每一笔Flow:来源IP 地址(source IP address)、来源端口号(source port number)、目的IP 位址(destination IP address)、目的端口号(destination port number)、协议种类(protocol type)、服务种类(type of service)及路由器输入接口(router input interface),任何时间当设备接收到新的数据包时,会检视这七个字段来判断这个数据包是否属于任何已记录的Flow,有的话则将新收集到的数据包的相关流量信息整合到对应的Flow 记录中,如果找不到数据包对应的Flow 记录,便产生一个新的Flow 记录来储存相关的流量信息。由于设备内高速缓存的空间有限,无法无限制地容纳持续增加的Flow 纪录,所以NetFlow 协议也定义了终结Flow记录的机制,来维持网络设备中储存Flow 信息的空间。
只要下面三种情况任何一个成立,路由器就会通过UDP 数据包将终止的Flow 纪录汇出到使用者事先指定的NetFlow 数据收集设备上:当数据包内字段flag 显示传输协议中传输完成的讯息如TCP FIN 时;流量停止超过15 秒;流量持续传送,每30 分钟会自动终止。
虽然大部分的网络硬件供货商都支持NetFlow,但NetFlow版本有很多,其中NetFlow Version 5 是常见的Netflow 数据格式,包含以下几个字段:Source IP Address (源主机IP 地址)、Destination IP Address (目的主机IP 位址)、Source TCP/UDP Port (源主机所使用的端口号)、Destination TCP/UDP Port (目的主机所使用的端口号)、Next Hop Address (下一个端点的地址)、Source AS Number (来源主机所属的AS 编号)、Destination AS number (目的主机所属的AS 编号)、Source Prefix Mask (来源主机所属网域的子网掩码)、Destination Prefix Mask (目的主机所属网络的子网掩码)、Protocol (使用的通讯协议)、TCP Flag (数据包控制标记)、Type of Service (QoS需求参数)、Start sysUpTime (起始时间)、End sysUpTime (终止时间)、Input ifIndex (信息流流入接口编号)、Output ifindex (信息流流出接口编号)、Packet Count (数据包数量)、Byte Count (Byte数量)。
支持NetFlow 功能的网络设备将其所收集到的Flow 信息以UDP 数据包送往预先设置好的流量接收主机,配合NetFlow 相关收集软件,将这些原始流量资料作适当的处理、储存以提供后续的相关应用。 NetFlow在网络安全上的相关应用
NetFlow 的纪录能够提供足够的信息来协助网络管理者掌握所管辖网络中的网络异常事件,而且由于NetFlow 不需要对数据包内容进行分析,大大减轻了网络设备运算处理的负担,所以很适合用来分析高速、忙碌的网络环境。
由于NetFlow 数据来源是网络中的三层数据转发设备,所以通过从三层设备所搜集到的NetFlow 信息可以协助掌握整体网络的情况,而且通过适当地分析NetFlow 信息,可以协助管理者在蠕虫爆发或不正常网络行为的初期快速分析出网络中存在的问题。接下来我们进一步介绍如何利用NetFlow中所包含的信息来侦测异常的行为。 从网络层的角度进行分析
一般来说,网络攻击行为会存在着某些可供辨识的特征,我们可以通过这些特征来与所获得的NetFlow 数据进行对比,进而找出可能的异常行为。我们可以通过分析NetFlow 数据中目的主机所使用端口号字段,来过滤NetFlow资料找出相对应的攻击;另外我们也可以利用不合逻辑的来源或目的IP 地址来找出异常;此外,因特网地址指派机构(Internet Assigned Numbers Authority , IANA)将下列三段IP 地址保留给私有网络使用10.0.0.0~10.255.255.255、172.16.0.0~172.31.255.255 及192.168.0.0~192.168.255.255,这几段网络的地址不能出现在外在网络环境中,但由于当初网络设计的缺陷,路由器对于所接收数据包的来源地址字段并不会进行验证,所以攻击者可利用这个缺陷伪造来源IP 地址(IP Spoofing )来发动攻击,避免被追踪到攻击来源,所以我们可以从我们所接受到NetFlow 数据中来源主机所使用的IP 地址(Source IP Address)字段,找出伪造来源地址的流量,再利用NetFlow数据中信息流流入接口编号(Input IFindex)字段的信息,找出连接这个接口的上游路由器,请他们协助调查或处理。