《日志管理与分析权威指南》一2.2.1 日志格式和类型

2.2.1 日志格式和类型

在开始讨论格式和其他信息之前,我们应该指出,为了满足前文所述的目标,任何日志记录机制都可以从逻辑上分为四个部分:

  • 日志传输
  • 日志语法与格式
  • 日志事件分类学
  • 日志记录的设置、配置与建议

这些主要特性将在整个报告以及本项目下生成的其他文档中使用。让我们来详细地研究它们的关键概念。
日志传输就是将日志消息从一个地方转移到其他地方的方式。
事件传输协议有许多种,例如syslog、WS-Mangement和许多专有的产品特定的日志传输协议,还有一些日志记录机制没有自己的传输方法(例如,只有本地日志文件)。合格的日志传输机制必须既能保证日志数据的完整性、可用性以及机密性(如果有需求的话),又能维护日志的格式和意义并使发生的所有事件都能得到正确的表示,具备正确的时间和事件顺序。日志传输中最重要的需求是保证各个日志(事件记录)以及整个事件流/日志的完整性。更重要的是保存每个日志条目的正确时间戳。
以下列出一些知名的日志传输机制:

  • syslog UDP
  • syslog TCP
  • 加密syslog
  • SOAP over HTTP
  • SNMP
  • 传统文件传输方式,例如FTPS或SCP

例如,syslog UDP作为迄今为止最流行的日志传输机制,应用于数以百万计的Unix派生系统和网络设备之上。尽管自身有多个极大的弱点(例如缺少消息送达和可用性的保证),但syslog依旧被认为是转移日志数据的最佳方式。
日志语法与格式定义日志消息形成、传输、存储、审核以及分析的方式。在最简单的情况下,每条事件记录可以作为文本字符串看待,事件的消费者可以在日志中执行全文搜索,期望文本具有一致性。但为了进行可靠的自动化事件分析,事件的消费者和生产者对事件记录语法的理解和认同就显得十分必要了。
下面列出一些知名的日志格式:

特别需要说明的是,每个格式化事件记录的每个字段都包含着以某种形式表示的信息。尽管对人类来说可能显而易见,但是“sun 12 3 2010 11:11pm”和“2010-12-03T11:11:00Z”并不能清晰地表示同一个时间。而且,在第一个例子中,由于时区信息缺失,我们并不能确切地知道真正的时间,考虑到不同地区的日期表示顺序习惯不同,日期信息也存在歧义(3月12日还是12月3日)。下面是日志文件格式的一些例子:

很不幸的是,现在的大部分日志依然没能遵循任何指定或预定的格式(或者说只有消息的一小部分遵循,例如时间戳),它们仍然被认为是自由格式的文本。
日志格式有不同的特性。首先,日志文件是二进制还是ASCII码格式?是否可以用一个简单的文本浏览器或编辑器读取日志文件,或者需要使用转换工具以得到日志中的信息?
人类可读或ASCII码日志的最明显例子是Unix syslog,下面是一个例子:

Web服务器、防火墙和各种平台上的许多应用程序都采用容易查看的文本文件记录日志。
但是要注意,人类可读、文本以及ASCII码日志格式并非完全同义,Unicode文本(并非ASCII)并不少见,而且,并不是每个人都能够(或愿意)阅读嵌套关系复杂、包含冗长文本行和许多标记的XML格式日志文件。
二进制文件最常见的例子就是Windows事件日志。读者可能表示反对,认为事件日志是容易阅读的。但是阅读事件日志需要使用事件查看器。这个实用工具将二进制日志文件(一般存储在C:WINDOWSSYSTEM32CONFIGdirectory,扩展名为Evt)转换成人类可读的形式,如图2.2所示。
其他的常见二进制格式还有Unix wtmp文件,它包括了登录记录和包含进程统计信息的pacct。虽然严格地说不算是一种日志格式,但Tcpdump二进制格式可以被定义为一种网络包数据的日志记录格式,因此也可被归入这一类。

