《网络安全态势感知-提取、理解和预测》笔记:一

1 大数据基础

1.1 大数据的定义和特点

  • 麦肯锡
    一种规模大到在获取、存储、管理、分析方面大大超出了传统数据库软件工具能力范围的数据集合,具有海量的数据模型、快速的数据流转、多样的数据类型和价值密度低四大特征。
  • 研究机构Gartner
    大数据是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产。
  • 《大数据时代》
    大数据是指不用传统的随机分析法这样的捷径,而是采样所有数据进行分析处理。
  • 数据中心IDC
    大数据处理技术代表了新一代的技术架构,这种架构通过高速获取数据并对其进行分析和挖掘,从海量且形式各异的数据源中更有效地抽取富含价值的信息。

如果把大数据比作一种产业,那么这种产业实现盈利的关键就在于提高数据的“加工能力”,通过“加工”实现数据的“增值”。

1.2 大数据关键技术

  • 数据采集和预处理
  • 数据存储与管理
  • 数据处理与分析
  • 数据可视化呈现

1.3 大数据计算模式

  • 批量处理计算
    批处理计算是最常见的一类数据处理类型,主要用于大规模数据进行批量的处理其代表产品我们熟知的有:MapReduce、Spark等。
  • 流式计算
    流式计算是近年来兴起、发展迅猛的计算方式。流式数据是随时间分布和数量上无限的一系列动态数据集合体,数据价值随时间流逝而降低,必须采用实时计算方式给出响应。流式计算就何以实时处理多源、连续到达的流式数据,并实时分析处理,如:storm、S4、Spark Streaming等。
  • 交互式查询计算
    主要用于超大规模数据的存储管理和查询分析,提供实时或准实时的响应,如:Impala、Cassandra、hive等。
  • 图计算
    图计算是以“图论”为基础的对现实世界的一种“图”结构的抽象表达,一集在这种数据结构上的计算模式,如:GraphX、Giraph等。

2 大数据主流平台框架

2.1 Hadoop

Hadoop是Apache软件基金会下的一个开源分布式计算平台,它将一个大型的任务切割成多个部分给多台计算机,让每台计算机处理其中一部分。

  • 在硬盘存储层面,Hadoop的数据处理工作借助HDFS,将架构下每一台计算机中的硬盘资源汇聚起来,无论存储计算还是调用,都可是作为一个硬盘使用。
  • 在资源管理层面,Hadoop使用集群管理和调度软件YARN。
  • 在计算处理层面,Hadoop利用MapReduce计算框架进行计算编程,将复杂的、运行在大规模集群上的并行计算过程高度抽象为两个函数:Map和Reduce。

特点

  • 高可靠性
    采用冗余数据存储方式,即使某副本发生故障,其他的仍能正常提供服务。
  • 高效性
    采用分布式存储和分布式处理两大核心技术,能高效处理PB级别数据。
  • 成本低
    采用廉价计算机集群,成本低。
  • 可扩展性
    可高效稳定地运行在廉价的计算机集群上,扩展到数以千计的计算机节点上。
  • 支持多种编程语言

缺点
由于计算过程放在硬盘上,受制于硬件条件限制,数据的吞吐和处理速度明显不如使用内存块,且在开发过程中需要编写不少相对底层的代码,不够高效。

2.2 Spark

Spark也是Apache软件基金会下的开源项目,用于大规模数据的快速处理。

设计理念
“一个软件栈满足不同应用场景”,它有一套完整的生态系统,既能提供内存计算框架,也可支持多种类型计算(批量、流式计算和交互式查询),提供一站式大数据解决方案。

特点

  • 速度快
    采用先进的有向无环图执行引擎,以支持循环数据流与内存计算,基于内存的执行速度比Hadoop MapReduce快上百倍。
  • 通用性
    提供体系化的技术栈,包括:SQL查询、流式计算、机器学习和图算法等组件。
  • 易用性
    支持Scala、Java、Python和R等编程语言,API设计简洁。
  • 运行模式多样
    可运行在独立的集群模式中,或运行在Hadoop中,也可以运行在Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。

缺点
Spark拥有许多有点,但不能完全代替Hadoop,而是主要替代MapReduce计算模型。在实际应用中,Spark常与Hadoop结合使用,它可以借助YARN来实现资源调度管理,借助HDFS实现分布式存储。此外,比起Hadoop,Spark对硬件要求比较高,成本也相对高一点。

