最近升级日期:2009/09/14
2. syslogd :记录登录文件的服务
2.1 登录文件内容的一般格式 2.2 syslog 的配置档: /etc/syslog.conf, 默认的 syslog.conf 内容 2.3 登录文件的安全性配置 2.4 登录文件服务器的配置 syslogd :记录登录文件的服务 刚刚提到说 Linux 的登录文件主要是由 syslogd 在负责,那么你的 Linux 是否有启动 syslogd 呢?而且是否有配置启动时启动呢?呵呵!检查一下先:
看到 syslog 这个服务名称了吧?所以知道他已经在系统中工作罗!好了,既然本章主要是讲登录文件,那么你知道登录文件的内容是如何展现的?
syslog 的配置档在哪里?如何配置?如果你的 Linux 主机想要当作整个局域网的登录文件服务器时,又该如何配置?
底下就让我们来玩玩这玩意! 登录文件内容的一般格式 一般来说,系统产生的信息经过 syslog 而记录下来的数据中,每条信息均会记录底下的几个重要数据:
当然,这些资讯的『详细度』是可以修改的,而且,这些资讯可以作为系统除错之用呢! 我们拿登录时一定会记载帐号资讯的 /var/log/secure 为例好了:
我们拿第一笔数据来说明好了,该数据是说:『在三月14日 (Mar 14) 的下午 15:38 分,由 www 这部主机的 atd [PID 为 18701] 传来的消息,这个消息是透过 pam_unix 这个模块所提出的。信息内容为 root (uid=0) 这个帐号已经开启 atd 的活动了。』有够清楚吧! 那请您自行翻译一下后面的 4 条信息内容是什么喔! 其实还有很多的资讯值得查阅的呢!尤其是 /var/log/messages 的内容。记得一个好的系统管理员, 要常常去『巡视』登录文件的内容喔!尤其是发生底下几种情况时:
还有很多啦!反正觉得系统不太正常,就得要查询查询登录文件就是了。
syslog 的配置档:/etc/syslog.conf 什么?登录文件还有配置档?喔!不是啦~是 syslogd 这个 daemon 的配置档啦! 我们现在知道 syslogd 可以负责主机产生的各个资讯的登录,而这些资讯本身是有『严重等级』之分的, 而且,这些数据最终要传送到哪个文件去是可以修改的呢,所以我们才会在一开头的地方讲说, 每个 Linux distributions 放置的登录文件档名可能会有所差异啊! 基本上, syslog 针对各种服务与信息记录在某些文件的配置档就是 /etc/syslog.conf, 这个文件规定了『(1)什么服务 (2)的什么等级信息 (3)需要被记录在哪里(装置或文件)』 这三个咚咚,所以配置的语法会是这样:
我们将上面的数据简单的分为三部分来说明:
syslog 本身有规范一些服务,你可以透过这些服务来储存系统的信息。syslog 认识的服务主要有底下这些: (可使用 man 3 syslog 查询到相关的资讯)
上面谈到的都是 syslog 自行制订的服务名称,软件开发商可以透过呼叫上述的服务名称来记录他们的软件。 举例来说, sendmail 与 postfix 及 dovecot 都是与邮件有关的软件,这些软件在设计登录文件记录时,都会主动呼叫 syslogd 内的 mail 服务名称 (LOG_MAIL),所以上述三个软件 (sendmail, postfix, dovecot) 产生的信息在 syslog 看起来,就会『是 mail 』类型的服务了。我们可以将这个概念绘制如底下的图示来理解: 图 2.2.1、 syslog 所制订的服务名称与软件呼叫的方式 另外,每种服务所产生的数据量其实差异是很大的,举例来说, mail 的登录文件信息多的要命, 每一封信件进入后, mail 至少需要记录『寄信人的资讯;与收信者的信息』等等; 而如果是用来做为工作站主机的,那么登陆者 (利用 login 登录主机处理事情) 的数量一定不少,那个 authpriv 所管辖的内容可就多的要命了。 为了让不同的资讯放置到不同的文件当中,好让我们分门别类的进行登录文件的管理,
所以罗,将各种类别的服务之登录文件,记录在不同的文件里面,就是我们 /etc/syslog.conf
所要作的规范了!
同一个服务所产生的信息也是有差别的,有启动时仅通知系统而已的一般信息 (information), 有出现还不至於影响到正常运行的警告信息 (warn) ,还有系统硬件发生严重错误时,所产生的重大问题信息 (error 等等); 信息到底有多少种严重的等级呢?基本上,syslog 将信息分为七个主要的等级,依序是这样的(由不重要排列到重要信息等级):
除了这些有等级的信息外,还有两个特殊的等级,那就是 debug(错误侦测等级) 与 none (不需登录等级) 两个,当我们想要作一些错误侦测,或者是忽略掉某些服务的资讯时, 就用这两个咚咚吧! 特别留意一下在信息等级之前还有 [.=!] 的连结符号喔!他代表的意思是这样的:
一般来说,我们比较常使用的是『.』这个连结符号啦!^_^
再来则是这个信息要放置在哪里的纪录了。通常我们使用的都是记录的文件啦!但是也可以输出到装置呦! 例如打印机之类的!也可以记录到不同的主机上头去呢!底下就是一些常见的放置处:
基本上,整个 syslog 的配置档就只是这样而已,底下我们来思考一些例题,好让你可以更清楚的知道如何配置 syslogd 啊!
了解语法之后,我们来看一看 syslog 有哪些系统服务已经在记录了呢?就是瞧一瞧 /etc/syslog.conf 这个文件的默认内容罗! (注意!如果需要将该行做为注解时,那么就加上 # 符号就可以啦)
上面总共仅有十一行配置值,每一行的意义是这样的:
在上面的第四行关於 mail 的记录中,在记录的文件 /var/log/maillog 前面还有个减号『 - 』是干嘛用的?由於邮件所产生的信息比较多,因此我们希望邮件产生的信息先储存在速度较快的内存中 (buffer) ,等到数据量够大了才一次性的将所有数据都填入磁碟内,这样将有助於登录文件的存取性能。 只不过由於信息是缓存在内存内,因此若不正常关机导致登录资讯未回填到登录文件中,可能会造成部分数据的遗失。 此外,每个 Linux distributions 的 syslog.conf 配置差异是颇大的,如果你想要找到相对应的登录资讯时,
可得要查阅一下 /etc/syslog.conf 这个文件才行!否则可能会发生分析到错误的资讯喔!举例来说,
鸟哥有自己写一支分析登录文件的 script,这个 script 是依据 Red Hat
系统默认的登录文件所写的,因此不同的 distributions
想要使用这支程序时,就得要自行设计与修改一下 /etc/syslog.conf 才行喔!否则就可能会分析到错误的资讯罗。
那么如果你有自己的需要而得要修订登录文件时,该如何进行?
如果你有其他的需求,所以需要特殊的文件来帮你记录时,呵呵!别客气,千万给他记录在 /etc/syslog.conf 当中,如此一来,你就可以重复的将许多的资讯记录在不同的文件当中,以方便你的管理呢! 让我们来作个练习题吧!如果你想要让『所有的资讯』都额外写入到 /var/log/admin.log 这个文件时, 你可以怎么作呢?先自己想一想,并且作一下,再来看看底下的作法啦!
很简单吧!如此一来,所有的资讯都会写入 /var/log/admin.log 里面了! 登录文件的安全性配置 好了,由上一个小节里面我们知道了 syslog.conf 的配置,也知道了登录文件内容的重要性了, 所以,如果幻想你是一个很厉害的黑客,想利用他人的计算机干坏事,然后又不想留下证据, 你会怎么作?对啦!就是离开的时候将屁股擦干净,将所有可能的信息都给他抹煞掉, 所以第一个动脑筋的地方就是登录文件的清除工作啦~ 如果你的登录文件不见了,那该怎办?
伤脑筋呢!有没有办法防止登录文件被删除?或者是被 root 自己不小心变更呢?有呀!拔掉网络线或电源线就好了……呵呵! 别担心,基本上,我们可以透过一个隐藏的属性来配置你的登录文件,成为『 只可以添加数据,但是不能被删除 』的状态,那么或许可以达到些许的保护!不过,如果你的 root 帐号被破解了,那么底下的配置还是无法保护的,因为你要记得『 root 是可以在系统上面进行任何事情的 』,因此,请将你的 root 这个帐号的口令配置的安全一些!千万不要轻忽这个问题呢!
既然如此,那么我们就来处理一下隐藏属性的东东吧!我们在第七章谈到过 lsattr 与 chattr 这两个东西啦!如果将一个文件以 chattr 配置 i 这个属性时,那么该文件连 root 都不能杀掉!而且也不能新增数据,嗯!真安全!但是,如此一来登录文件的功能岂不是也就消失了? 因为没有办法写入呀!所以罗,我们要使用的是 a 这个属性!你的登录文件如果配置了这个属性的话,那么 他将只能被添加,而不能被删除!嗯! 这个项目就非常的符合我们登录文件的需求啦!因此,你可以这样的添加你的登录文件的隐藏属性。
加入了这个属性之后,你的 /var/log/messages 登录文件从此就仅能被添加,而不能被删除,直到 root 以『 chattr -a /var/log/messages 』取消这个 a 的参数之后,才能被删除或移动喔! 虽然,为了你登录文件的资讯安全,这个 chattr 的 +a 旗标可以帮助你维护好这个文件, 不过,如果你的系统已经被取得 root 的权限,而既然 root 可以下达 chattr -a 来取消这个旗标, 所以罗,还是有风险的啦!此外,前面也稍微提到,新手最好还是先不要添加这个旗标, 很容易由於自己的忘记,导致系统的重要信息无法记录呢。 基本上,鸟哥认为,这个旗标最大的用处除了在保护你登录文件的数据外, 他还可以帮助你避免掉不小心写入登录文件的状况喔。要注意的是,当『 你不小心 "手动" 更动过登录文件后,例如那个 /var/log/messages , 你不小心用 vi 开启他,离开却下达 :wq 的参数,呵呵!那么该文件未来将不会再继续进行登录动作! 』这个问题真的很常发生!由於你以 vi 储存了登录文件,则 syslogd 会误判为该文件已被更动过, 将导致 syslogd 不再写入该文件新的内容~很伤脑筋的! 要让该登录文件可以继续写入,你只要重新启动 syslog (/etc/init.d/syslog restart) 即可。 不过,总是比较麻烦。所以啊,如果你针对登录文件下达 chattr +a 的参数,嘿嘿! 未来你就不需要害怕不小心更动到该文件了!因为无法写入嘛!除了可以新增之外~ ^_^ 不过,也因为这个 +a 的属性让该文件无法被删除与修改,所以罗,当我们进行登录文件轮替时 (logrotate) ,将会无法移动该登录文件的档名呢!所以会造成很大的困扰。这个困扰虽然可以使用 logrotate 的配置档来解决,但是,还是先将登录文件的 +a 旗标拿掉吧!
登录文件服务器的配置 我们在之前稍微提到的,在 syslog.conf 文件当中,可以将登录数据传送到打印机或者是远程主机上面去。这样做有什么意义呢? 如果你将登录资讯直接传送到打印机上面的话,那么万一不小心你的系统被 cracker 所入侵, 他也将你的 /var/log/ 砍掉了,怎么办?没关系啊!反正你已经将重要数据直接以打印机记录起来了, 嘿嘿!他是无法逃开的啦!^_^ 再想像一个环境,你的办公室内有十部 Linux 主机,每一部负责一个网络服务, 你为了要了解每部主机的状态,因此,你常常需要登陆这十部主机去查阅你的登录文件~ 哇!光用想的,每天要进入十部主机去查数据,想到就烦~没关系~这个时候我们可以让某一部主机当成 『登录文件服务器』,用他来记录所有的十部 linux 主机的资讯,嘿嘿!这样我就直接进入一部主机就可以了! 省时又省事,真方便~ 那要怎么达到这样的功能呢?很简单啦,我们 CentOS 5.x 默认的 syslog 本身就已经具有这个登录文件服务器的功能了, 只是默认并没有启动该功能而已。你可以透过 man syslogd 去查询一下相关的选项就能够知道啦! 既然是登录文件服务器,那么我们的 Linux 主机当然会启动一个端口来监听了,那个默认的端口就是 UDP 的 514 喔! 图 2.4.1、登录文件服务器的架构 如上图所示,服务器会启动监听的端口,用户端则将登录文件再转出一份送到服务器去。 而既然是登录文件『服务器』,所以当然有服务器与用户端 (client) 罗!这两者的配置分别是这样的:
透过这个简单的动作,你的 Linux 主机已经可以接收来自其他主机的登录资讯了! 当然啦,你必须要知道网络方面的相关基础,这里鸟哥只是先介绍, 未来了解了网络相关资讯后,再回头来这里瞧一瞧先! ^_^ 至於 client 端的配置就简单多了!只要指定某个资讯传送到这部主机即可! 举例来说,我们的登录文件服务器 IP 为 192.168.1.100 ,而 client 端希望所有的数据都送给主机, 所以,可以在 /etc/syslog.conf 里面新增这样的一行:
再重新启动 syslog 后,立刻就搞定了!而未来主机上面的登录文件当中,每一行的『主机名称』就会显示来自不同主机的资讯了。 很简单吧! ^_^。接下来,让我们来谈一谈,那么如何针对登录文件来进行轮转 (rotate) 呢? |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室