为什么一些程序员选择二进制作为日志数据格式?可以肯定的是,如果所有日志记录是基于文本、容易阅读的,对我们人类来说会更简单!但是,二进制日志记录有极具说服力的理由:性能和空间。如果某个系统每秒要收集成千上万条日志记录,即使对于现代CPU此任务也并不轻松。而且系统用户通常有一个合理的期望,即日志记录不会破坏系统性能。事实上,反对日志记录最常见的理由就是“它将影响性能”。而我们的回应通常是:“如果系统崩溃的时候你不知道原因,性能再好又能如何?”
二进制格式日志条目通常尺寸更小(平均信息量低),因此格式化或写入花费的处理更少。由于消息通常比ASCII码的消息更小,所以日志文件占据的磁盘空间更少,在传输时占用的IO资源也更少。
另外,解析二进制文件需要的处理通常更少,而且字段与数据类型的定义清晰,使分析更加高效。ASCII码日志解析器不得不处理更多的数据,并且常常需要模式匹配来抽取信息中的有用内容。
压缩日志从定义上看属于二进制日志,它进一步为采用二进制日志记录提供了理由:日志记录可以进行压缩。显而易见,若日志文件是一个加密格式,则它必须采用二进制形式。采用二进制日志的其他原因包括它们更难于阅读。为什么这一点成为优势呢?因为所谓的“无名安全性(security by obscurity)”,许多人认为这使得他们的日志文件“更安全”。
另一类日志格式则是关系型数据库,它既不是真正的文本也非二进制格式,或者可以视为一种很花哨的二进制格式。关系型数据库将二进制记录存储在一个添加(称为“插入”(insertion))和读取(称为“选择”(selection))性能很高的表中,该表由数据库模式(schema)定义。数据库模式是用来定义表中的记录和整个数据库中的表的方法。
日志类型的另一个重要区分方法就是其格式是开放的还是专有的。开放格式意味着其格式在某个地方记载,可能是标准化文档(例如ISO、ANSI或Internet标准)或参考文档(例如RFC)。专有格式可能公开也可能不公开,通常由特定的设备供应商使用。但是,专有格式通常是没有文档的,人们只有依靠供应商的日志阅读和处理工具。
理解专有文本格式的方法只能是研究它(“逆向工程”,尽管这个术语更常用于二进制格式)。但是,这种方法面临曲解某个特定字段意义、数据类型以及取值范围的风险,往往得到相当无用或者误导性的结果。
日志记录的设置、配置和建议,对于事件生产者和系统操作人员决定哪些事件应该记录,或在单个设备上启用哪些日志记录来说是最常见的途径。利用常见的事件表达方式,倡导产品应该生成什么样的事件是可能的。虽然人们期待防火墙记录日志事件,如它拦截的连接企图,但是迄今为止并没有标准的日志记录规则。同样重要的是,不仅要关注所记录的事件,还要着眼于每个事件日志记录应包含的细节信息。
目前这一领域没有任何行业范围的日志记录建议。PCI DSS依从性是这种建议的常见例子之一。

具体而言,PCI DSS日志记录规定(参见图2.3)每条日志条目最少应包含用户名、事件类型、日期和时间、成功或失败的指示、受影响的组件名称以及事件的源系统(事实上这表示了一套非常有用的常见日志细节信息)。
许多其他行业组织针对日志记录的事件和详情也创造了自己的日志记录建议,本报告的下文会概括总结这些建议。

时间: 2025-01-17 00:06:57

《日志管理与分析权威指南》一2.2.1 日志格式和类型的相关文章

《日志管理与分析权威指南》一3.2.2 SNMP

3.2.2 SNMP SNMP设计用于满足网络管理员不断增长的需求.从20世纪90年代初起,SNMP已经集成到几乎所有你能想到的网络系统中,包括许多网络安全系统.SNMP是查询和配置设备的一种协议.SNMP陷阱和通知是设备在特定事件发生时生成的特殊SNMP消息.虽然SNMP协议整体来说不是一个日志记录系统,但是SNMP陷阱和通知可以看作日志消息的类型.虽然许多网络设备能够通过syslog发送事件信息,但是有些设备不能,特别是旧设备,因此SNMP陷阱和通知是从设备获得其他途径不能收集的事件信息的一

《日志管理与分析权威指南》一导读

前 言 欢迎阅读本书.本书的目标是向信息技术(IT)专业人士提供理解和处理日志数据的入门知识.各种形式的日志数据是由许多类型的系统生成的.如何处理和分析日志数据是长期存在的一个问题.本书介绍能够帮助你分析日志数据和寻找恶意活动的技术和工具. 过去,系统管理员审阅日志文件,寻找磁盘错误或者内核问题.现在的系统管理员往往还要兼任安全管理员.更好地理解如何处理安全日志数据的需求从未像今天那么重要.安全性分析人员是IT专家组中负责跟踪日志分析技术的人.许多经验丰富的人曾经在"压力测试"的模式下

《日志管理与分析权威指南》一2.1 概述

2.1 概述 在第1章我们已经讨论了日志,但是,我们真正讨论的东西是什么?我们正在讨论的并不是树木.数学,或航海日志等等--让我们从定义开始,该领域中的许多讨论是粗略和模糊的,对安全分析人员或网络工程师没有什么用处,因此探寻一个围绕日志记录数据的清晰定义就变得意义非凡了.定义 在日志记录.日志分析以及日志管理中使用的许多术语(包括我们刚刚使用过的)含义模糊,充满误导或者有多重意义.在某些情况下,术语是从其他学科中"借用"的(我们偶尔会用到这些词),有时,不同的人使用不同的术语.而在另一

