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

3.2.1 syslog

在第1章和第2章中你已经看到了syslog消息示例。本节更多的是关于协议本身的。syslog被Unix内核和许多应用程序用来记录日志消息,它最初是用于收集调试信息的。因此,它对于安全日志分析有一些限制,不是最优的。尽管如此,syslog已经成为了基于UNIX的系统中记录应用程序事件的最常用方法。
syslog包含syslog守护进程(syslogd)。它通常分别在开机和关机时启动和停止。应用程序通过syslog(3)库调用与syslogd通信。syslogd通过Unix域套接字从应用程序和内核接收日志记录syslogd还可以选择通过端口514上的UDP消息,从远程主机接收数据。现代版本和syslog替代品(如rsyslog和syslog-ng)还能使用TCP。
syslogd的行为由配置文件控制,这个文件通常是/etc/syslog.conf。守护进程从Unix域套接字(domain socket)/dev/log(在不同的Unix/Linux变种中,该名称可能不同)读取日志消息,并写入一个或者多个输出文件,或者通过UDP将日志转发到一台收集主机。对配置文件的更改需要发送一个SIGHUP到syslogd进程,重新读取新配置。
syslog通常在系统自举时启动,但是可以运行“syslogd”手工启动。syslogd的标准参数可以指定配置文件的位置、“标记时间间隔”(下文将作解释)、是否接收来自网络的数据以及Unix域套接字的路径。选项的特殊名称在不同的Unix/Linux变种中各有不同。例如,Linux使用“-r”启用从主机接收日志(“remote”),而OSX使用“-u”。有些版本的syslogd自动接受远程消息,不需要任何命令行参数。这些选项通常有默认值,命令行参数用于覆盖默认值。特定于操作系统的信息可以查询本地的man页面。
默认syslogd配置文件(/etc/syslog.conf)的内容在不同发布版本中也不一样。大部分配置默认情况下不记录所有日志,有些对不同的程序记录不同的日志信息。你应该总是检查syslog配置文件,以确定日志中是否记录了你需要的信息。
1.用syslogd记录基本日志
那么,如何用syslogd中开始日志记录?我们建议采用一种简单的方法:将所有日志记录到本地主机上的一个文件中(我们将在后面讨论长期记录所有信息是不是好主意)。将所有日志记录到单一文件有两个好处。首先,你可以浏览一个文件查看所有日志信息。如果你不知道记录了什么,那么如何做出应该把“什么”记录到“哪里”的决策?其次,因为后面我们将把这些消息转发到一个集中日志主机,本地拷贝保留下来用于故障排除和备份用途。
要在一个文件中记录所有日志,可以在syslog.conf中加入如下文本(含义和语法将在后面解释):

如果你喜欢,可以使用不同的路径名,这里使用的只是为了举例。如果选择不同路径名,你可能必须创建这个(空)文件,然后syslog才能写入它(我们将在本章后面更多地讨论它)。
你可以注释掉文件中的其他行,避免多余地将相同的信息写到一个以上的文件中。在你想要注释或者禁用的行前面添加一个“#”。
用ps获取syslog守护进程(syslogd)的进程ID:

向该进程发送一个SIGHUP:

查看文件/var/log/messages,你应该看到如下消息:

这条消息后面可能还跟着许多其他消息。这就对啦!你现在正在记录发送到syslog守护进程的所有信息。值得注意的是,在某些Unix版本上,syslog守护进程默认不监听来自远程系统的入站请求。这意味着,具备可发送syslog日志消息的应用程序的远程系统无法在中心位置(也就是集中日志服务器)记录日志。在大部分情况下,需要在启动时向syslog守护进程传递一个特殊标志。想起来了吧,在大部分Linux上是“-r”选项,而OS-X使用-u选项。查询你的syslog守护进程手册确定该选项。
很快,我们将讨论日志文件中看到的消息的含义。但是现在,我们将从配置的角度解释你刚刚进行的操作。
2.syslog消息分类
syslog消息有两个属性供syslogd使用,以决定如何路由它们:设施和优先级。设施用于指定消息生成位置的一般分类。
设施是一个固定集合中的一项,你不能制作自己的设施并开始使用它。你可以使用的设施集合包括:

