📄 0570syslog.htm
字号:
就是登录档所进行的纪录工作的内容了。<br><br>
而<span class=text_import2>由于这些记录的工作内容对于系统的资讯太详细了,
若被取得将可能影响到系统的安全性,因此,通常这些登录档只有 root 可以进行视察的功能</span>!
那么为何要记录与解析登录档呢?这是由于登录档有几个重要的功能∶
<ul>
<li><span class=text_import1>解决系统的错误</span>∶<br>
这个对于系统管理员来说是很重要的资讯,例如∶开机的过程当中侦测到的硬体讯息资料会记录到记忆体当中,
由于这些侦测的资讯可以提供我们了解硬体资讯,所以如果你的系统发生问题时,可以下达
dmesg 看看硬体的侦测有没有发生错误呢!另外,如果系统资源被耗尽、
核心活动发生错误等等事件发生的时候,则系统登录档亦会将错误的讯息记录在登录档中 (通常是
/var/log/messages ),这些都可以藉以取得错误发生时的资讯,并加以克服问题!!</li><br>
<li><span class=text_import1>解决网路服务的问题</span>∶<br>
在安装或设定新服务的套件时,最常使用到这个功能了!例如在安装启动
sendmail 时,如果 sendmail 无法提供服务的时候,那么无法提供服务的问题则会被纪录到登录档当中去,
则只要分析登录档就可以了解问题点,并藉以解决问题啦!(<span class=text_vbird>
所以我们常说『天助自助者』是真的啦!察看(1)萤幕上面的错误讯息与(2)登录档的错误资讯,几乎可以解决大部分的
Linux 问题!</span> )</li><br>
<li><span class=text_import1>记录登录资讯</span>∶<br>
这个东西相当的重要!例如∶有天您的 apache 这个 WWW 服务挂了,你怎么知道何时挂掉的?
而最后登入者是谁?!这都可以藉由分析 apache 的登录档来取得资讯;
此外,万一有一天您的系统被入侵,并且被利用来攻击他人的主机,这个时候对方的主机查出是您的
Linux 在进行攻击的行为,这个时候你要如何告知对方您的主机是由于被入侵所导致的问题,
并且协助对方继续往来源追查呢?!呵呵!此时登录档可是相当重要的呢!</li>
</ul>
因此,一个有经验的主机管理员,会随时随地查阅一下自己的登录档,以随时掌握系统的最新脉动!
那么常见的几个登录档有哪些呢?一般而言,有下面几个∶
<ul>
<li><span class=text_import2><font face="细明体">/var/log/secure</font></span>∶<br>
记录登入系统存取资料的档案,例如 pop3, ssh, telnet, ftp 等都会记录在此档案中;</li><br>
<li><span class=text_import2><font face="细明体">/var/log/wtmp</font></span>∶<br>
记录登入者的讯息资料,由于本档案已经被编码过,所以必须使用
last 这个指令来取出档案的内容;</li><br>
<li><span class=text_import2><font face="细明体">/var/log/messages</font></span>∶<br>
这个档案相当的重要,几乎系统发生的错误讯息(或者是重要的资讯)都会记录在这个档案中;</li><br>
<li><span class=text_import2><font face="细明体">/var/log/boot.log</font></span>∶<br>
记录开机或者是一些服务启动的时候,所显示的启动或关闭讯息;</li><br>
<li><span class=text_import2><font face="细明体">/var/log/maillog 或 /var/log/mail/*</font></span>∶<br>
纪录邮件存取或往来( sendmail 与 pop3 )的使用者记录;</li><br>
<li><span class=text_import2><font face="细明体">/var/log/cron</font></span>∶<br>
这个是用来记录 crontab 这个例行性服务的内容的!</li><br>
<li><span class=text_import2><font face="细明体">/var/log/httpd, /var/log/news,
/var/log/mysqld.log, /var/log/samba, /var/log/procmail.log</font></span>∶<br>
分别是几个不同的网路服务的记录档啦!</li></ul>
常见的登录档就是这几个,但是,不同的 Linux distributions ,通常登录档的档名不会相同 (
除了 /var/log/messages 之外 ),所以说,您还是得要查阅您 Linux 主机上面的登录档设定资料,
才能知道你的登录档主要档名喔! <br><br>
好了,那么记录了这些登录档之后,我要做什么分析呀!?基本上,一个好的系统管理员大概都知道
『<span class=text_import2>一部主机负责的服务最好能少尽量少</span>』,这是什么意思呢?
也就是说,这部主机为邮件主机那么就专门负责邮件工作,不要还搞
WWW 服务!这样有几个好处,除了系统的安全性较佳之外 ( 因为开的 port 变少了! ) ,
登录档的解析也会比较简单!因为我们的 /var/log/secure 记录的登入者资讯就会比较有一致性!
那么我们就可以查询一下每日登入的使用者帐号啦与错误讯息啦等等的!(
当然棉,如果你的频宽够、经验丰富的话,那么一部主机上面安装所有的网路服务也是可以的啦!)
基本上,检查 /var/log/messages、/var/log/secure 这些个档案也就相当够了!
因为系统发生的错误或者是警告讯息通常都会写入这些档案中。<br><br>
但是,如果我手边有数十部主机怎么办?我要不要一部一部去察看 log file
呢?呵呵!那样察看会死人ㄋㄟ~因此,我们底下也使用一个简易的登录档来分析
Red Hat (含 Fedora 啦!) 系列的登录档吧!<br><br>
在 Linux 的登录档系统当中,大多以一支特定的 daemon 来进行写入这些讯息的工作,那就是
syslogd 这支程式啦!所以说,只要软体套件有支援 syslogd 的登录档写入模式,
那么该软体套件的资讯就会被写入到 syslogd 管理的登录档当中。<br><br>
另外,由于登录档如果一直长大的话,那么这些登录档的写入动作将会很没有效率,
这是因为档案太大时,ASCII 格式码的资料档案写入比较麻烦的缘故!
那么怎么进行登录档资料的备份工作呢?呵呵!那就使用
logrotate 吧!将资料进行轮转( rotate )?什么是轮转?!(我ㄌㄟ台语不轮转呦!?)
其实也可以称为轮替啦!<br><br>
所谓的 logrotate 基本上,就是将旧的
log 档案更改名称,然后建立一个空的 log 档案,如此一来,新的 log 档案将从零开始记录,然后只要将旧的
log 档案留下一阵子,嗯!那就可以达到将登录档『轮转』的目的啦!
此外,如果旧的纪录 (大概要保存几个月吧!保存了一段时间没有问题,那么就可以让系统自动的将他砍掉,
免得占掉很多宝贵的硬碟空间说!(举个例子来说,鸟哥的
WWW 网站一个月的登录档,所占掉的硬碟空间大小,大概就有 3GB 这么多....而且都是纯文字档....很可怕吧!)<br><br>
所以说,基本上,针对 log 档案来设计的服务有这两支∶
<ul>
<li><span class=text_import1>syslogd</span>∶<br>进行系统或者是网路服务的登录档记录工作;</li><br>
<li><span class=text_import1>logrotate</span>∶<br>将旧的资料更名,并且建立新的登录档,
以保持登录档的『新鲜』,并视设定将最旧的登录档删除。</li></ul>
所以,接著下来我们来谈一谈怎么样规划这两支程式呢?!就由 syslogd 这支程式先谈起吧!毕竟得先有登录档,才可以进行
logrotate 呀!您说是吧!?<br><br>
</div>
<hr><a NAME="syslogd"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">登录档的纪录∶ syslogd</span><br>
<div class=block1>
刚刚上面提到说,Linux 的登录档主要是由 syslogd 这个 daemon 在负责,那么您的 Linux
是否有启动 syslogd 呢?而且是否有设定开机时启动呢?呵呵!检查一下先∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>ps aux | grep syslog</span>
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 11129 0.0 0.0 1616 204 ? Ss Oct03 0:01 syslogd -m 0
<span class=term_say># 瞧!对吧!确实有启动的!</span>
[root@linux ~]# <span class=term_command>chkconfig --list | grep syslog</span>
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
<span class=term_say># 因为鸟哥的系统用 run level 3 ,所以,也是有启动的!</span>
</pre></td></tr></table>
看到 syslog 这个服务名称了吧?!呵呵!所以知道他已经在背景底下工作棉!如前所述, syslog
这支程式提供了『系统登入资讯记录』及『 Kernel 错误或警示资讯记录』等功能,此外,
他还提供了『本地端与远端电脑的登录资讯记录』功能,所以,可以将远端的主机登入资讯同时记录在本地端呢!
很不错的功能吧!!此外,目前正规使用的系统服务中,大都预设支援以 syslog
这一个服务来记录他的登录档案资料,例如 apache, samba, sendmail 等等。<br><br>
<hr><a name=syslogd_format></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>登录档内容的一般格式</span><br>
<div class=block2>
一般来说,通常经过 syslog 而记录下来的资料主要有∶<ul><span class=text_import2>
<li>事件发生的日期与时间;
<li>发生此事件的主机名称;
<li>启动此事件的服务名称 (如 samba, xinetd 等) 或函式名称 (如 libpam ..);
<li>该讯息资料内容。</span></ul>
当然,这些资讯的『详细度』是可以修改的,而且,这些资讯可以作为系统除错之用呢!
我们先来看一下 /var/log/secure 的内容显示些什么呢?<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>cat /var/log/secure</span>
Oct 16 10:16:13 linux sshd[3494]: Accepted password for dmtsai from
192.168.1.11 port 1037 ssh2
Oct 16 10:20:15 linux xinetd[21592]: START: shell pid=4176 from=192.168.1.31
Oct 16 14:50:25 linux sshd[26665]: Accepted password for dmtsai from
192.168.1.11 port 1078 ssh2
Oct 16 19:56:06 linux xinetd[20576]: START: shell pid=21013 from=192.168.1.31
</pre></td></tr></table>
以第一笔资料为例,该资料说明的内容为∶『<span class=text_import2>时间在 Oct 16 10:16:13
(10/16, 10:16)时;由主机名称为 linux 的那部主机当中;由 sshd (且其 PID 为 3494)
那项服务所产生的一个讯息;讯息内容说明是∶接受来自 192.168.1.11 连接至本机,使用
ssh2 连线机制,接受的使用者为 dmtsai</span>』。有够清楚的吧! ^_^。就是因为太清楚了,
包括那个 192.168.1.11 的 IP 来源,以及使用者帐号为 dmtsai ,
这些资讯如果让比较高竿的 cracker 知道后,是有可能猜测密码的,
所以棉,这些资讯当然不能够外流啦!好好保存吧!<br><br>
其实还有很多的资讯值得查阅的呢!尤其是 /var/log/messages 的内容。记得一个好的系统管理员,
要常常去『巡视』登录档的内容喔!尤其是∶<ul>
<li>当你觉得系统似乎不太正常时;
<li>某个 daemon 老是无法正常启动时;
<li>某个使用者老是无法登入时;
<li>某个 demon 执行过程老是不顺畅时;
</ul>还有很多啦!反正觉得系统不太正常,就得要查询查询登录档就是了。<br><br>
</div>
<hr><a name=syslogd_conf></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>登录档的设定档∶/etc/syslog.conf</span><br>
<div class=block2>
什么?登录档还有设定档??喔!不是啦~是 syslogd 这个 daemon 的设定档啦!
我们现在知道 syslogd 可以负责主机产生的各个资讯的登录,而这些资讯本身是有『严重等级』之分的,
而且,这些资料要传送到什么档名的档案里去?这都是可以修订的呢,所以我们才会在一开头的地方讲说,
每个 Linux distributions 放置的登录档档名可能会有所差异啊!<br><br>
基本上, syslog 针对各种服务与讯息记录在某些档案的设定档就是∶
<ul><span class=text_import2>/etc/syslog.conf</span></ul>
这个档案规定了『<span class=text_import2>哪些服务需要被纪录,
该服务产生的什么等级的讯息要被纪录?</span>』这个 /etc/syslog.conf 的内容语法是这样的∶<br>
<table class="term"><tr><td class="term"><pre>
服务名称[.=!]讯息等级 讯息记录的档名或装置或主机
<span class=term_say># 例如底下∶</span>
mail.info /var/log/maillog_info
</pre></td></tr></table>
简单的说明如下∶<br><br>
<li><span class=text_import1>服务名称∶</span></li>
<div class=block2>
什么服务产生的讯息要被纪录的意思。syslog 认识的服务主要有底下这些∶<ul>
<li><span class=text_import2>auth, authpriv</span>∶主要与认证有关的机制,例如
telnet, login, ssh 等需要认证的服务都是使用此一机制;
<li><span class=text_import2>cron</span>∶就是例行性命令 cron/at 等产生讯息记录的地方;
<li><span class=text_import2>daemon</span>∶与各个 daemon 有关的讯息;
<li><span class=text_import2>kern</span>∶就是核心 (kernel) 产生讯息的地方;
<li><span class=text_import2>lpr</span>∶亦即是列印相关的讯息啊!
<li><span class=text_import2>mail</span>∶只要与邮件收发有关的讯息纪录都属于这个;
<li><span class=text_import2>news</span>∶与新闻群组伺服器有关的东西;
<li><span class=text_import2>syslog</span>∶就是 syslogd 这支程式本身产生的资讯啊!
<li><span class=text_import2>user, uucp, local0 ~ local7</span>∶与 Unix like 机器本身有关的一些讯息。</ul>
基本上,syslog 所认识的资讯服务与一般我们常说的服务不太一样。举例来说,
关于邮件伺服器,我们可以选择 sendmail, qmail 或者是当红的 postfix 这些软体来达成,
但这些伺服器使用的都是同一个通讯协定,亦即是 smtp 这个玩意儿 (参阅一下 /etc/services 的内容,
找到 smtp 观察一下 port number 啦!)。所以,这些同性质的伺服器,产生的讯息都属于 syslog
当中的 mail 所管辖的范围喔!<br><br>
另外,每种服务所产生的资料量其实是差异很大的,举例来说, mail 的登录档讯息多的要命,
每一封信件进入后, mail 至少需要记录『寄信人的资讯;与收信者的讯息』等等,
而如果是用来做为工作站主机的,那么登入者 (利用 login 登录主机处理事情)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -