Copyright (c) 2010 Czy Invicta
<Hack01@Live!cn> 本文将提供日志收集和分析的简要概述。具体而言,将着重于三个基本问题:日志传输、日志收集和日志分析。同样会涉及到简单的日志存储和归档。编写此文的目的在于,紧接着《法庭现场分析存留的Linux系统》的日志处理再次进一步地论述。
首先,有一个可靠的系统日志传输标准。最简单的方法是登录本地并定期复制到一个SSH服务器。有一些可用的自动方式来操作,如下所示: 1. 转储日志 -
logrotate 不过,这种方法最明显的缺陷就是时间延迟。不同的是基于UDP的系统日志,该日志复制方法允许日志之间的生成和安全储存以及分析。有时需要立即看到至关重要的日志文件。 有一种方法能够即时访问日志,那就是隧道。使用Netcat可以通过安全隧道UDP通过重定向syslog到TCP隧道。基本步骤如下所示: 生成日志的主机: 1.
编辑/etc/syslog.conf: 2. 运行命令: 收集日志的主机: 1.
远程接收syslog 另外,Stunnel的SSL封包,可应用于Cryptcat。 如果不满意临时隧道解决方案,或者需要更高的安全性(如更高的发送确认或加密日志的完整性验证),这可能是考虑syslog替代品的时候了。我们将看看两个众所周知的替代品:由BalabIT开发的syslog-ng和CORE SDI开发的msyslog。(还有第三个选择,由Darren Reed编写的nsyslog,但似乎没有积极地更新了。)它们的共同特征包括TCP通道、更多过滤功能(除了标准的严重程度和系统日志设施)和日志文件的完整支持。
在TCP模式安装工作需要涉及到主机上的情况,如下所示: 客户端: 1.
修改/etc/syslog.conf 代替 *.* 2. 运行msyslogd -i linux -i unix,仅仅运行/etc/init.d/msyslog start即可完成。 服务器: 1. 运行msyslogd -i
linux -i unix -i 'tcp -a -p
514',这个可以修改/etc/syslonfig/msyslog完成: 其结果是未加密的TCP连接(可以通过tcpdump proto TCP和514端口验证,即可看到日志信息)。在syslog的收集服务器中,分布着各种日志文件,需要进行以下任务: 1.
对syslog.conf添加一行: 2. 停止syslog守护进程并删除日志文件 3.
运行改程序创建初始校验(使用内置的“peochk”程序): 4.
开启syslog:/etc/init.d/msyslog start 看: (0) /var/log/messages文件是完好的 如果编辑“messages”文件(例如,删除一行),然后重新测试,结果将是: (1) /var/log/messages已损坏 msyslog的优点包括:它使用相同的/etc/syslog.conf文件作为常规系统日志,全部在UDP模式以及广泛的正则表达式支持,这在安装过程中非常有用。 xxx的设置会涉及到一个具有约束的msyslog本地主机地址(127.0.0.1)和使用了SSH RSA/DSA认证的访问控制,以及相关日志服务器的哈希完整性检查。另一个重要问题是缓冲。由于TCP提供可靠的传输(不像UDP),确保日志服务器不会出现停机状况。Msyslog提供了可配置缓冲的选项。如上述配置:“-m 30 -s 8192”重试限制和缓冲区大小。
Syslog-ng支持TCP连接、过滤信息、完整转发主机日志等等,大量文档都可用到。 为了使Syslog-ng能够工作,就必须使用一个转换工具,转换/etc/syslog.conf到syslog-ng的格式文件。命令如下所示: # /usr/share/doc/syslog-ng-1.5.17/syslog2ng < /etc/syslog.conf > syslog-ng.conf 卓有成效,摘录如下: # 全局选项 source s_local {
internal(); #
*.* filter f_5 { log { source(s_local); filter(f_5); destination(d_2); }; 这很容易遵循逻辑,即使该文件与正常的syslog不同。无论如何,亲自手工写入文件并使用高级选项需要学习一些知识。 Syslog-ng还具有更细微的访问控制能力,可以使用TCP封包来限制网络访问。该程序还可以重定向消息的实时处理自定义程序。例如,每一个日志信息发送到标准输入的“correlate.sh”脚本,添加到配置文件: log {
source(s_local); destination(d_prg); }; {dy}次测试是进行交互操作性测试:syslog-ng客户端成功发送UDP和TCP消息到msyslog服务器。 Syslog-ng伴随着负荷测试工具(在一个大循环中调用“/usr/bin/logger”)。但是,显然TCP传输速度比UDP慢,甚至没有加密。应当指出,这对传统的syslog的UDP传输故障模式会造成信息丢失。 总之,使用msyslog和syslog-ng执行安全性任务是一个不错的选择。然而,在详细测试前,必须部署。 日志收集 数据库日志记录将把我们带到一个新的层次。Msyslog有本地数据库(MySQL和Postgress)记录支持。要使用服务器收集日志,需要配置以下内容: 0. 安装和启用MySQL: # /etc/init.d/mysql start 1. 创建一个数据库实例: # echo "CREATE DATABASE msyslog;" | mysql -u root -p 2. 定义日志存储表: # cat syslog-sql.sql | mysql msyslog 该文件如下所示: 3. 编辑数据库日志模块syslog.conf: *.* 4. 插入信息访问权限: # echo "grant INSERT,SELECT on msyslog.*
to ;" | 5. 重新启动msyslog: # /etc/init.d/msyslogd start 在PHPAdmin中显示的结果如下所示: 报文队列已经在客户端中启用(上图显示的配置)。在某些情况下,如果使用TCP模式,有必要在重新启动服务器之后,再重启客户端。 其他syslog收集工具包括SQLSyslogd,可定期使用syslog守护进程。 在这里介绍了收集数据库日志以纯文本存储的几个重要优势。数据库可以被设置为接受更高价值的信息。
日志分析可分为实时分析和定期分析。如“swatch”或“logsurfer”工具能够进行实时处理,“logcheck”、“logwatch”工具可进行定期分析,当然,还有许多其他的工具。 如果日志存储到数据库,使用什么技术可以分析这些呢?通过活动并建立关系,而不是运行脚本或写一个简单的(或不那么简单,如果需要的话)SQL文件来分析。 分析日志,人们可能会想运行各种SELECT查询,如下所示: 高级概述查询: ---------------------------------------------------------------------------------------- 来自于MySQL的输出: 详细报告: --------------------------------------------------------------------------------------- |