2.3 Storm

Storm主要用于实时的流式数据处理。

与Spark差异
Spark是“准实时”的,它先收集一段时间的数据再进行统一处理;Storm则是“完全实时”的,来一条数据就立即处理一条数据,源源不断地流入。

特点

  • 整合性
    Storm可方便地与消息队列系统(如:Kafka)和数据库进行整合。
  • 可扩展性
    Storm的并行特性使其可以运行在分布式集群中。
  • 简易的API
    Storm API在使用上既简单又方便。
  • 可靠的消息处理
    Storm保证每个消息都能完整处理。
  • 容错性
    Storm可以自动进行故障节点的重启,以及即诶单故障时任务的重新分配。
  • 支持多种编程语言
    Storm支持使用多种编程语言来定义任务。

3 大数据采集与预处理技术

  • 在计算机系统中,一般按照形态的不同可将数据分为:结构化数据和非结构化数据。
    结构化数据:结构固定,每个子弹都有特定的语义和长度,可用二维表结构来逻辑表达实现,网络安全领域常见:报警、事件日志、运维数据等。
    非结构化数据:数据结构不规则或不完整的数据,其特点是格式非常多样化,不方便使用二维表来表现,需要先对数据进行格式转换或信息提取。
  • 在大数据应用中,按照应用场景计算需求的不同可将大数据分为:静态数据和动态数据。
    静态数据:这些数据一般来自于不同数据源,利用ETL工具加载到数据仓库中,一般也不会更新,技术人员可利用数据挖掘和OLAP分析工具从中发现价值。
    动态数据:也就是流式数据,是一组顺序、大量、快速、连续到达的数据序列,被视为随时间延续而无限增长的动态数据集合。
  • 在网络安全态势感知的应用中,按照数据来源和特点可分为四类:环境业务数据、网络层面数据、主机层面数据和告警数据。
    环境业务数据:主要包括被感知环境中的各类资产和属性。
    网络层面数据:主要包括包捕获数据、会话或流数据、包字符串数据。
    主机层面数据:主要包括各种系统、应用产生的日志数据等。
    告警数据:通常来自IDS、防火墙等安全设备或如软件的报警信息。

3.1 传感器

传感器(Sensor),俗称探针,以硬件和软件的形式安装在网络中,用于采集和发送数据,以及监控网段内各类资产的信息,它工作在网卡的嗅探模式。

传感器类型

  • 采集:适合轻量化部署。
  • 采集+检测:常见、优先推荐类型。兼具采集和检测功能是传感器较为有效且合理的功能设置,更安全且更有保障。对数据进行检测后再提交给网络安全态势感知平台,也方便网络完全态势感知平台和安全管理员进行进一步的深度分析理解。
  • 采集+检测+分析:适合硬件资源有限的小型组织。

3.2 网络爬虫

网络爬虫(Web Cramler),它是一种按照一定规则自动抓取万维网信息的程序或脚本。

工作原理

  • 首先选取一部分种子URL。
  • 然后将这些URL放入待抓取URL队列中。
  • 从待抓取URL队列中取出待抓取的URL,解析其DNS,获得主机IP,将URL对应的网页下载下来,存储到已下载网页库中,并将这些URL放入已抓取URL队列。
  • 分析已抓取到的网页内容中的其他URL,再将这些URL放入待抓取URL队列中,进入下一个循环过程。

类型结构
通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫等。

3.3 日志收集系统

网络安全数据中有相当一大部分是各种设备、系统和应用中所产在的日志数据,它们往往隐藏流许多有用信息。如何将分布在各个设备、系统和应用中所产在的日志数据收集起来进行高效的汇总?我们会用到一些高性能的分布式日志收集系统,如:Flume、Apache Chuwwka等。

3.3.1 Flume

设计Flume的宗旨是向Hadoop批量导入基于事件的海量数据。Flume支持在日志系统中定制各类数据发送方,用于收集数据,同时Flume具有对数据进行简单处理并写到各种数据接收方的功能,其终点通常是HDFS。

系统架构
Flume采用三层架构,分别为Agent(代理)、Collector(收集器)、Storage(存储器),每一层都可以水平扩展。在这三个层次中,Agent和Collector均由Master统一管理,并且Master可以有多个,能有效避免单点故障。