《日志管理与分析权威指南》一1.6 人、过程和技术

1.6 人.过程和技术 有效的日志分析策略不单单是一系列的工具,而是人.过程和技术的完美组合.技术是你使用的各种工具的组合.但是只有最新的工具是不够的,你必须知道用它们来做什么.过程决定了你如何使用这些工具.如何管理日志数据,确保它含有你所需要的信息,并从中获取你所需要的信息?过程对于这些问题来说是必需的.在法庭上用日志作为证据时,一个记录在案的日志处理过程是必不可少的.能够展示你平时怎样收集和保存日志数据,会极大地影响到你的日志数据是否可以成为证据.报告可以对此提供帮助,我们会在第12章涉及这

《日志管理与分析权威指南》一1.2.4 日志生态系统

1.2.4 日志生态系统 之前我们已经在概略地讨论了日志数据和日志消息,现在我们来了解日志是怎么在整个日志记录生态系统中使用的.日志记录生态系统,有时也称为日志记录基础设施,是组合在一起实现了日志数据的生成.过滤.规范化.分析和长期存储各项功能的组件和零件.这个系统的最终目标是能够利用日志来解决问题.而需要解决的问题取决于你的环境.例如,如果你是一个处理信用卡交易的零售组织,就必须遵守各种各样的监管和依从性要求.本节中余下的内容将会在后续的章节中展开讲解.让我们从一些在开始规划日志系统架构的时候

《日志管理与分析权威指南》一1.2.2 日志数据是如何传输和收集的

1.2.2 日志数据是如何传输和收集的 日志数据的传输和收集在概念上非常简单.计算机或者其他设备都实现了日志记录子系统,能够在确定有必要的时候生成日志消息,具体的确定方式取决于设备.例如,你可以选择对设备进行配置,设备也可能本身进行了硬编码,生成一系列预设消息.另一方面,你必须有一个用来接收和收集日志消息的地方.这个地方一般被称为日志主机(loghost).日志主机是一个计算机系统,一般来说可能是Unix系统或者Windows服务器系统,它是集中收集日志消息的地方.使用集中日志收集器的优点如下:

《日志管理与分析权威指南》一1.4 被低估的日志

1.4 被低估的日志 在很多企业环境中,日志没有得到重视.日志往往在日常工作中被完全忽视,仅仅在磁盘空间不足的时候才会引起人们的注意.而在这个时候它们往往未经查看就被删除了.某些情况下,日志中的一些消息可能指出磁盘满的原因.我们肯定都有过查看已被入侵的机器的经历,在询问日志保存的位置之后,我们会听到:"噢,它们只会占据空间,所以我们把它们删掉了."在大多数这种情况下,我们没有什么可做的.为什么日志不受重视呢?这是有很多原因的.供应商并不希望你使用它.入侵检测系统的供应商会告诉你需要最新

《日志管理与分析权威指南》一1.5.5 无聊的审计,有趣的发现

1.5.5 无聊的审计,有趣的发现 审计是验证系统或者过程是否如预期般运行的过程.日志是审计过程的一部分,形成审计跟踪的一部分. 审计往往是为了政策或者监管依从性而进行的.例如,公司往往需要做财务审计,以确保他们的财务报表和账簿相符,且所有数字都合情合理.Sarbanes-Oxley(萨班斯-奥克斯利法案)和HIPAA(健康保险便利性与责任法案)等美国法规都要求某种交易日志,以及可以用来验证用户对金融和患者数据的访问的审计跟踪.另一个例子是Payment Card Industry Data S

《日志管理与分析权威指南》一3.2.1 syslog

3.2.1 syslog 在第1章和第2章中你已经看到了syslog消息示例.本节更多的是关于协议本身的.syslog被Unix内核和许多应用程序用来记录日志消息,它最初是用于收集调试信息的.因此,它对于安全日志分析有一些限制,不是最优的.尽管如此,syslog已经成为了基于UNIX的系统中记录应用程序事件的最常用方法. syslog包含syslog守护进程(syslogd).它通常分别在开机和关机时启动和停止.应用程序通过syslog(3)库调用与syslogd通信.syslogd通过Unix

《日志管理与分析权威指南》一2.3 良好日志记录的标准

2.3 良好日志记录的标准 正如这本书中各式例子所示,许多情况下日志记录的信息是不完整的,有时甚至是没用的.那么怎样才算是"良好"的日志呢?对入侵检测.资源管理或审计来说,日志消息必须包含哪些必要的信息?由于日志的种类很多,生成日志的设备更是多种多样,因此很难定义单一的标准. 通常来说,日志应该能够告诉你如下信息: 发生了什么(即What,辅以适当细节信息:单纯的"某事发生"通常并不是特别有用) 发生于何时(即When,若有必要,包含开始时间以及结束时间) 发生于何