第1章 概述
第1讲 网络测量概述
网络发展面临的问题
- 网络安全
- 蠕虫病毒、黑客攻击、信息泄露、非法贸易……
- 用户隐私与网络内容安全的矛盾
- 国家间的网络攻击。“没有网络安全就没有国家安全”
- 网络服务质量保障
- 网络服务质量(QoS)直接影响到用户体验,是各服务提供商之间竞争的基础要素。
- 有服务质量保障的网络是大规模实时交互应用发展的前提,也是维护国家网络安全的重要保障。
- 网络内容传播的问题
- 网络暴力:“键盘侠”、“人肉搜索”、不良分子诱导网络舆论等
- 垃圾信息:垃圾邮件、网络谣言
- 版权问题:盗版软件、音视频文件的共享
- 新的应用需求提出的挑战
- 各领域新兴技术的发展,对网络性能的要求越来越高:
- 无人驾驶
- 工业自动化
- 远程医疗
- 未来数字化战场
网络测量的定义
- 网络测量是指按照一定的方法和技术,利用软件或硬件工具来测试或验证表征网络性能指标的一系列活动的总和.
- 网络测量的分类标准有多种:
- 根据测量方式分:主动测量、被动测量
- 根据测量节点分:单点测量、多点测量
- 根据测量协议分:基于BGP的测量、基于SNMP的测量
- 根据测量内容分:拓扑测量、性能测量、流量测量
网络测量的研究范畴
- 拓扑测量与分析
- 工作负载特性分析与建模
- 性能测量与分析
- 路由测量和分析
- 网络安全分析
网络测量面临的挑战
- 互联网本身的设计原则给网络测量带来的困难
- 现代网络规模庞大、多变、异构、高速发展
- 网络测量的准确度问题:
- 测量资源与测量精度的平衡.在网络中额外的测量机制需要消耗的网络资源,可能对网络运行性 能造成一定的影响.
- 测量实时性与测量精度的平衡.测量机制和算法具有一定的复杂度,对网络流量的处理需要消耗 一定的时间,影响测量的时间精度等.
第2讲 网络测量指标概况
网络测量指标的概念
- 测量指标就是客观测量中的一个量化指标。IETF将测量指标称为“测度(Metric)”。“测度”定义了Internet组成部分的不同属性。在Internet中有一些关于Internet性能和可靠性的参量,当某个参量被详细说明后,则称这个参量为一个测度。
性能类指标
- 时延
- 包括发送时延(传输时延)、传播时延、处理时延、排队时延。
- 带宽
- 带宽(Bandwidth)是指单位时间内所能传输的数据量。是衡量网络特征的重要指标。数据吞吐量是数据包传输的实际度量,而带宽是数据包传输的理论度量。
- 丟包
- 丢包率、丢包距离等。
流量类指标
- 对于流量类测量,通常是通过统计信息来分析整体的流量特征,在测量过程中常见的流量类指标有:
- IP吞吐量
- 流量大小和分布
- 流持续时间(每流持续时间检测、长持续时间流检测)
- 峰值流量信息
- 网络总流量(通常不作为研究网络流量的直接指标,而是作为研究其他流量指标的背景信息)
拓扑类指标
- 拓扑结构中心性
网络节点的价值往往取决于节点在网络中的位置,通常用中心性指标度量。- 度中心性(Degree Centrality,DC)
用网络节点的直接邻居个数来表示这个节点的重要程度。
最直接的中心性度量 - 介数中心性(Betweenness Centrality,BC)
用经过节点的最短路径数来体现其对网络信息传播的控制能力。 - 接近数中心性(ClosenessCentrality,CC)
用节点到其他所有节点最短距离的平均值来定义的节点重要性指标。
- 度中心性(Degree Centrality,DC)
- 拓扑结构相似性
- 基于共享邻居的节点相似性:
认为两个节点的共同邻居数越多,节点就更相似基于路径的相似性: - 在共享邻居的基础上考虑更高级的相似性
- 节点控制能力相似性
- 基于共享邻居的节点相似性:
- 拓扑结构鲁棒性
- 节点间的平均路径长度
- 最大连通子图的规模
第3讲 网络测量方法概况
网络测量方法概念
- 网络测量方法按照是否给网络注入测量分组可以分为主动测量和被动测量。
- 当前的网络测量还趋向于采用主被动结合的方法。如利用主动测量确定网络的整体性能,当网络发生异常时,采用被动测量进行故障定位。
被动测量概念
- 指的是在不注入新的流量的情况下监测网络流量的过程,可以出现在网络的各种有利位置上。
- 由于不发送探测包,又称为非侵扰式测量。
- 借助数据包捕获器捕获并记录网络流量,进行统计分析,被动地获知网络行为状况。
- 随着网络流量速率的增加,海量数据给被动测量带来了一定的困难,在此背景下,被动测量常采用抽样测量技术,以减轻捕获器和存储资源的负担。
被动测量实施方式
- 网络探针测量:
- 使用流量探针监测网络传输状态,分析捕获的数据包,实现对相关业务的测量。
- 服务器端测量:
- 在服务端安装测试代理,实时监测服务器的性能;
- 用户端测量:
- 将监测功能封装到客户应用中,从特定用户角度实时监测相关业务性能;
- 端口镜像测量:
- 通过配置交换机或路由器等网络设备,将待测端口的网络流量数据转发到特定的端口,以此来实现对待测网络流量的监听。
流量探针方法
- 探针是一种部署在网络出口的设备或者程序,能够对进出网络的流量进行监控和分析。
- 根据网络类型和部署方式的不同,采集流量数据的网络探针也不同。
- 常见的流量探针有:SNMP/RMON探针、NetFlow/sFlow探针。
- 简单网络管理协议(SNMP)是一种用于在网络设备之间交换管理信息的应用层协议。SNMP管理者定期向代理发送SNMP请求,获取相关的流量信息。
- RMON协议是对SNMP标准的扩展,定义了远程监控的标准功能和远程监控代理的接口。
- NetFlow是Cisco开发的专用流交换技术,集成在Cisco的各类路由器和交换机内,广泛应用于网络监视、流量计费等方面。
- sFlow也是一种嵌入在路由器或交换机内的基于抽样的流量监测技术。sFlow的采样分为报文采样和计数器采样两种,前者用UDP报送,后者用SNMP报送。
NetFlow vs sFlow
- 两者都是开放标准,现在大部分的厂商生产的 交换机设备,都只支持其中的一种标准。
- NetFlow更多的是在路由器上得到支持,而 sFlow则在交换机上更加流行。
- 相比于sFlow,NetFlow可以在广域网上工作得 很好
- NetFlow是一个基于软件的技术,而sFlow则采用了内建硬件的专用芯片,这种方法在一定程度上减轻了路由器或交换机的负荷
硬件探针设备
- 硬件架构的数据采集探针是为了监测流量而专门设计的技术方案,能做到高速端口的线速流量采集。
- 特定于具体的网络实现,可应对海量数据的测量。
- 费用昂贵,有些硬件采集架构还需要在网络中心端和各远端分支部署相应的硬件设备,部署复杂。
主动测量概念
- 指主动地向待测网络发送特定的网络探测包,根据网络中间节点的反馈信息分析得到待测网络状态。
- 优势在于可以针对特定的目标进行分析,目的性强,并且可用来探测网络中未知的拓扑结构。
- 发出的特定探测包会占用网络资源,因而可能影响待测网络的性能从而使得测量结果呈现出一定的误差。
常见的主动测量工具
- Ping
- 最初的网络测试与诊断工具
- 主要用于测量连通性、时延、丢包率
- 基于ICMP协议进行工作,通过将ICMP回显数据包发送到计算机并侦听回显回复数据包来验证与一台或多台远程计算机的连接。
- 某些主机或防火墙会将其过滤。
- Traceroute
- 主要用于测量从源端到目的端的路由信息
- 实现过程基于IP分组包头的TTL(Time To Live)字段
- 可发现错误路由、网关故障等
- 由CAIDA开发的GTrace是带图形界面的Traceroute版本,通过图形化界面来与用户交互。
- NetPerf
- 主要用于测试单向网络吞吐率、单向端到端的时延;
- 以客户机/服务器(client/server)模式工作,有两个主要元素:Netperf和Netserver;
- server端是netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试。
- 在client与server之间,首先建立一个控制连接,传递有关测试配置的信息;以后会再建立一个测试连接,用于传递特殊的流量模式,以测试网络的性能。
- 其他主动测量工具:
- Iperf
- Treno
- Nettimer
- ...
大规模主动测量工程
- Surveyor:有55个监控点,可以在1883条路径上进行单程延迟的测量;
- PingER:有18个监控点,可以监控1261条路径;
- CAIDA的Ark项目
主动测量的系统支持
- 与被动测量不同,主动测量需要一定的系统支持
- 有效探测包的注入、数据包的离开及到达时间等的精确测量都需要在操作系统的内核中实现。
- 需要特定的系统文件库和系统接口以满足主动测量的需求。
- Scriptroute工具允许非授权用户向网络中注入探测包,但操作权限范围需要系统管理员预设。
- PeriScope是操作系统内核中实现的可编程库,具有一个应用程序接口(API)。使用该接口,可定义新的探测包结构和数据推断技术。
协同测量
- 目前对于协同测量的概念还没有明确的定义,宽泛地看,包括测量方法的协同性和测量设备间的协同。
- 主被动结合的协同测量。
- 主动测量使用灵活,但需要向网络注入探测包,可能对测量结果产生干扰;
- 被动测量不会影响网络本身特性,但往往只能监测到局部信息,无法获悉网络全局状况;
- 实际测量过程中,常使用混合测量方式,灵活组合主动测量和被动测量方法,设计测量机制,对网络进行协同测量。
- 测量设备的协同性。
- 网络设备间的协同测量主要体现在大规模的网络测量中。
- 比如较大规模的软件定义网络中,单一控制器的部署方式的处理能力有限,未来主流的部署方式为多控制器分布式部署方式。
- 在此模式下,网络的测量架构需考虑更为复杂的测量协同机制
- 包括测量任务的调度、测量配置的同步、测量资源的分配、测量结果的合并等。
第2章 报文测量基本方法
第4讲 传统报文测量方法
数据捕获技术
- 数据捕获技术是指对网络链路上传输的数据包进行采集和监听的技术,将捕获的数据包传送到用户应用层进行分析。
- 数据包捕获技术主要分为两种:
- 采用专门的数据采集卡
- 采用以太网卡的混杂模式(利用以太网广播特性或设置路由器监听端口)
数据包嗅探
- 通过DPI(DeepPacket Inspection)深度包检测技术获取报文的方法称为数据包嗅探,数据包嗅探过程中涉及到软件与硬件之间的协作。这个过程可以分为3个步骤:
- 收集:数据包嗅探器从网络线缆上收集原始二进制数据。在选定网卡混杂模式下网卡将抓取一个网段上所有的网络通信流量,而不仅是发往它的数据包
- 转换:将捕获的二进制数据转换成可读形式。网络上的数据包将以一种非常基础的解析方式进行显示,而将大部分的分析工作留给最终用户
- 分析:对捕获和转换后的数据进行真正的深入分析。数据包嗅探器以捕获的网络数据作为输入,识别和验证它们的协议,然后分析每个协议特定的属性
报文采集实现技术
- socket编程
- socket可以看成是不同主机进程间进行双向通信的端点,是通信双方的一种约定。
- socket编程对与实现过程的封装性较低,使得其在某些情况下,不能满足网络通信的实时性、高效性的要求。
- Libpcap
- Libpcap(PacketCapture Library )是Unix/Linux平台下的网络数据包捕获函数库。它是一个独立于系统的用户层包捕获的API接口,为底层网络监测提供了一个可移植的框架。
基于Flow技术的网络被动测量
- Flow是网络设备厂商为了在网络设备内部提高路由转发速度,而引入的一个技术概念。在Flow模式下,数据包将通过几个给定的特征定义归并到特定的集合中,这个集合就是Flow。
- NetFlow
- 利用分析IP数据包的源IP地址、目标IP地址。源通信端口号、目标通信端口号、第三层协议类型、TOS字节(DSCP)、网络设备输入输出的逻辑网络端口等7个属性,实现对网络中传送的各种不同类型业务数据流的快速区分。
- sFlow
- sFlow是Sampled Flow的简称,是一种用于监控数据网络上交换机或者路由器流量转发状况的技术。
- sFlow技术独特之处在于它能够在整个网络中,以连续实时的方式监视每一个端口,但不需要镜像监视端口,对整个网络性能的影响非常小。
Libpcap被动报文获取现存不足
- 数据包传送过程中多次数据拷贝和函数调用等操作消耗CPU性能
- Linux系统每向用户空间传送一个数据包将调用一次函数,系统调用需要上下文切换,频繁上下文切换将导致CPU一直处于繁忙状态,无法完成其他工作
- 随着高速网络的发展,这种传统的处理方式会成为整个系统的性能瓶颈,对系统资源耗费极大,无法运行在高速网络中。因此我们需要考虑更为有效的高速流量报文获取方法。
第5讲 高速报文测量方法
基于硬件的高速报文获取方法
- DPDK
- DPDK重载了网卡驱动,在收到数据包后将数据包通过零拷贝技术存入内存,应用层程序就可以通过DPDK提供的接口直接从内存读取数据包。
- 节省了CPU中断时间、内存拷贝时间,并向应用层提供了简单易行且高效的数据包处理方式。
- ASIC
- 用于供专门应用的集成电路芯片技术
- FPGA
- 属于专用集成电路中的一种半定制电路,是可编程的逻辑列阵,能够有效的解决原有的器件门电路数有限的问题
基于抽样的高速报文获取方法
- 分组抽样
- 系统抽样
- 简单随机抽样
- 分层随机抽样
- 流抽样
- 流抽样主要有两种抽样方式:先对分组进行抽样,再对分组进行流归并;先对分组进行流归并,再对流进行抽样
- 在流抽样中,构成网络流量的分组并不孤立,它们是为了完成具体的应用而产生的,分组之间存在着一定的关联,这种关联通过流进行体现
- 对于流量测量,采用哪种测量和抽样方法是由网络测量的目的决定的。
对于流量计费,关注流量的长度、大小,大流丢失会导致大量信息损失,因此需要保证大流被抽样;如果对所有的流按照相同的概率进行抽样,少量的大流信息很容易被漏掉
然而对于异常监测,需要保留尽量多的流信息,如SYN FLooding,DoS攻击等通常由大量的小流构成。抽样是降低内存消耗和分组处理时间的最广泛采用的方法之一,但由于网络的不稳定性,结果可能存在较大的误差。
其他技术
- PF_RING
- 采用Linux NAPL实现对数据包的快速读写,能够显著提高读写性能。
- Netmap
- Netmap是一个基于零拷贝思想的高速网络I/O架构,在内存映射的基础上,进一步减少了数据包的传输代价,能够有效地节省CPU等计算机资源。
- Netmap并不会将网卡寄存器和内核的关键内存区域暴露给应用程序,因而用户态的应用程序并不会导致操作系统崩溃,所以相对一些其他的零拷贝架构,Netmap更为安全。
第6讲 主动流量测量方法
主动报文发送方法背景
- 网络测量中的主动测量方法设计原则是将经过特殊组合的数据包注入网络,然后通过返回的信息来推断网络对这些数据包的处理方法,由此获得网络的状态信息。
- 因此主动报文构造方法就非常的重要,需要使用相应的工具对报文进行构造,并来发送这些数据包
传统流量发送模型
- 泊松模型
- 泊松模型即指在时间序列t内,包到达的数量n(t)符合参数为λt的泊松分布
- 马尔可夫模型
- 马尔可夫模型是一种随机过程模型,它根据某一变量当前状态和其动向来预测其未来的状态,具有后无效性的特点。
- 优缺点
- 传统流量模型的优点是相应的概率理论知识发展比较完善,队列系统性能评价易于数学解析。
- 缺点是由于传统的业务模型只有短相关性,无法描述网络的长相关性,不能反映业务突发性,不能准确地描述流量自相似性
自相关流量发送模型
- 构造建模(物理模型)
- 这类方式试图利用己知的传输知识来解释所观察到的数据特征,具有代表性的有重尾分布的ON/OFF模型、M/G/o∞排队模型;
- 行为建模(统计模型)
- 这类方法试图用数据拟合方法模拟所测量真实数据的变化趋势,代表模型有FBM模型和基于小波的模型等。
- 这类方法试图用数据拟合方法模拟所测量真实数据的变化趋势,代表模型有FBM模型和基于小波的模型等。
高速报文发生器
- 利用高速报文发生器模拟网络攻击流量
- 设计高速报文发生器来生成需要的攻击流量,对网络设备进行压力测试来保证系统的安全性
- 利用高速报文发生器模拟物联网流量
- 物联网场景下规模庞大且类型复杂的应用流量数据十分困难,为完成物联网流量预测与模型评估,需要使用高速报文发生器。
- 高速报文发生器的瓶颈分析
- 硬件架构:网卡速度、PCI带宽有限
- 软件层面:不同的报文构造程序,对速度也有着较大的影响。
- 网络链路:网线、交换机、路由器等速度有限
第7讲 移动终端报文测量方法
背景
- 移动终端网络流量获取分析的目的是从网络流量中推断设备、用户及设备上安装的应用程序的相关信息。移动终端网络流量分析由传统的网络流量分析领域发展而来。
- 与传统网络流量相比,移动终端产生的下载流量比上载流量大,流量持续时间较短、报文数目较多且单个报文长度较短
在Wi-Fi网络下抓取手机报文流量
- 最直接的流量收集方法是在移动设备上安装轻量级的应用记录程序
- 在计算机上抓取手机报文流量
- 搭建步骤比较容易。
- 能够实现数据包的实时捕获,并且可以直接在Wireshark工具中进行查看分析。
- 对移动设备的要求不高,只要移动设备支持无线上网功能即可。
- 在路由器上抓取手机报文流量
- 不仅可以抓取手机在无线Wi-Fi网络环境下的报文流量,还可以根据具体实验需求通过系统插件来控制链路的延迟,丢包,带宽等参数
在移动网络下抓取手机报文流量
- 取得安卓手机root权限从而利用tcpdump软件的数据包捕获功能,从而可以同时实现手机在移动运营商网络环境下和Wi-Fi网络环境下的的报文流量抓取。这种方法可以在手机上抓取手机报文流量。
第3章 网络流测量方法
第8讲 网络流定义
什么是网络流
- 与呼叫或连接等效的人工逻辑
- 从特定源发送到特定单播、任播或多播目的地的数据包序列
- 在特定时间间隔内通过网络中的观察点的一组IP数据包
- 网络流最简单定义:可以通过TCP协议的SYN/FIN的方法来判断一条流的开始和结束
- 基于超时值的流定义:同一源地址与目的地址的数据包在时间上的间隔小于指定的超时值,则判断该流处于活动状态。由于对于每条流的最后一个报文开始计时较为复杂,因此常采用时间间隔的方式来判断流超时
数据包的到达模式
- 报文模式(carmodel):网络中传输的每个报文都视为相互独立。
- 包列模式(packet train model):从同一源到达同一目的地的信息包的队列为一个包列。
流的参数定义
- 方向性
- 根据流的方向定义为单向或双向,双向通讯(如TCP)表现为两个独立的流
- 单端点与双端点
- 区分单端点流和双端点流,即在流量的源或目的地址聚合的流,与由源地址与目的地址共同定义的流。
- 端点粒度
- 通信实体的范围。包括应用程序、终端用户、主机、IP网络数量、管理域(AD)、骨干客户服务提供商等方面。
- 协议层
- 可以在应用程序层或使用传输连接定义流。
单流的测度
- 流超时值
- 较短的流超时值往往会将较长的流分成几个较短的流,因此较小的超时值会产生更多的流,持续时间更短的流的占比更大。
- 组流规则
- 不同的流聚合方法可以根据端点粒度进行划分,具体的端点粒度有源节点、目的节点、目的网络、双端网络、双端节点。
- 网络环境
- 不同的网络环境下的流特征存在差异性,流字节数、流数据包数和流持续时间等数据会随着网络流量性质的变化而变化。局域网环境的高字节流与长流往往占比更大,这与工作站和终端等局域网设备的典型使用模式一致。
- IP层以上的网络使用情况
- 不同的使用方式与应用程序所产生的流的预期大小与持续时间明显不同。不同的应用程序在流的表现情况上具有明显差异,大量DNS流由单个报文组成,某些基于UDP的实时音频和视频应用的网络流可能会长时间存在。
流超时值设置
- 目的:优化不同流的维护状态的权重,包括信息的存储和访问每个交换数据包的状态表的搜索时间。
- 超时值低: 优点:频繁地创建和清除流的方式,需要的内存资源更少。缺点:需要更大的CPU功率和更多内存管理资源。即使观测的网络流尚未结束,流也可能判定为超时,从而产生重新建立该流导致的潜在处理延迟和处理成本。
- 超时值高:优点:较低的CPU功率和较少内存管理资源,不易发生流分裂。缺点:容易对内存造成负担,导致流记录溢出从而丢失应有的流条目。
- 路由器的设计者需要使用目标网络环境中流量参数的经验性知识来确定用于设置和清除流的适当的超时值。路由的转发开销由以下几个部分组成:
- 建立流记录的延迟
- 建立流记录所需的指令数量
- 保持流记录存在的内存开销
- 维护流状态的搜索时间或计算开销
组流的一般方式
- 具有组流功能的设备在接收到流入网络接口的报文后,对报文头部进行解析,解析后根据该报文是否属于已有流记录而进行不同处理。
- 设备在接收到报文后,对报文头部进行解析,判断该报文所属的网络流。若该报文属于已创建流记录的网络流,则更新该流记录。若属于未创建流记录的未知流,则根据该报文的头部信息创建该流记录。
流记录输出判定
- 流记录输出判定
- 在每个时间间隔结束输出
第9讲 NetFlow流测量方法
NetFlow流终止判断规则
- 当由TCP标志(FIN或RST)指示时
- 在看到具有匹配ID的流的最后一个数据包15秒后(该超时值可配置)
- 流记录创建30分钟后(可配置)
- 当流缓存已满时
采样NetFlow
- 采样率1/N可配置,NetFlow线卡仅对每N个报文中的一个进行采样。使用采样的NetFlow记录时,分析者通过将记录值乘以N来补偿采样。
测量时间粒度
- 采样和流终止启发式可能导致流的分裂
- 因为NetFlow只能观测到采样的数据包,而连续采样的数据包之间的时间可能会增加至超过流超时值(默认15秒),从而导致NetFlow提前终止流记录,并直接上传流记录。
- 使用测量粒度时,NetFlow不再单独对每条流记录进行超时检测,而会在每个粒度的末端终止所有活动流记录。
- 当NetFlow应用使用测量粒度来代替流终止启发式时,只需要确保分析工具使用的粒度的长度是测量粒度的整数倍
- 粒度越小,NetFlow上报次数越多
预设采样率问题
- 传统NetFlow使用固定的预设采样率进行采样导致的一些问题:
- 流记录的数量取决于流量情况。大规模DDOS下流记录数会非常庞大,对设备内存使用造成巨大的负担,并可能造成丢包。
- 只能配置静态的采样率。即使以足够低的采样率对网络流量进行采样,在发生DDOS等攻击时创建的流记录仍可能超过可用内存资源。
- 对流数量的估计不够精确。
- 网络流自适应采样(ANF)
- 最大采样率:处理器在最坏的网络情况下(如DDOS下)可以运行的最大采样率
- 每个测量间隔的起始将采样率设置为该最大采样率
- 创建流记录过程中不断更改采样率,因此在降低采样率时需要对现有的流记录进行重整化操作。
- 重整化操作使调整后的值等于从间隔开始时就使用新采样率所获得的值。
流记录重整化
- 对于以旧采样率下未采样到的数据包,在新采样率下仍未被采样。
- 虽然ANF使用动态采样率使不同测量间隔的最终采样率不同,在流量分析时只需要将不同的测量间隔与其对应的采样率相乘后得到的结果合并即可。
流计数扩展
- 维持一个保存所有流标识符与流ID的哈希值的表,长度为M
- 当该表被填满时,删除流ID哈希值第一位不是0 (depth=1)的流记录,为后续新增记录留出空间。当且仅当新流ID哈希值以0开始时,才将其添加进表。
- 当表再次被填满时,只保留流ID哈希值前两位均为0 (depth=2)的流记录,并以此类推。
- 在测量间隔结束时,哈希表中有L条前depth位为0的数据,则流的数量N=\frac{L}{M}2^\text{depth}
NetFlow数据分析
- 数据包格式
- NetFlow数据格式包括报头格式和记录格式。不同版本的NetFlow具有不同的格式,其中v9与以往的版本有很大的区别,v9采用了模板形式,并且提供对IPV6的支持。
- NetFlow头部中存放的是NetFlow版本号、流记录条数以及列号。
- 流记录中存放的是针对该流记录的详细内容。
- 数据结构分析
- Version:NetFlow的版本号
- Count:数据包中数据流的条目
- SysUptime:自流设备启动后,到当前为止过去的时间,以毫秒为单位
- Unix_Seconds:自UTC1970起到目前为止过去的时间,以秒为单位
- Unix_Nanoseconds:自UTC1970起到当前为止的时间,以纳秒为单位
- Flow_Sequence:数据包第一条记录的序列号
- Engine_Type:流设备引擎类型(RP为0,LC为1)
- Reserved:预留
基于NetFlow的应用
- 网络监控、测量和分析
- 网络监控;
- 应用程序监控;
- 主机监控;
- 安全监控;
- 统计和计费。
- 网络应用分类
- 网络应用分类将网络流量分为某些应用类别,这些类别可以是粗粒度的,也可以是细粒度的。
- 分类方法可以分为四类:
基于端口;
基于有效载荷;
基于使用传输层统计的启发式;
基于机器学习的方法。
- 安全感知和入侵检测
- 根据入侵方式分类:基于异常、基于误用(基于知识或基于特征)或基于异常和误用的组合
- 根据入侵目标分类:基于主机、基于网络或基于主机与网络
第4章 流量抽样测量方法
第10讲 抽样方法概述
数据的简化和缩减方法
- 聚合:将多个数据基于某种测度组成一个集合
- 过滤:选择符合特征的个体,剩下的被舍弃。
- 抽样:使用随机或者伪随机的方法进行数据筛选。
抽样的作用优势
- 抽样可以在不了解详细特征的前提下保留对象的全部细节,并同时缩减数据规模。
- 抽样具有一定普适性,不局限于某种特定科学研究。
- 抽样的作用,就是根据需要或者已有的数据特征,来平衡资源限制和查询要求这一对矛盾
困难与挑战
- 在数据采集的过程中,绝大部分可能已经经过了采样
- 尽可能地还原出最原始数据的特征
- 抽样方法的实现受资源以及技术的限制
- 很难从纯粹的统计角度来设计抽样方法
- 流量特征本身对抽样方法影响较大
- 网络流量呈现明显重尾分布特征
- 抽样方法需要考虑具体的网络应用类型
- 还无法找出一组特定的数据来为网络全局的管理提供直接参考。
抽样方法概述
- 两步走
- 第一步,制定一个触发器,即启动抽样所依据的时间或事件;
- 第二步,在触发器启动后,在数据流当中选择对应的个体。
- 触发器的类型:
- 基于计数的触发器:给出一个递增的计数序列{in:n = 0,1,2......};
- 基于时间的计数器:给出一个递增的时间序列{t:n = 0,1,2......}
均匀抽样
- 系统化抽样:
- 基于计数的触发器
- 基于时间的计数器
- 弊端:当被抽样的个体也可能存在明显的周期性,且和我们的抽样频率有一定关联时
- 简单随机抽样:
- 可以很好地规避同步化问题,相当于将系统化抽样的间隔变为了具有一定分布规律的随机数
- 简单实现方法:在给定触发器之后,立刻生成到下一个触发器的时间间隔
- 不足:生成的某些时间分布可能是无界的。
- 改进方法:可以将抽样方法简化为对每个个体进行采样决策
- 分层均匀随机抽样:
- 先根据事物的一些属性划分为层。
- 层的划分需要保证层间差异明显大于层内差异以减小抽样整体带来的偏差
- 每一层的总数以及在每一层中抽取的数量一致
- 每个个体的抽样概率其实是一致的,但是受限于实际情况,某些抽样后的组合可能不被允许
- 三种抽样的区别和联系:
- 对于每个类,可以通过基于计数器或基于计时器的机制实现或近似实现任何抽样方法
- 针对单个报文被抽样的概率都是相同的,然而对于报文的组合的抽样就不相同了
- 共享一些公共属性(例如流密钥)的背对背报文一般不使用系统抽样
不均匀抽样
- 不均匀抽样:一种将抽样权重与个体本身结合的抽样方法
- 样本不均衡时:某些情况下占比较小的个体种类可能更具备研究价值
- 例如:在攻击检测与发现方面,攻击流量很可能只占很小一部分
- 常见应用:根据个体大小规模制定抽样权重(例如数据报文中的字节数)
- 与均匀抽样的联系:
- 均匀抽样则是一种特殊的不均匀抽样
- 方差是无偏的,但是可能会较大
- 降低方差的方法:
假设全部N个物体有一个辅助的指标yi
选择与yi成比例的pi:在xi与yi大致成比例的情况下
- 典型例子:根据采样的字节数来预估报文的平均长度
随机抽样仿真实现
- 基于内容的伪随机抽样和非均匀的概率抽样:
- 不均匀的概率抽样:一个样本设计,其被选择的概率取决于内容;
- 基于内容的伪随机抽样:通过内容模拟随机选择的一种实现方式
- 哈希函数特性
- 雪崩效应:
输入值当中十分微小的变化(如一个比特位的翻转)可以导致输出结果的很大变化。
潜在输入c在任意局部区域都可以通过函数h在输出域上实现广泛分布。
即便输入值c的分布不够均匀,输出值h(C)的分布也是较为均匀的
可以通过调整抽样范围S的大小来控制抽样比例。 - 哈希函数的输入值对于采样结果影响也不能忽视:
在实际抽样场景当中,数据报文一般含有多个字段:例如数据报文的源和目的IP以及端口号
基于哈希的选择决策是确定性的
但是对于字段的选择也可以影响抽样的结果:哈希函数的结果不能较大依赖于某一个输入字段
字段之间的独立性足够强:对于任意一个输入的字段f1,另外有一个字段f2与f1的关联度是足够小的
- 雪崩效应:
- 哈希函数种类:
密码学哈希函数:一般随机性较好,运行速度普遍偏慢,安全性往往是多余的- 启发性哈希函数:原理比较简单,运算速率也比较快,但是随机性不够
- 数学哈希函数:对于输入输出的概率特性有较为精准的分析,实现的速率一般也比较快
第11讲 统计推理方法
两种重整化方法
- 基于抽样比例的方法
- 基于抽样数的方法
- 估计量的变异系数都随着流量规模的平方根成反比,这意味着,在实际网络环境当中,对占比较大的流量的估计往往更加准确
三大问题
- 抽样是否会对下游测量设备造成影响:稀疏流量
- 考虑流量稀疏性的前提下,估计原始流量的数据规模,活跃流数量以及计算资源消耗情况
- 通过基于报文抽样后的流量特征,能否尽可能多地推测出原始流量的特征:例如原始流的到达输出速率,原始流的长度等(由于部分流量是没有一个报文被抽样的)
稀疏流相关结论
- 当采样周期足够大,无论流量是否稀疏,最后的流数也是差不多的。
- 当采样周期到1000的时候,平均流长大约为1,也就是说抽样后绝大多数的流长均为1.
- 对于稀疏流量而言,活跃流的抽样数也会随着N的增长而下降,但是下降趋势较为缓和一些
TCP流数估计方法
- 假设
- 原始TCP流都由一个SYN报文开始;
- 原始TCP流都只包含一个SYN报文
- 方法一:
- 以1/N的概率抽样,抽中SYN报文数量为\hat{m}_1,则估计量为\hat{M}_1=N\hat{m}_1,是一个无偏估计
- 仅仅利用被抽中的SYN报文来估计原始TCP流的数量,这可能会导致估计值的误差偏大.
- \frac{\hat{M}_1-M}{\sqrt{M}}\sim \mathbf{N}(0,N(1-\frac{1}{N}))
- 方法二
- 假设没有由于稀疏导致的流的分裂.当设置流超时参数为无穷大时,该假设成立
- 将原始TCP流分为3类:
S_1:只有一个报文且为SYN报文被抽中的原始TCP流集合
S_2:至少有一个非SYN报文被抽中的原始TCP流集合
S_3:没有报文被抽中的原始TCP流集合 - 令\hat{s}_1和\hat{s}_2分别表示抽样后流量中属于S_1和S_2的流的数量。估计量为\hat{M}_2=N\hat{s}_1+\hat{s}_2,是M的无偏估计
- \hat{M}_2:不可避免对流数高估,增加流超时这一参数的阈值可以减少影响
- \frac{\hat{M}_2-M}{\sqrt{M}}\sim \mathbf{N}(0,\bar{z}N(1-\frac{1}{N})),\bar{z}是一条流中没有除第一个报文以外的报文被抽中的概率.
第5章 数据流方法
第13讲 数据流方法概述
测量高速网络环境下的网络流量
- 利用高性能的专用硬件如TCAM,ASIC等,但高性能的硬件设备极其昂贵
- 利用抽样技术对部分有代表性的网络流量数据进行采集处理,从而降低系统的负荷,但抽样测量方法难免存在较大的误差
- 利用数据流技术和方法对所有网络流量数据进行处理,有效地减少存储资源的需求,并保持一定的准确性
数据流定义
- 指通信传输过程中,所对应信息的"数字编码信号序列"
- 数据流(Data Stream)代表以非常高的速度到来的输入数据,它强调通信和计算基础设施较难传输、计算和存储
- 网络数据流(NetworkData Stream)为一个时间区间内顺序到达的报文序列,一个"源"由报文头的一个或多个源字段构成,如:源IP地址、源端口、源IP地址和源端口的二元组;类似地,一个目的由一个或多个目的字段构成.
- 在IP网中,"流"的概念可定义为对一个呼叫或连接的人为逻辑对应,是流量的一部分,也是某时间段内通过一个观测点且具有共同性质的报文集合.
高速网络流量测量技术评估标准
- 实时性:反映网络流量测量技术在线快速地处理网络数据流的能力
- 准确性:反映网络流量测量技术估计网络数据流的能力
- 存储复杂性:反映网络流量测量技术准确估计网络数据流所需处理开销,如内存访问、CPU
- 可扩展性:反映网络流量测量技术处理大量网络数据流的能力
- 计算复杂性:反映网络流量测量技术准确估计网络数据流所需存储空间
数据流算法适用的测量测量任务场景有:
- 熵估计:对高速链路中的网络流量的熵进行估计,有助于监测异常等。其中OD流的熵可以很好的反映出网络运营商(ISP)网络内流量动力学
- 流量与流矩阵估计:流量矩阵的准确估计有助于网络管理,如容量规划与预测、网络故障与可靠性诊断以及路由配置
- 连接度估计:高速链路上准确、实时地检测超连接度主机,是网络测量与网络安全中一个重要的任务
- 大流识别:在互联网中,少量的大流占据了网络流量的大部分,它们对于网络计费、流量工程等应用非常重要
- 活跃流的计数:对于给定源IP的活跃流数量进行计数,可以有效识别网络攻击等问题
数据流相关简介
- 高速网络流量测量方法大致经历了一个“报文抽样-流抽样-数据流”的发展历程。但抽样固有的误差性,无法满足高速链路的测量需求。
- 高速网络流量测量方法的主要目标是:在保证一定准确性的前提下降低所需要的处理和存储开销。
- 数据流方法具有单遍扫描、有限的计算和内存资源等特点,是高速网络流量测量的重要方法。
- Bitmap、BloomFilter、Sketch算法最早由数据库研究领域引申入网络测量领域的数据结构,在很大程度上促进了网络数据流方法的发展。
第14讲 Bitmap测量方法
基本原理
不同的Bitmap
- Direct Bitmap
- Hash映射会有一定的碰撞性
- 算法对流的数量进行估计,其准确率并不高
- Virtual Bitmap
- 仅用Bitmap的一部分,估计值为实际值×采样因子
- 当很少有流活动时,估计不准确
- Multiple Bitmap
- 使用多个不同采样率的Bitmap,适用于不同活跃度情况
- 每次需要更新多个Bitmap
- Multiresolution Bitmap
- 本质上是多个不同“分辨率”的Bitmap的组合
- 在计算时,基于每个组件中设置的比特数,选择其中一个“基”来估计、推断Hash到这个“基”和所有更高分辨率组件的流数量。
第15讲 Bloom Filter测量方法
初步设计
- 用k个独立的Hash函数,将元素映射到之多k个位
- 查找时使用这k个函数,查询对应位置是否为1
- 可能假阳性,不存在但被认为存在
- 不会假阴性,不可能存在但被认为不存在
- 不会漏判,可能误判
误判分析
- 误判率(1-e^{-kn/m})^k
- 给定误判率,最大可表示的元素个数n_0=-\frac{mln(1-f_0/k)}{k}
- 最优Hash函数个数k=\frac{m}{n}ln2,f_min=(0.6185)^{m/n}
- 此时达到最小占用空间,m=\frac{kn}{ln2}
Counting Bloom Filter
- 每个位增加了计数器,可以实现删除操作
- 选择足够大的计数器是避免计数器溢出的充分条件
- 溢出概率P=m(\frac{eln2}{j})^j,j为计数器可表示的最大数
第16讲 Sketch测量方法
第6章 主流网络应用流量分析
第17讲 应用流量分析概述
应用流量分析的目的
- 考虑网络服务的数据包丢失、传输延迟和抖动,将来自不同应用的流量对应到不同的服务优先级。
- 网络异常行为通常表现为网络中通过流量的异常,异常检测的核心问题是如何实现正常行为的描述。
- 加密协议的使用使跟踪恶意行为更困难,因此用户行为识别成为跟踪恶意行为的一种方法。
流量分析的方法
- 传统流量分析方法
- 基于端口的流量分类方法
原理:通过检查分组的传输层端口,根据IANA制定的知名端口号与注册端口号列表将分组和应用匹配起来
缺陷:P2P应用等新型网络应用使用随机端口进行数据传输,导致基于端口的流量分类方法的分类精度下降。 - 基于负载的流量分类方法
原理:主要分析数据包的有效负载或执行更复杂的语法来判断其是否包含与已知应用相匹配的特征。
缺陷:随着加密应用以及其他新型应用的涌现,无法获取数据包的负载明文以及未知应用的语法和特征,从而逐步降低了此方法的分类性能。
- 基于端口的流量分类方法
- 加密流量分析方法。
- 基于有效负载的识别方法数据包
通过分析数据包的有效负载来识别流量。
加密协议在密钥协商过程中有一部分数据流是不加密或部分加密的,可以从这部分未加密数据流中提取有用的信息来识别协议或应用。 - 负载随机性检测
根据网络应用的数据流并不完全随机加密的特性进行识别,由于每个数据包会携带一些相同的特征字段,所以数据包的这些字节可能不是随机的,可以根据这些特征字段的随机性来识别。 - 基于机器学习的识别方法
加密技术只对载荷信息进行加密而不对流统计特征进行处理,因此,基于流统计特征的机器学习识别方法受加密影响较小。 - 基于行为的识别方法
是从主机的角度来分析不同应用的行为特征。
识别结果通常是粗粒度的,如P2P和Web类型,并且对于传输层加密无能为力。 - 基于数据包大小分布的识别方法
实际网络环境中,服务提供商会针对不同的业务类型对数据流中的数据包大小进行处理。
如流媒体的数据包不宜过大,否则网络拥塞时影响播放流畅度,而文件下载的数据包通常以最大负载传输。因此可根据数据包大小的分布差异来识别数据的业务类型。 - 混合方法
由于一种识别方法几乎只对特定协议有效,因此可以将多种加密流量识别方法集成,从而实现高效的加密流量识别。
- 基于有效负载的识别方法数据包
第18讲 Web流量分析
Web应用的组成成分
- 超文本传输协议(Hyper Text Transfer Protocol,HTTP)
- 客户端用于从万维网服务器请求并获取信息的传送协议,常见的HTTP协议的版本为1.0,1.1,2.0。
- 统一资源定位符(Uniform Resource Locator,URL)
- 因特网上标准的资源的地址。
- 超文本标记语言(Hyper Text Markup Language,HTML)
- 用一系列标签将网络资源连接为一个逻辑整体的标记语言、是当今用于设计和构建万维网网页的主要语言
第19讲 视频流量分析
视频传输协议分析
- 流媒体技术出现的背景
- 视频比重增长,视频传输带来的流量不断增多。
- 视频相较于音频、图片、文字等信息媒介,需存储更多的信息。
- 传统的方法将视频文件整体下载到本地,视频文件的下载会花费大量时间。
- 近年短视频日渐流行,如用户需将每个视频下载后才能观看,会造成较差的用户体验。
- 流媒体技术
- 把连续的影像和声音信息分片,由视频服务器向计算机顺序或实时地传送各个分片,让用户可以一边下载一边观看的网络传输技术。
流媒体技术
- HTTP渐进式传输(HTTP Progressive Download,HPD)
- HPD传输视频文件的过程:客户端依次向视频服务器发送了HTTP请求,且每一次请求的视频文件的字节范围值(Range)不同。
- 大小为M字节的视频文件,第一次请求0到x1字节数据,第二次请求x1+1到x2字节数据,第三次请求x2+1到M-1字节数据。
- 基于HTTP的动态自适应流(Dynamic Adaptive Streaming over HTTP,DASH)
- 视频内容准备模块:将视频内容按照不同码率水平进行编码切片并产生MPD描述文件文件。
- 服务器模块:视频服务器和HTTP服务器,负责视频内容的存储和分发。
- DASH客户端:对MPD文件解析,根据可用带宽从MPD文件获取对应码率的音视频分段的URL,下载并播放
- HTTP实时流(HTTP Live Streaming,HLS)
- 服务器组件:获取媒体的输入流并对其进行数字编码、封装、分发。
- 分发组件:由标准网络服务器组成,它们负责接受客户请求,并向客户交付准备好的媒体和相关资源。
- 客户端软件:确定要请求的媒体,并下载对应资源,然后重新组合。
- HLS的两级索引:第一级索引存放的是不同码率的HLS源的M3U8地址,也就是二级索引文件的地址;第二级索引则记录了同一码率下TS切片序列的下载地址。
- 实时消息传输协议(Real Time Messaging Protocol,RTMP)
- 采用实时流式传输,不会缓存文件到客户端。
- 视频流可以随意拖动,不需要视频有关键帧。
- 既支持点播也支持直播。
第20讲 网络游戏流量分析
游戏通信协议分析
- 基于TCP协议实现游戏通信
- 面向连接的:在双方发送数据之前,利用TCP协议在收发双方之间建立一条一对一的连接
- 可靠的:实现无差错、不丢失、无重复与按序到达的服务,TCP协议建立了使用序列号、ACK机制和超时重传机制。
- 流量控制:通过设置滑动窗口告知对端自己能够接收的数据量,保证对端发送的数据不会溢出缓冲区。
- 全双工:通信双方在任何时刻都可向对端发送或者从对端接收数据,发送双方都有接收和发送缓冲区。
- 适用场景:TCP协议适用于对可靠性要求极高、对实时性要求适中的游戏场景。
- 基于HTTP协议实现游戏通信
- 基于可靠的TCP协议,HTTP协议可以保证不丢失数据包,避免数据的重传,以实现低延迟。
- 简单快速,随着http协议版本的更迭,http协议已经拥有精炼的消息通信格式和成熟的通信机制,使得HTTP服务器的程序规模小,通信速度快
- 适用场景:HTTP协议适用于弱联网的游戏场景中的文本传输。
- 基于WebSocket协议实现游戏通信
- 面向连接的:Websocket在客户端与服务器之间始终保持一条有效的双向连接,便于客户端频繁地请求数据。
- 有状态的:为了保持连接状态使得其成为了一种有状态的协议,后续通信时可以省略部分状态信息。
- 数据报头较小的:连接创建后,服务器和客户端之间交换数据时,用于协议控制的数据包Websocket的头部相对完整的HTTP请求的头部较小。
- 适用场景:Websocket协议适用于对实时性、交互性要求较高的游戏场景。
- 基于UDP协议实现游戏通信
- 无连接的:在数据传输前无需建立客户端与服务器之间的连接
- 面向报文的:发送方的UDP对应用程序交付下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界。
- 不可靠的:不保证数据的可靠交付、容许丢包,没有拥塞控制,也不保证数据包的有序到达,是尽最大努力交付的协议。
- 适用场景:UDP协议适用于能够容忍一定丢包率的、对实时性要求极高的游戏场景。
第7章 网络流量分类方法
第21讲 流量分类方法概述
流量分类的概念
- 流量分类的概念
- 判断流量的不同种类,流量代表的不同行为
- 在流量识别的基础上进行延伸,提取流量分类的相关信息,如视频分辨率
- 识别网络应用或协议的过程,识别和分类未知网络类型的第一步
流量分类指标
- 预测准确度的判断
- 常用判断指标:假阳性、假阴性、真阳性、真阴性
- 好的分类器需要最大限度地降低假阴性和假阳性
- 召回率Recall:属于X类的成员被正确分类为属于X类的百分比
- 精确率Precision:在所有被分类为X类的实例中,真正属于X类的实例所占的百分比
- 评估单元的确定
- 以字节为基本单元:判断正确分类的流的数据包中包含了多少字节,与字节的总数有关
- 以流为基本单元:判断每条流被正确分类的概率,与流的总条数有关
- 通常以字节为评估单元。对负载模式进行分析时,需要考虑如何正确分类包含大象流的应用,使用字节为评估单元;在QoS管理中,每一条与QoS相关的流都很重要,需要以流为评估单元
传统的流量分类方法
- 基于端口号的分类方法
- 分类器通过端口号判断应用程序
- 局限性:未注册端口以及动态端口技术
- 基于负载的方法
- 获取不同应用的流量特征签名
- 局限性:寻找特征的资源消耗,加密技术的使用
流量分类面临的主要挑战
第22讲 机器学习分类方法
机器学习的流程
- 数据集处理
- 特征工程
- 模型选择和建立
- 模型评估
流量分类中使用的机器学习方法
- 有监督学习方法
- 使用有标签数据,需要提前提取特征和标签
- 决策树算法、朴素贝叶斯、支持向量机
- N折交叉验证、分层交叉验证解决数据集大小问题
- 优点:识别特定类别流量;不足:无法识别未知流量
- 无监督学习方法
- 只提取特征,结果可能出现未知类
- 层次聚类、K-means、EM算法
- 确定类的个数,最佳的类别数是多少,避免统一类被聚类到多个相似类
- 优点:识别未知流量;不足:无法判断未知流量的真实类别、聚类结果的最佳数量
- 半监督学习方法
相关术语
- 流/单向流:一系列具有相同五元组(源/目的IP地址、源/目的IP端口和协议号)的数据包
- 双向流:一对在同一源/目的IP地址和端口之间方向相反的单向流
- 全流:一个完整的生命周期(从通信连接建立到结束)的双向流
第23讲 深度学习分类方法
深度学习方法用于流量分类
- 多层感知器
- 主要与其他深度学习方法结合使用
- 卷积神经网络
- 自动检测重要特征
- 分层进行特征提取
- 自动编码器
- 深度生成模型
- 自动进行特征提取和选择
- 处理数据集不平衡问题
深度学习方法用于流量预测
- 网络流量预测的重要性
- 对网络中连接未来状态的预测
- 网络流量预测和建模是衡量电信系统性能的两个关键步骤
- 不适合机器学习
- 流量出现不可预测性和随机性
- 流量序列变化、概念漂移
深度学习方法用于故障管理
- 故障检测
- 基于自动编码器的算法将检测任务转化为分类任务
- 故障定位
- 利用CNN和RNN对分布式系统进行故障检测和诊断
- 故障缓解
- 基于深度学习的方法缓解5G网络的链路故障
深度学习方法用于网络安全
- 滥用检测和异常检测
- 流量数据的非线性特性导致难以使用机器学习方法
- 提出基于深度学习的自适应误用检测系统
- 恶意软件检测和僵尸网络检测
- 提出基于深度学习的恶意软件检测系统
- 使用叠加去噪自动编码器网络进行僵尸网络检测
第8章 流量安全性分析
第25讲 DDoS流量检测方法
异常流量分类
- 点异常
- 当特定数据实例偏离数据集的正常模式时,可以将其视为点异常
- 普通用户到root(U2R):使用社会工程方法或嗅探密码,利用漏洞获得管理员账户的权限,即达到root权限
- 远程访问到普通用户(R2U):通过自动脚本、暴力手段等攻击方式猜测密码,达到本地访问权限
- 上下文异常
- 当数据实例在特定上下文中行为异常时,称为上下文异常或条件异常
- 探测:收集目标网络的机器类型和数量信
- 集体异常
- 当一组相似的数据实例相对于整个数据集表现异常时,该组数据实例称为集体异常.
- DDoS攻击:服务器被大量连接请求淹没时,拒绝合法用户访问web服务
异常流量检测方法
- 基于分类的异常检测
- 支持向量机、贝叶斯网络、神经网络、基于规则
- 特点:针对特征集建立正常的行为模式
- 优势:能够检测到新型的攻击
- 缺点:由于未包含在知识库中的正常流量也会被视为攻击,因此会出现部分误报
- 基于信息论的异常检测
- 基于统计的异常检测
- 混合模型
- 主成分分析
- 基于聚类的异常检测
- 正则聚类
- 联合聚类
DDoS攻击
- 基于TCP协议的DDoS攻击
- 利用TCP协议面向连接的特点使用多种报文进行攻击.
- SYN 泛洪攻击:SYN报文(TCP flag:2)服务器忙于处理凭空出现的SYN报文,消耗资源.
- 基于UDP协议的DDoS攻击
- 利用UDP协议的无连接、无法对源的真实性进行确认的特点进行攻击.
- UDP泛洪攻击:包含随机数据的UDP报文服务器忙于处理凭空出现的UDP报文,消耗资源.
- 基于HTTP协议的DDoS攻击利用HTTP协议的GET
- POST与设计时的一些报文特点进行攻击.
- 基于SSL/TLS协议的DDoS攻击
- 利用SSL/TLS协议数据加解密与重协商对计算资源的大量需求进行攻击
第26讲 恶意流量检测方法
恶意流量分类
- C&C直连
- 恶意软件在受害主机执行后,通过TLS等加密协议连接C&C(攻击者控制端),这是最常见的直连通讯方式.
- 检测主机联网环境
- 恶意软件在连接C&C服务器之前,会通过直接访问互联网网站的方式来检测主机联网情况
- 母体程序正常通信
- 感染式病毒是将恶意代码嵌入在可执行文件中,恶意代码在运行母体程序时被触发.母体被感染后产生的流量有母体应用本身联网流量和恶意软件产生的流量两类.
- 白站隐蔽中转
- 白站是指相对于C&C服务器,可信度较高的站点.攻击者将控制命令或攻击载荷隐藏在白站中,恶意软件运行后,通过SSL协议访问白站获取相关恶意代码或信息.
- 蠕虫传播通信
- 蠕虫具有自我复制、自我传播的功能,一般利用漏洞、电子邮件等途径进行传播.
恶意流量特征
- TLS
- DNS
- HTTP
恶意流量采集
- 运行恶意软件采集流量
- 针对恶意软件的运行条件进行适配
- 多次运行恶意软件
- 尝试改变运行环境使恶意软件数量类型多的恶意流量
- 模拟生成恶意软件流量
- 使用流量生成工具产生恶意流量数据集
- 可以非常准确地标记数据包的攻击类别
- 难以模拟含有恶意软件未知的网络行为特征的数据包
- 利用标记跟踪恶意流量
- 利用公开网站中搜集的黑名单条目进行匹配
- 主要依赖历史经验,缺乏统一的衡量标准
第27讲 蜜罐流量测量方法
蜜罐技术发展
- 互联网安全状况
- 安全基础薄弱:操作系统软件存在大量漏洞;安全意识弱、缺乏安全技术能力
- 任何主机都是攻击目标:DDoS、跳板攻击需要大量僵尸主机;蠕虫、病毒的泛滥;各种新的攻击方式层出不穷
- 攻击者不需要太多技术:攻击工具的不断完善(Metasploit);攻击脚本和工具可以很容易得到和使用(通过搜索引擎或者github)
- 蜜罐技术的提出:
- 增加攻击代价
- 减少对实际系统的安全威胁
- 了解攻击者所使用的攻击工具和攻击方法
- 追踪攻击源、攻击行为审计取证
蜜罐技术分类
- 蜜罐的分类
- 生产蜜罐:生产蜜罐伪造真实的服务、设备或整个操作系统通过捕获攻击者并防止他们进一步入侵网络
- 研究蜜罐:收集攻击者的信息,研究攻击策略和了解现有网络安全威胁的工具
- 高交互蜜罐特点
- 一个常规的计算机系统,如计算机、路由器或者交换机。
- 每个与高交互蜜罐的交互都是可疑的,可以指向一个可能的恶意行为。
- 将出入蜜罐的所有流量记录下来。
- 低交互蜜罐特点
- 低交互蜜罐模拟服务、网络堆栈或一台真实机器的其他功能,允许攻击者与目标系统有限交互
- 安装配置简单。
- 收集关于攻击模式的高级别信息。
- 蜜罐技术优势
- 高度保真的小数据集:低误报率;低漏报率
- 能够捕获新的攻击方法及技术
- 非资源密集型
- 原理简单贴近实际
- 蜜罐技术弱势
- 劳力/技术密集型
- 局限的视图
- 不能直接防护信息系统
- 带来的安全风险
蜜网技术
- 蜜网实质上是一种研究型、高交互型的蜜罐技术。多个蜜罐组合成为一个蜜罐网络——蜜网
- 包括一个或多个蜜罐
- 多层次的数据控制机制-高度可控
- 全面的数据捕获机制
- 辅助研究人员对攻击数据进行深入分析
- 通过以下三个过程来实现
- 数据控制机制
防止蜜网被黑客/恶意软件利用攻击第三方 - 数据捕获机制
获取黑客攻击/恶意软件活动的行为数据
网络行为数据-网络连接、网络流
系统行为数据-进程、命令、打开文件、发起连接 - 数据分析机制
理解捕获的黑客攻击/恶意软件活动的行为
- 数据控制机制
- 蜜墙(honeywall)是一个部署蜜网的关键部件.
- 防火墙把网络分隔为三个部分,分别是陷阱部分、互联网和管理控制平台。
- 所有进出蜜网的数据包都必须经由防火墙过滤,路由器进行补充过滤。
- 第二代蜜网技术引入了蜜网网关(Honeywall),其集成了数据控制、数据捕获和数据收集功能
第28讲 沙盒流量测量方法
沙盒原理
- 沙盒技术的提出
- 将含有恶意代码的程序放在一个隔离的试验环境中运行,给可疑程序提供一个高度隔离的试验环境,程序在这个环境中运行对当前系统进行的改变都在可控范围内。
- 沙盒技术
- 沙盒(Sandbox)也叫做沙箱,宿主操作系统(Host operating system)的影子系统(Shadow system)。在沙盒中运行的所有操作都是虚拟的,真实的系统文件和相关配置不会被改动。
- 沙盒方法
- 创造一个虚拟的程序运行环境
- 将目标程序放入其中执行
- 系统确定待测程序是否属于恶意程序,从而决定是否终止目标程序的运行
- 沙盒分析结束后,分析系统会生成目标程序的分析日志,用户可以通过该分析日志来确定目标程序是否具有恶意性
沙盒分类
- 应用层沙盒
- 运行在操作系统的用户层
- 需要的服务都是通过操作系统来提供的
- 优点:现难度小,部署快,使用简单,稳定性强,具备丰富的用户界面,适用于PC用户。
- 缺点:安全性较低,完全依赖于操作系统内核的安全机制。一旦操作系统的漏洞被恶意代码利用,则容易被完全绕过;性能较差。
- 例子:Chrome浏览器、Sandboxie
- 内核层沙盒
- 驻留在内核的地址空间当中
- 方便的借助处于硬件级别的保护机制来实现安全隔离
- 优点:和应用层沙盒对比,处于内核层次的沙盒系统具备安全度更高以及性能更好。
- 缺点:开发难度大;不容易在闭源操作系统上进行移植和部署。例如Windows OS
- 例子:典型代表是DD/OS(Device Driver OS)。
- 混合沙盒
- 结合了应用层和内核层沙盒技术的沙盒系统
- 内核代码提供了操作系统隔离支持和相关的执行机制
沙盒底层技术
- 虚拟化技术
- 虚拟化是指计算元件在虚拟的环境上而不是真正的环境里运行。这个虚拟环境可以是为了简化管理或是提供优化资源的解决方案
- 虚拟化带来以下几个优势:
- 虚拟化技术支持异构操作系统的整合
- 资源共享
- 简化配置过程,资源使用更加灵活
- 利用虚拟化技术实现负载的动态优化
- 提高系统稳定和安全性
- 虚拟化技术可以进行统一管理
- 虚拟化可以分为完全虚拟化和半虚拟化以及硬件辅助虚拟化
- 完全虚拟化的实现思路是在底层硬件和上层服务之间搭建一个抽象层,一般称之为hyper-visor
- 半虚拟化的设计可以减轻hyper-visor的负担,通过改变客户操作系统使其能够与hyper-visor协同工作。
- HOOK API技术
- API hooking即API钩子,对API函数的调用进行拦截。最初的Hook是在windows提出的一种可以用来替换DOS系统的“中断”的系统机制,也叫"钩子"或者"挂钩"。
- Hook的应用模式
- 观察模式:不做更改,告诉Hooker截取的一个事件,例如有道词典的屏幕取词;
- 注入模式:截取的一个事件,然后注入自己的事件或者服务,例如插件;
- 替换模式:把截取到的事件换成需要实现的功能或服务,黑客和恶意代码常用的模式;
- 共享模式:共享模式指的是一个应用程序想获得另一个应用程序的数据,这时可以通过Hook对方的内存管理器;
第9章 网络资源探测
第29讲 扫描探测方法
为什么需要扫描
- 背景
- 互联网面临大量威胁
- 需要对互联网进行资源探测、安全评估
- 作用
- 感知互联网拓扑及地址分布,确定服务器运行服务,了解其安全配置
- 发现网络与系统安全漏洞
扫描方法概述
- 扫描方法
- 主机扫描:映射目标网络拓扑结构,确定目标网络上可达主机
- 端口扫描:确定可达目标主机上运行的服务类型与细节
- 操作系统指纹扫描:确定目标主机操作系统版本、内核版本等
- 分布式扫描:解决单调扫描性能差、易被检测的问题
- 快速扫描:解决传统扫描需要花费大量资源且用时过长的问题
- IPv6空间扫描:快速遍历IPv6空间进行扫描
- 漏洞探测:综合运用上述扫描方法进行漏洞发现
主机扫描:
- 确定目标网络拓扑结构、可达主机范围
- 传统方法:
- ICMP Echo 扫描
- ICMP Sweep 扫描:一次探测多个目标主机。通常这种探测包会并行发送,以提高探测效率
- Broadcast ICMP扫描:利用了一些主机在ICMP实现上的差异,设置ICMP请求包的目标地址为广播地址或网络地址,则可以探测广播域或整个网络范围内的主机,子网内所有存活主机都会给以回应
- 高级方法:
- 异常IP包头:常见的伪造错误字段为Header Length和IP Options
- 无效字段IP包头:向目标主机发送的IP包中填充错误的字段值,目标主机或过滤设备会反馈ICMP Destination Unreachable信息
- 超长包探测:若构造的数据包长度超过目标系统所在路由器的PMTU且设置禁止分片标志,该路由器会反馈Fragmentation Needed and Don’t Fragment Bit was Set差错报文,由此可以探测
- 反向映射探测:构造可能的内部IP地址列表,并向这些地址发送数据包。当对方路由器接收到这些数据包时,会进行IP识别并路由,对不在其服务的范围的IP包发送ICMP Host Unreachable或ICMP Time Exceeded错误报文,没有接收到相应错误报文的IP地址可被认为在该网络中
端口扫描
- 确定目标主机运行服务类型等细节
- 遵循原则(TCP端口扫描):
- 当一个SYN或FIN数据包到达一个关闭的端口时,TCP丢弃数据包,同时发送一个RST数据包
- 当一个RST数据包到达一个监听端口时,RST数据包被丢弃
- 当一个ACK位的数据包到达一个监听端口时,数据包被丢弃,并发送一个RST数据包
- 当一个SYN位关闭的数据包到达一个监听端口时,数据包被丢弃
- 当一个SYN的数据包到达一个监听端口时,产生"三次握手"会话,同时回送一个SYN|ACK数据包
- 当一个FIN数据包到达一个监听端口时,数据包被丢弃;而一个关闭的端口返回RST数据包
- 主动栈指纹探测:
- 方法
- TCP SYN扫描
- TCP FIN扫描
- TCP NULL扫描XMAS扫描
- TCP ftp proxy扫描Reverse Ident扫描
指纹扫描
- 主动栈指纹探测:
- FIN探测:跳过TCP三次握手的流程,给目标主机发送一个FIN包
- Bogus标志探测:某些操作系统会设置SYN包中TCP头的未定义位(一般为64或128),而某些操作系统在收到设置了Bogus位的SYN包后,会重置连接
- ICMPError报文统计探测:RFC1812规定了ICMPError报文的发送速率,操作系统探测时可以向随机的高端UDP端口大量发包,然后统计收到的目标不可达消息.
- ICMPError报文引用探测:不同操作系统产生ICMPError报文所引用的内容长度不同
- 被动栈指纹探测:
- TCP初始窗口尺寸:不同操作系统的初始窗口尺寸不同.比如AIX设置的初始窗口尺寸是Ox3F25,而WindowsNT5、OpenBSD、FreeBSD设置的值是0x402E
- Don'tFragment位:某些操作系统会设置IP头的DF位来改善性能
- TCPISN采样探测:利用TCP初始序列号进行指纹探测.建立TCP连接时,SYN/ACK中初始序列号ISN的生成存在规律,比如固定不变、随机增加(Solaris、FreeBS等),真正的随机(Linux2.0.*),而Windows使用的是时间相关模型,ISN在每个不同时间段都有固定的增量
分布式扫描
- 传统单点扫描弊端
- 适用于层次简单、规模较小的局域网,但是随着互联网规模的增加、应用性能需求的提升,运行速度较慢,且需要消耗大量资源.
- 单点扫描易被检测.
- 分布式扫描
- 将传统的单点扫描拓展为多点共同扫描,并且多节点处于跨区域不同的子网之中,通过动态增加扫描节点,可以提升整体系统的扫描效率.
- 通过分布式扫描技术,可以更快且更隐蔽地进行互联网资源探测.
- 三层分布式扫描架构
- 控制层:承担着扫描任务的分配、定义、注册、调度、下发等责任。
- 中间件层:采用消息队列技术,通过使用消息中间件,能够将控制层与扫描层解耦合。
- 感知层:负责实际扫描任务的执行,并反馈扫描任务结果。
快速扫描
- 传统扫描弊端
- 适用于层次简单、规模较小的局域网,但是随着互联网规模的增加、应用性能需求的提升,运行速度较慢,且需要消耗大量资源.
- Zmap快速扫描
- 专门设计用于执行互联网范围内的扫描,能够在单台机器上在45分钟内扫描整个IPv4地址空间且不需要特定的硬件或者内核模块,该速度接近千兆以太网的理论最高速度.
- Zmap的模块化架构支持多种类型的单包测试,包括TCPSYN扫描、ICMPecho扫描和特定于应用程序的UDP扫描.
- 用户可以借助其接口轻松的实现特定操作,如在已发现主机上完成协议握手,相比于Nmap,其探测IPv4空间的速度快了1300倍.
IPV6空间扫描
- 背景
- 随着IPv4逐步演进为IPv6,IPv6空间扫描也成为地址扫描技术较为关键的一环.
- IPv6地址长达128位,其复杂的地址结构增加了地址扫描的难度.
- IPv6地址复杂性
- IPv6地址的分配方式,例如在无状态地址自动分配方式下,IPv6客户端可以决定自己的IPv6地址
- 大量IPv6地址前缀被分配给不同的ISP,同ISP的地址分配策略的自由性使得全网扫描所有子网IPv6地址更加复杂
- IPv6地址列表
- 被动收集IPv6流量流数据
- 主动数据源
- traceroute数据
第30讲 漏洞探测方法
为什么要做漏洞探测
- 背景
- 新发现的安全漏洞每年都会增加一倍
- 每年都会发现新类型的安全漏洞
- 网络安全管理员需要定期修补漏洞
- 黑客经常利用这些漏洞发起攻击
- 漏洞
- 系统脆弱性
- 硬件、软件、协议的具体实现或系统安全策略上存在缺陷和不足:功能性缺陷、安全性缺陷
漏洞扫描
- 基于网络策略
- 通过网络来扫描远程计算机中的漏洞,基于网络的漏洞扫描可以看作为一种漏洞收集,根据不同漏洞的特性构造网络数据包,发给网络中的一个或者多个目标服务器,以判断某个特定的漏洞是否存在。
- 特点:
扫描器的设计和实现与目标操作系统无关
通常的网络安全扫描不能访问目标主机的本地文件(具有目标主机访问权限的扫描除外)
扫描项目主要包括目标的开放端口、系统网络服务、系统信息、系统漏洞、远程服务漏洞、特洛伊木马检测和拒绝服务攻击等
- 基于主机脆弱性策略
- 通常在目标系统上安装一个代理(Agent)或者是服务(Service)以便能够访问所有的文件和进程,一次来扫描计算机中的漏洞。
- 特点
运行于单个主机,扫描目标为本地主机
扫描器的设计和实现与目标主机的操作系统相关
可以在系统上任意创建进程
扫描项目主要包括用户账号文件、组文件、系统权限、系统配置文件、关键文件、日志文件、用户口令、网络接口状态、系统服务和软件脆弱性等
- 基于网络的脆弱性、基于主机的脆弱性策略比较
- 基于网络的脆弱性策略从入侵者的角度进行检测能够发现系统中最危险、最可能被入侵者渗透的漏洞,扫描效率更高,而且由于与目标平台无关,通用性较强、安装简单。缺点是不能检査不恰当的本地安全策略,另外也可能影响网络性能。
- 基于主机的脆弱性策略可以更准确地定位系统的问题,发现系统的漏洞。然而其缺点是与平台相关升级复杂,而且扫描效率较低(一次只能扫描一台主机)。
- 主动漏洞探测
- 给目标主机发送特定的包并收集回应包来取得相关信息的.无响应本身也是信息,它表明可能存在过滤设备将探测包或探测回应包过滤了
- 优点:在于通常能较快获取信息准确性也比较高
- 缺点:易于被发现,很难掩盖扫描痕迹而且要成功实施主动扫描通常需要突破防火墙,但突破防火墙是很困难的
- 被动策略漏洞探测
- 被动扫描是通过监听网络包来取得信息
- 优点:对它的检测几乎是不可能的.被动扫描一般只需要监听网络流量而不需要主动发送网络包,也不易受防火墙影响
- 缺点:速度较慢,准确性较差,当目标不产生网络流量时就无法得知目标的任何信息
第10章 网络性能测量方法
第31讲 网络性能测度定义
网络性能测量概述
- 网络性能测量是网络测量领域的核心分支
- 网络性能测量是量化网络性能指标、理解和认识网络行为最基本和最有效的手段
- 虽然不同组织和文献对网络性能参数的定义不尽相同,但绝大多数的研究都将带宽、丢包、时延和抖动作为评价网络性能的基本参数指标,并据此分析网络的连通性、可靠性、稳定性和安全性.
带宽
- 带宽是一个非常有用的概念,在网络通信中的地位十分重要.
- 带宽的实际含义是在给定时间等条件下流过特定区域的最大数据位数.
- 把城市的道路看成网络,道路有双车道、四车道也许是八车道,人们驾车从出发点到目的地,途中可能经过双车道、四车道也许是单车道.车道的数量好比是带宽,车辆的数目就好比是网络中传输的信息量.
- 再用城市的供水网来比喻,供水管道的直径可以衡量运水的能力,主水管直径可能有2m,而到家庭的可能只有2cm.在这个比喻中,水管的直径好比是带宽,水就好比是信息量.使用粗管子就意味着拥有更宽的带宽,也就是有更大的信息运送能力.
- 带宽是影响网络性能最重要的测度.
- 带宽测量中通常会涉及到背景流量(crosstraffic),这是指网络路径上已经存在的流量.
- 若背景流量在任意时刻的传输速率保持不变,则称背景流为恒定背景流或流体模型,其他类型背景流则称为突发背景流或非流体模型.
- 带宽:链路带宽、路径带宽和可用带宽.
吞吐量
- 吞吐量是单位时间内传输的消息数
- Wi-Fi 6(原称:IEEE 802.11.ax)即第六代无线网络技术,允许与多达8个设备通信,最高吞吐量可达9.6Gbps.
- 相比于上一代802.11ac的Wi-Fi5,前者最高吞吐量为的3.5Gbps,Wi-Fi6的理论速度提升了近3倍.
- 术语"吞吐量"和"带宽"通常被认为是相同的,但它们是不同的.
- 带宽是指在一个固定的时间内,能通过的最大数据;
- 而吞吐量是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等作为度量).
时延
- 在网络数据通信过程中,时延是指一个报文或分组从网络的一端传送到另一端所耗费的时间.
- 时延可能会受到用于传输数据的任何组件的影响,例如:工作站、广域网、路由器、局域网服务等
- 处理时延:主机或路由器在收到分组后要花费一定的时间进行处理,比如分析首部,提取数据,差错检验,路由选择等。一般高速路由器的处理时延通常是微秒或更低的数量级。
- 排队时延:路由器或者交换机处理数据包排队所消耗的时间。一个特定分组的排队时延取决于先期到达的、正在排队等待向链路传输分组的数量。如果该队列是空的,并且当前没有其他分组在传输,则该分组的排队时延为0;另一方面,如果流量很大,并且许多其他分组也在等待传输,该排队时延将很大。实际的排队时延通常在毫秒到微秒级。
- 发送时延:是发送数据所需要的时间,也就是从网卡或者路由器队列递交网络链路所需要的时间。用L比特表示分组的长度,用R bps表示从路由器A到路由器B的链路传输速率,传输时延则是L/R。实际的发送时延通常在毫秒到微秒级。
- 传播时延:传播时延是指在链路上传播数据所需要的时间。传播时延等于两台路由器之间的距离除以传播速率,即传播时延是D/S,其中D是两台路由器之间的距离,S是该链路的传播速率。实际传播时延在毫秒级。
丢包
- 丢包(Packet loss)是指一个或多个数据包的数据无法透过网上到达目的地.
- 丢包在日常生活中很常见.
- 丢包可能造成流媒体技术、VoIP、在线游戏和视频会议的抖动(jittering),并会一定程度上影响到其他的网上应用。要特别注意的是,丢包不一定表示有问题,在某种程度上是有可能被传输双方所接受的。
- 一些网络传输协议如TCP有提供可靠的数据包交付。在丢包发生时,接收器可以要求发送方重传或自动地重新发送。TCP可以撤消丢包,但经常发生的重传已丢失数据包可能导致网络吞吐量下降。用户数据报协议(UDP)本身没有规定恢复丢失的数据包,因此使用UDP的应用软件需要自行定义机制来处理数据包的丢失问题。
第32讲 网络带宽测量方法
可变包长技术
- VPS方法向测量路径中发送TTL(time to live)受限制的探测包,通过使TTL值减少为0,使得探测报文在指定路由器上发生超时,并向源端返回一个ICMP TTL超时报文,则源端可通过收到的ICMP报文来计算到达指定链路的往返时延RTT(如下图所示)。
- 从发送端到路径每跳的最小RTT中不包含探测包在路由器中的排队时间,其与探测包大小成正比,与链路带宽成反比,因此可以通过线性回归技术逐跳地测量路径上每一跳链路的容量(如下图所示),再根据连续两跳的容量关系,算出整条链路的容量。
- VPS方法的主要过程比较简单,设从路径源端发送长度为L的探测报文,TTL为n,则往返时延的计算公式如下:
- 通过多次测量,可获得排队时延为0的探测包,即多次测量可以得到最小时延
- 相同路径中,其传播时延相同;
- 路由器处理时延相对固定;
- 返回应答报文的长度固定。
- 基于上述条件,上述公式可化简公式为
即可得到链路Ln的容量Cn的计算公式如下:
包对技术
- 测量包对技术(PP)主要用于测量路径带宽,如下图为包对进入/离开链路的包间间隔关系
- 包对在该跳链路之前的散布时间??????和离开该跳链路之后的散布时间?out满足公式如下:
- 若假设包对经过路径中每跳链路时链路都不存在背景流量,则包对在目的端的散布时间为公式如下:
- 由此可以得到测量路径容量的公式:
两种不同方法对比
- 可变包长技术
- 优点:测量精度高
- 缺点:测量时间较长,消耗的带宽也较大ICMP回应包可能会被目标网络忽略
- 包对技术
- 优点:对网络的负载较小
- 缺点:受背景流量的影响非常严重
可用带宽测量方法
- 可用带宽测量是网络测量研究领域中的重点,拥有数量众多的算法。
- 探测间隔模型(probe gap model,简称PGM)
- 探测速率模型(probe rate model,简称PRM)
- PGM的代表性算法有Jitterpath,Spruce,Cprobe,IGI,bing,Aprobing;
- PRM具有代表性的算法有SLDRT,PTR,Pathload,pathChirp,TOPP,Yaz等
探测间隔模型
- PGM算法利用探测包的速率大于可用带宽时会发生排队的现象,研究经过链路前后的探测包间隔的变从而得到可用带宽值:
基本公式为:
- Spruce模型