工作原理
Flume由一组以分布式拓扑结构相互连接的代理所组成的。Flueme代理是由持续运行的Source(数据来源)、Sink(数据目标)和Channel(连接数据来源和数据目标的渠道)所构成的Java进程。使用Flume的主要工作就是通过配置代理使得各个组件连接在一起。

3.4 数据抽取工具

一款专门用于数据抽取的工具:Sqoop。

简介
Sqoop是SQL-to-Hadoop的缩写,它也是Hadoop生态系统中的一员,主要用于Hadoop和关系型数据库之间交换数据。

工作原理
导入:它通过一个MapReduce作业从数据库中导入一个表,这个作业从表中抽取一行行记录,然后将记录写入HDFS中。在向HDFS导入数据时,最重要的是确保访问的数据源是一致的,保持一致性最好的方法就是在导入时不允许运行任何对表中现有数据进行更新的进程。
导出:Saoop会根据数据库连接字符串来选择一个导出方法,会根据目标表的定义生成一个Java类(这个类能从文本中解析出记录并且能够向表中插入类型适合的值),然后去启动一个MapReduce作业,从HDFS中读取源数据文件,使用生成的类解析出记录,并执行选定的导出方法。

3.5 分布式消息队列系统

3.5.1 Kafka

Kafka是LinkedIn开源的分布式消息队列系统,具有极高的吞吐量和较强的扩展性和高可用性,主要用于处理活跃的流式数据。
Kafka可以起到两个作用:降低系统组网复杂度、降低编程复杂度。

整体架构
Kafka的整体架构非常简单,是显式的分布式架构,主要涉及三个角色:

  • 消息生产者(Producer)
  • 代理服务器(Broker)
  • 消息消费者(Consumer)

消息发送流程

Partition(分区):它是Topic物理上的分组,一个Topic可以分为多个Partition,每个Partition是一个有序、可持续添加的队列,Partition中每个消息都会被分配一个有序的序列号ID,称之为offset(偏移量),在每个Partition中此offset都是唯一的。
Kafka消息发送的流程大致为:Producer根据指定的分区方法,将消息发布到指定的topic的Partition中;Kafka集群接收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长(可配置),而不关注消息是否被消费;Consumer从Kafka集群里pull数据,并控制获取消息的offset。

特点

  • 同时为发布和订阅提供高吞吐量
    据了解,Kafka每秒可以生产25万条消息(50MB),每秒处理55万条消息(110MB)。
  • 可进行持久化操作
    将消息持久化到磁盘,因此可用于批量消费,如ETL等。通过将数据持久化到硬盘以及实现多副本,从而防止数据丢失。
  • 分布式系统,易于向外扩展,可以与ZooKeeper结合
    所有的Producer、Broker和Consumer都会有多个,均为分布式的,无需停机即可扩展机器。
  • 消息被处理的状态是在Consumer端维护
    当失败时能自动平衡。
  • 支持在线应用和离线应用的场景

应用场景

  • 消息队列
    比起大多数传统的消息系统,如ActiveMQ、RabbitMQ,Kafka有更好的吞吐量、内置的分区、冗余及容错性。
  • 行为跟踪
    可用于跟踪用户浏览页面、搜索及其他行为,以发布-订阅模式实时地记录到对应的Topic中。
  • 日志收集
    Kafka也能进行日志收集或者说日志聚合,其特别之处在于Kafka会忽略文件的细节,将其更清晰地抽象成一个个日志或者事件的消息流,这就让Kafka处理延迟更低,更容易支持多数据源和分布式数据处理,在提供同样高效的性能同时也具有更高的耐用性。
  • 数据监控和交换
    可作为操作记录的监控模块来使用,即汇集和记录一些操作信息。
  • 流处理
    最为广泛的应用场景,通过收集并保存流式数据,提供之后与之对接的Storm或其他流式计算框架来进行处理。
  • 持久性日志
    Kafka可以为一种外部的持久性日志的分布式系统提供服务。这种日志可以在节点间备份数据,并未故障节点数据恢复提供一种重新同步的机制,Kafka的日志压缩功能为这种用法提供来条件。

你可能感兴趣的:(阅读笔记与摘要)