说到保护服务器,你首先会想到什么? 多年以来,系统管理员们和运维们在怀疑服务器遭受攻击或出现问题的时候,肯定是要先检查syslog的。不过在最近,红帽的两位开发人员提议采用一种新的基于二进制数的工具“The Journal”,这个工具可能将在Fedora 17中取代syslog。 两位开发人员名叫Lennart Poettering和Kay Sievers。他们的建议是:现在的syslog已经是30年的老古董,不仅效率低下,很容易被误读和被改动,甚至于连其最基本的功能——将系统事件日志存储在某一个Linux机器上都无法正常执行。 这在很大程度上归咎于系统日志不拘形式的性质:只要是Linux系统上的应用程序或守护程序发送的文本字符串,不管采用什么样的形式,系统日志基本上都照收不误。于是,某个守护程序可能会以某一种方式发送关于事件的信息,而另一个守护程序可能会以全然不同的方式来发送事件信息;这样一来,解析信息其含义的任务就扔给了阅读日志的人。自动化的日志分析工具在这方面有所帮助,但是Poettering和Sievers在关于The Journal的详细描述中写道: “记入日志的数据其形式非常随便。自动化的日志分析工具需要解析人类语言字符串,以便: 1)识别消息类型,以及 2)从中解析相关参数。 这就导致了令人讨厌的正则表达式,而且经常需要跟在上游的开发人员屁股后面,因为这些开发人员可能会在新版本的软件中调整人类语言的日志字符串。实际上,从某种程度上来讲,只能这样。为了不破坏用户所用的正则表达式,所有日志消息变成了其相对应的服务的二进制文字版界面(ABI),而这通常不是开发人员的本意。” 这两位开发人员重点指出了当前的系统日志体系存在的14个问题,而上面这个只是其中之一。其他问题包括如下: •syslog的数据没有经过验证。 •syslog仅仅是Linux上众多的日志系统之一。 •根本就没有针对syslog的访问控制机制。 •只是在固定的间隔时间对磁盘使用实行了限制,导致系统很容易受到分布式拒绝服务(DDoS)攻击。等等。 Poettering和Sievers重点指出了syslog体系存在的一个大家非常关注的问题: “比如说,最近热议的kernel.org入侵事件涉及的就是黑客操纵日志文件;要发现这种攻击行为,完全靠运气。” 考虑到这些因素,Sievers和Poettering提议采用The Journal守护程序,该守护程序将来自系统日志的事件以二进制数、而不是文本的形式来存储数据,将数据作为包含散列以增强安全性的键-值对(key-value pair)列表来存储。 这并不是这两位开发人员头一回提议对Linux系统的基础架构作出如此全面的改变。Poettering不但是PulseAudio声音服务器的开发者,还开发了取代Linux上System V init守护程序的systemd守护程序。Sievers最近成了Fedora项目团队的一名成员,他提议:需要时,将所有可执行文件移入到/usr/bin目录,将它们的库移入到/usr/lib或/usr/lib64。(编辑注:当然,如果你的usr没了,那就悲催了) 实现了这种二进制数后,The Journal守护程序就能够为每个系统事件添加元数据,比如进程编号和发送者名称、用户和用户组编号以及其他关键的系统数据。 “受udev事件的启发,The Journal条目酷似环境块(environment block)。许多键/值字段由换行符分隔,使用大写字母的变量名。与udev设备事件和实际环境块相比较,有一大区别是:虽然关注的重心绝对放在ASCII格式化字符串上,但是作为值的二进制斑点(binary blob,这是指装入到开源操作系统内核里面的一种对象文件,但没有向公众开放的源代码)也得到支持——这种对象文件可以用来添加二进制元数据,比如ATA SMART健康状况数据、SCSI感知数据、核心转储数据或固件转储数据。生成The Journal条目的代码想为条目添加多少字段,就可以添加多少。字段可以是很有名的字段,也可以是针对特定服务/子系统/驱动程序的字符。” |