2.2 日志的概念
大多数操作系统都具备某种类型的日志记录功能,能够生成日志消息。然而,许多计算机用户(听起来令人惊讶,这其中包括系统管理员)并不知道日志的存在,更不要说去查看它们了。有三个主要原因驱使我们研究日志的来源范围。
首先,安全日志记录(Security logging)着眼于攻击、恶意软件感染、数据窃取及其他安全问题的检测和响应。聚焦于安全的日志记录的典型例子就是用户身份认证(登录)的记录,以及意在分析某人是否具有访问某个资源的合适授权的访问决策。
其次,运营日志记录用于为系统操作人员提供有用的信息,例如通知他们系统故障和潜在的可操作条件。运营日志也可能被用于服务配给甚至是财政决策(基于访问的定价,Web服务器访问日志是日志用于业务而不仅限于IT操作的常见例子)。这一类日志来源极为广泛,涵盖了大量的日志类型。
另外,依从性日志记录通常和安全日志记录有大量重叠,因为法规通常是为了改进系统和数据的安全而制定的。知道两类依从性日志记录的区别是极其重要的:影响IT的法规和强制要求(例如PCI DSS、HIPAA、ISO、ITIL等)以及通用准则等系统法规、其他系统设计和安全强制要求。
最后,应用程序调试日志记录(application debug logging)是特殊的一类日志记录,它服务于应用程序或系统开发人员而非系统操作人员。这种日志记录通常在生产系统中被禁用,但可以在必要时启用。许多调试日志中的消息可以供完全了解应用程序或者掌握应用程序源代码的开发人员进行分析。
上述四类日志记录由几乎所有日志源(事件生产者)产生,但是可以由不同的系统(事件消费者)以不同的方式分析或消费。
操作系统产生的日志自然属于以上所讨论的范围。例如,Windows XP、Vista以及Windows 7都有一个被叫做“事件日志”(Event Log)的日志记录系统。当系统中发生特定的事件,操作系统或某个应用程序会向事件日志系统中写入一些信息。举个例子,当某Windows程序崩溃后,往往有一个查看“更多细节”的选项,大部分用户很乐意忽略它们。那些信息正是最终进入事件日志的内容。
精明的“高级用户”由于经历过Windows NT 3.5那些“糟糕的日子”,已经知道在哪找到事件查看器(Event Viewer)(见图2.1)。
Unix系统的日志记录技术叫做syslog,它使人们回想起20世纪80年代早期Unix sendmail程序的那些日子。像Windows一样,操作系统本身以及某些应用程序向syslog中写入消息。如果系统管理员并未禁用日志记录或移除日志文件(“由于硬盘空间已满”),他可能会看到如下条消息:
这一条目包含日期、主机名以及生成此消息的服务名,还有消息自身的内容。这条特定的消息表示针对某个并不存在的域执行了一次DNS查询。
一些应用程序可以生成自己的日志,Web站点管理员可能对Web服务日志比较熟悉。
这组日志条目显示了来自不同来源(左边)的Web服务请求,包括请求的日期和时间、请求文档的位置以及表明文档交付状态的响应码(200,301以及其他)。具体地说,200表明这个文档成功显示(‘OK’代码),301表明目标被移动到了其他位置(通过google搜索“http response codes”可以找到这些代码的详细信息!)。
Web服务器日志通常会为了各种原因而被分析,包括利用率以及其他电子商务、市场类的分析。网站管理员常常挖掘Web服务器日志,研究用户概况,了解他们的行为、完成其他市场相关的任务。此外,Web服务器日志还能用来研究Web服务器性能和网站的可用性。
下面是一个Snort NIDS(网络入侵检测系统)“警报”日志消息的例子。
注意,在这个Snort的例子中,这些消息被称做警报,而其他NIDS/NIPS(网络入侵检测/防御系统)供应商称它为警告(alarms)或其他完全不同的名称。在所有情况下,它们实际上记录的都是一条用于向值班的操作人员或者安全分析人员告警的日志消息。
以上展示的所有日志记录系统都对安全日志分析很有用。Unix、Windows以及Web服务器日志可能包含有关该组织安全态势的重要线索。
上面列出的只是常见日志记录系统的几个例子,我们将在第9章和第15章介绍这些日志系统以及其他一些系统。