这些设施的名称在不同的Unix/Linux发布版本中稍有不同,有些操作系统有少数其他系统没有的分类。例如,OS-X有一个名为“install”的设施。Solaris 9没有“syslog”或者“authpriv”设施。你可以查询操作系统的man页面。
注意,由应用程序程序员选择设施,因此对这一选择没有任何限制。即使程序不是邮件程序或者内核程序,程序员也可以选择使用Mail设施或者Kern设施。
3.“Mark”设施
“Mark”是一个特殊设施,这个设施由syslog内部使用,在固定间隔内生成一个标记消息,如:

标记设施的目的是验证syslog守护进程正在工作,即使没有接收到任何消息。标记消息对于监控系统是否正常运行以及确定主机何时崩溃很有用,你可以使用崩溃前的最后一个标记消息的时间来(粗略)确定故障时间。
如果在命令行上没有指定,默认的时间间隔是20分钟,但是有些发布版本的启动脚本完全关闭标记消息(将消息时间间隔设置为0)。
4.syslog优先级
消息的优先级表示消息的重要性。
可用的优先级如下(按照敏感性递增的顺序):

  • debug.
  • info.
  • notice.
  • warn.
  • err.
  • crit.
  • alert.
  • emerg.

同样,与指定事件相关的优先级也是由应用程序的程序员选择的,所以不能保证它真正意味着严重性。
设施和优先级的实际应用是syslog守护进程用它来形成消息过滤的基本形式。这种过滤在syslog.conf文件中规定。
5.syslog.conf
syslog.conf文件包含如下格式的一行或者多行:

指定所在行适用的消息类型,指定这条消息与什么操作有关。
(选择器)是设施和优先级的组合,以句点分隔,如daemon.debug。选择器将匹配指定优先级或者更高优先级的该设施的所有消息。这意味着kern.info匹配从kern.info开始到kern.critf(或者最高优先级)的所有消息。传统的syslog不允许指定单个优先级匹配,只能指定最低优先级匹配通过逗号分隔,可以为单个优先级指定多个设施,例如,daemon,lpr.debug指定daemon.debug和lpr.debug。“”可以用于代替设施名,指定所有设施。多个选择器可以用“;”分隔,放在同一行里,例如daemon,info;mail.crit。最后,“none”关键字可以作为优先级,它将取消同一行上的任何选择器,这可以用于和通配符配合,选择除了特定设施以外的所有设施,例如“.info;mail.none”将选择info优先级上除了邮件设施之外的所有设施的消息。
选择器和操作(action)由字符分隔。虽然新版本的syslogd除了外还接受,但是如果在一行上出现,旧版本的syslogd将会崩溃。
对于选择器所采取的操作可以是如下三种之一:将消息附加到一个文件或者管道、转发消息到另一台主机上的syslogd以及将消息写入用户终端。
最常用的操作是指定文件的完整路径,将消息附加到一个文件。例如:

在许多syslogd版本上,该文件必须已经存在,syslogd才能写入它;该文件如果不存在,syslogd不会创建它。如果文件不存在,你可以用touch<文件名>或者cp/dev/null<文件名>来创建文件(使用touch的好处是如果文件已经存在,该文件不会被损坏,这对于shell脚本很有用)。
可以使用同样的操作,将消息写入设备。最常见的例子是写入系统控制台(/dev/console)。在远古时代,控制台实际上就是硬拷贝终端(例如decwriter),“重要”消息应该被写入控制台,以便在系统崩溃时,管理员能够查看打印输出,并尝试推断崩溃时发生的状况。当然,在那个时代,系统比现在慢得多,运行的设备也较少,所以打印到控制台的信息量是可以控制的。而且,在那个时代,磁盘很昂贵,而纸张则相对便宜。
将日志消息转发到另一台主机通过在主机名前加上“@”作为操作来完成,例如:

日志主机可以是一个主机名,也可以是IP地址。指定IP地址的好处是syslog守护进程启动时,消息在DNS不能正常工作的情况下也可以转发。消息通过UDP发送给远程主机,不期待任何响应,所以远程主机的故障也不会使syslogd无法在本地主机上运行(这既有好处又有坏处,我们将在下面讨论)。
最后,第三种可能的操作是将消息写入用户终端。当然,用户必须登录,才能显示消息。这通过在操作中指定用户名完成,例如:

这个例子将导致crit或更高优先级的所有内核消息写入anton所拥有的所有tty。注意,这一操作应该审慎使用,向用户“anton”发送.debug可能使anton非常不愉快。消息可以通过指定“”为操作,发送给所有用户。这种特殊情况通常保留用于非常关键的事件,一般表示即将发生的系统崩溃,如:

有些syslog守护进程有额外的功能,可以通过配置文件控制。例如,有些syslogd允许你限制日志主机可以从哪些主机接受syslog消息。我们建议你阅读系统的Fine Man页面,找出可能拥有的额外功能。
6.标记时间间隔
如上所述,“标记”消息的频率通常可以设置为命令行参数,粒度为一分钟。默认值为20分钟。确定标记消息的“正确”时间间隔需要折中考虑。小的值(如1分钟)将更精确地确定主机(至少syslog守护进程)启动或者停机的时间。但是,如果你有数千台主机每分钟都向集中日志主机发送标记消息,你的网络上就会有巨大的相关流量。但是,你可能希望指定某个标记时间间隔,以便验证syslog真的在工作。
7.syslogd输出
syslogd写入ASCII文本消息,以换行结束。所以阅读该文件不需要特殊的查看器,任何文本查看器都可以使用。不过,我们不建议使用“vi”或者其他编辑器检查日志文件。首先,日志文件可能非常大,你的编辑器可能被堵塞。更重要的是,用文本编辑器阅读日志文件造成不当修改的风险,如果你需要将日志数据用于法律或者商务用途,这是不能接受的。除非你打算修改文件,不在文件上使用文本编辑器是系统管理的好习惯。
8.syslog协议
多年以来,syslog协议的标准RFC是RFC3194(http://www.ietf.org/rfc/rfc3164.txt)。现在,RFC5424(http://tools.ietf.org/search/rfc5424)是新提出的syslog协议标准草案。换言之,RFC5424将淘汰RFC3194。
RFC5424是旧的syslog协议的必要更新。协议中最大的变化之一是遵循RFC3339(http://tools.ietf.org/search/rfc3339)的时间戳规范。旧协议对时间戳没有太多的规定。如果你接收的日志消息包含月、日、时和秒信息,就算运气了。时间戳中通常没有年份信息和时区信息。从分析的角度来说,这造成了很大的困难。RFC5424还在syslog中添加了name=value等结构化数据,显著地简化了自动化日志分析。
我们鼓励你查阅RFC,对协议的概念和功能有基本的感性认识。

时间: 2024-11-01 19:59:35

《日志管理与分析权威指南》一3.2.1 syslog的相关文章

《日志管理与分析权威指南》一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.2.2 日志数据是如何传输和收集的

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

《日志管理与分析权威指南》一1.7 安全信息和事件管理(SIEM)

1.7 安全信息和事件管理(SIEM) 日志管理的书籍如果不讨论SIEM,那就是不完整的.SIEM已经形成了一个行业,SIEM工具提供了一种实时分析安全事件的方法.它也提供了报告.可视化和长期存储等机制.我们在这本书里面不会花太多时间在SIEM上,但是第15章将会讨论一些开源的SIEM工具. 下面的两个案例研究会解释日志数据怎样帮助解决现实世界的问题. 后门(Backdoor)是允许用户在不为人知的情况下获得计算机系统访问权的软件或应用程序.它经常被用于恶意目的(Skoudis & Zeltse

《日志管理与分析权威指南》一1.2.3 什么是日志消息

1.2.3 什么是日志消息 正如我们之前讨论过的,日志消息是由某些设备或者系统生成,用来表明发生某些事情的消息.但是日志消息是什么样子的呢?让我们来简短地看一下这个问题的答案.本书将会非常详细地介绍这个内容.理解这个问题的答案,是本书剩下部分的基础.首先,典型的日志消息的基本内容如下: 时间戳 源 数据 不论消息是通过syslog发送.写入Windows事件日志或者是存入数据库,上述基本项目总会是消息的一部分.时间戳指示了生成日志消息的时间,源是生成日志消息的系统,它通常是以IP地址或者主机名的

《日志管理与分析权威指南》一1.5.3 故障排除

1.5.3 故障排除 日志对故障排除也很有价值.事实上,syslog就是为了这个目的而设计的.如果不检查日志文件,诊断没有连接到控制台或者tty的守护进程是相当困难的.而且系统内核通常通过syslog来提供与其所做的事情相关的信息.

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

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

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

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

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

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