本节书摘来华章计算机《日志管理与分析权威指南》一书中的第2章 ,第2.3节,(美) Anton A. Chuvakin Kevin J. Schmidt Christopher Phillips 著 姚 军 简于涵 刘 晖 等译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2.3 良好日志记录的标准
正如这本书中各式例子所示,许多情况下日志记录的信息是不完整的,有时甚至是没用的。那么怎样才算是“良好”的日志呢?对入侵检测、资源管理或审计来说,日志消息必须包含哪些必要的信息?由于日志的种类很多,生成日志的设备更是多种多样,因此很难定义单一的标准。
通常来说,日志应该能够告诉你如下信息:
- 发生了什么(即What,辅以适当细节信息;单纯的“某事发生”通常并不是特别有用)
- 发生于何时(即When,若有必要,包含开始时间以及结束时间)
- 发生于何处(即Where,在哪台主机,什么文件系统上,哪个网络接口等等)
- 谁参与其中(Who)
- 参与者来源(Where)
以上所列的是绝对必要的信息——“日志记录的5个W”。许多其他领域都遵循这些准则:如新闻报道、犯罪调查等等。为了锦上添花,许多人还愿意加入下面这些信息:
- 我能从何处得到更多详细信息。
- 我怎么才能确定以上所表内容确有其事。
- 会有什么影响。
我们当然也可以梦想,期望着知道:
- 接下来会发生什么。
- 我应该再关注哪些其他事件的发生。
- 我应该怎么做。
当然,在某些情况下,上面这几项取决于特定的环境,即你的站点在某个特定事件发生后应该执行的操作与其他站点可能并不相同。
由于各种组织在一定程度上已经控制了网络设备和服务器的日志记录,应用程序日志记录显然将成为下一条战线。在习惯了整齐的Cisco ASA或其他防火墙日志以及Linux的“password accepted”(密码被接受)消息后,安全事故的调查者不得不投身可怕的应用程序日志世界,试着去对下一波攻击做出回应。这些日志可能会在这里或那里错失细节,并且并不总是有用,但至少它们是熟悉的。
当今许多应用程序日志存在的问题简直令人难以置信:日志常常缺失,关键细节被省略,没有标准格式或内容随意出现在任何位置。在这一基础上,许多安全从业人员不得不处理伪装成安全审计日志的调试日志。
表2.3阐述了这两类应用程序日志的关键区别。
与设计精良的安全审计日志相比,调试日志在应用程序框架内部的使用更频繁,由于事故响应和取证所需的关键细节在调试日志中可能没有记录,使用它们进行调查往往是令人沮丧的。第18章将更详细地讨论这一主题。
理想的日志记录场景
那么,如果我们可以让日志记录按照预想的方式工作,我们想看到的是什么信息,这些信息如何呈现?
我们希望看到的东西就只是那个时刻需要知道的,不多也不少。当然,这只是白日做梦,所以我们将满足于获得比这更多的信息——不同严重性的事件,以便日志分析人员根据当前情况做出决策。
从更高的层次来看,我们更愿将信息分为两类:现在就处理(紧急)的信息或后期再处理(不紧急)的信息。前者是高优先级的日志,清晰且可操作。不管某条目添加到日志中的哪个位置,都应该传达给操作人员或分析人员以便立即采取行动。当然,采取什么行动也应该很清晰。
后者包含的记录并不需要立即处理。然而当总结、时间推移或者审计/取证分析的时候,这些事件会提供重要的信息。
总而言之,我们乐于看到:
表2.4不是一个完整的列表,但是它提供了理想情况下应该被记录的事件以及记录的方式。优先级可能不只两个,但是概念上来说是相同的。事实上,真实环境下通常最少有3个优先级。第三个级别是无用的或不重要的“可忽略”日志消息。