『详细而确实的分析以及备份系统的登录文件』是一个系统管理员应该要进行的任务之一。
那么什么是登录文件呢?简单的说,就是记录系统活动资讯的几个文件,
例如:何时、何地 (来源 IP)、何人 (什么服务名称)、做了什么动作 (信息登录罗)。
换句话说就是:记录系统在什么时候由哪个程序做了什么样的行为时,发生了何种的事件等等。
要知道的是,我们的 Linux 主机在背景之下有相当多的 daemons 同时在工作著,这些工作中的程序总是会显示一些信息,
这些显示的信息最终会被记载到登录文件当中啦。也就是说,记录这些系统的重要信息就是登录文件的工作啦!
登录文件的重要性
为什么说登录文件很重要,重要到系统管理员需要随时注意他呢?我们可以这么说:
- 解决系统方面的错误:
用 Linux 这么久了,你应该偶而会发现系统可能会出现一些错误,包括硬件捉不到或者是某些系统程序无法顺利运行的情况。
此时你该如何是好?由於系统会将硬件侦测过程记录在登录文件内,你只要透过查询登录文件就能够了解系统作了啥事!
并且由第十七章我们也知道 SELinux
与登录文件的关系更加的强烈!所以罗,查询登录文件可以克服一些系统问题啦!
- 解决网络服务的问题:
你可能在做完了某些网络服务的配置后,却一直无法顺利启动该服务,此时该怎办?去庙里面拜拜抽签吗?
三太子大大可能无法告诉你要怎么处理呢!由於网络服务的各种问题通常都会被写入特别的登录文件,
其实你只要查询登录文件就会知道出了什么差错,还不需要请示三太子大大啦!举例来说,如果你无法启动邮件服务器 (sendmail),
那么查询一下 /var/log/maillog 通常可以得到不错的解答!
- 过往事件记录簿:
这个东西相当的重要!例如:你发现 WWW 服务 (apache 软件) 在某个时刻流量特别大,你想要了解为什么时,
可以透过登录文件去找出该时段是哪些 IP 在连线与查询的网页数据为何,就能够知道原因。
此外,万一哪天你的系统被入侵,并且被利用来攻击他人的主机,由於被攻击主机会记录攻击者,因此你的 IP
就会被对方记录。这个时候你要如何告知对方你的主机是由於被入侵所导致的问题,
并且协助对方继续往恶意来源追查呢?呵呵!此时登录文件可是相当重要的呢!
Tips: 所以我们常说『天助自助者』是真的啦!你可以透过 (1)察看萤幕上面的错误信息与
(2)登录文件的错误资讯,几乎可以解决大部分的 Linux 问题!
| ![鸟哥的图示 鸟哥的图示](0570syslog_files/vbird_face.gif) |
Linux 常见的登录文件档名
登录文件可以帮助我们了解很多系统重要的事件,包括登陆者的部分资讯,因此登录文件的权限通常是配置为仅有 root 能够读取而已。
而由於登录文件可以记载系统这么多的详细资讯,所以啦,一个有经验的主机管理员会随时随地查阅一下自己的登录文件,
以随时掌握系统的最新脉动!那么常见的几个登录文件有哪些呢?一般而言,有下面几个:
- /var/log/cron:
还记得第十六章例行性工作排程吧?你的 crontab 排程有没有实际被进行?
进行过程有没有发生错误?你的 /etc/crontab 是否撰写正确?在这个登录文件内查询看看。
- /var/log/dmesg:
记录系统在启动的时候核心侦测过程所产生的各项资讯。由於 CentOS 默认将启动时核心的硬件侦测过程取消显示,
因此额外将数据记录一份在这个文件中;
- /var/log/lastlog:
可以记录系统上面所有的帐号最近一次登陆系统时的相关资讯。第十四章讲到的 lastlog
命令就是利用这个文件的记录资讯来显示的。
- /var/log/maillog 或 /var/log/mail/*:
记录邮件的往来资讯,其实主要是记录 sendmail (SMTP 协议提供者) 与 dovecot (POP3 协议提供者) 所产生的信息啦。
SMTP 是发信所使用的通讯协议, POP3 则是收信使用的通讯协议。 sendmail 与 dovecot 则分别是两套达成通讯协议的软件。
- /var/log/messages:
这个文件相当的重要,几乎系统发生的错误信息 (或者是重要的资讯) 都会记录在这个文件中;
如果系统发生莫名的错误时,这个文件是一定要查阅的登录文件之一。
- /var/log/secure:
基本上,只要牵涉到『需要输入帐号口令』的软件,那么当登陆时 (不管登陆正确或错误) 都会被记录在此文件中。
包括系统的 login 程序、图形介面登陆所使用的 gdm 程序、 su, sudo 等程序、还有网络连线的 ssh, telnet 等程序,
登陆资讯都会被记载在这里;
- /var/log/wtmp, /var/log/faillog:
这两个文件可以记录正确登陆系统者的帐号资讯 (wtmp) 与错误登陆时所使用的帐号资讯 (faillog) !
我们在第十一章谈到的 last 就是读取 wtmp 来显示的,
这对於追踪一般帐号者的使用行为很有帮助!
- /var/log/httpd/*, /var/log/news/*, /var/log/samba/*:
不同的网络服务会使用它们自己的登录文件来记载它们自己产生的各项信息!上述的目录内则是个别服务所制订的登录文件。
常见的登录文件就是这几个,但是不同的 Linux distributions ,通常登录文件的档名不会相同
(除了 /var/log/messages 之外 )。所以说,你还是得要查阅你 Linux 主机上面的登录文件配置数据,
才能知道你的登录文件主要档名喔!
登录文件所需相关服务 (daemon) 与程序
那么这些登录文件是怎么产生的呢?基本上有两种方式,一种是由软件开发商自行定义写入的登录文件与相关格式,
例如 WWW 软件 apache 就是这样处理的。另一种则是由 Linux distribution 提供的登录文件管理服务来统一管理。
你只要将信息丢给这个服务后,他就会自己分门别类的将各种信息放置到相关的登录文件去!CentOS 提供 syslogd
这个服务来统一管理登录文件喔!
除了这个 syslogd 之外,我们的核心也需要额外的登录服务来记录核心产生的各项资讯,
这个专门记录核心资讯的登录文件服务就是 klogd 啦。所以说,登录文件所需的服务主要就是 syslogd
与 klogd 这两者。
不过要注意的是,如果你任凭登录文件持续记录的话,由於系统产生的资讯天天都有,那么你的登录文件的容量将会长大到无法无天~
如果你的登录文件容量太大时,可能会导致大文件读写效率不佳的问题 (因为要从磁碟读入内存,越大的文件消耗内存量越多)。
所以罗,你需要对登录文件备份与升级。那...需要手动处理喔?当然不需要,我们可以透过 logrotate (登录文件轮替)
这玩意儿来自动化处理登录文件容量与升级的问题喔!
所谓的 logrotate 基本上,就是将旧的登录文件更改名称,然后创建一个空的登录文件,如此一来,
新的登录文件将重新开始记录,然后只要将旧的登录文件留下一阵子,嗯!那就可以达到将登录文件『轮转』的目的啦!
此外,如果旧的纪录 (大概要保存几个月吧!) 保存了一段时间没有问题,那么就可以让系统自动的将他砍掉,
免得占掉很多宝贵的磁盘空间说!
总结一下,针对登录文件所需的功能,我们需要的服务与程序有:
- syslogd:主要登录系统与网络等服务的信息;
- klogd:主要登录核心产生的各项资讯;
- logrotate:主要在进行登录文件的轮替功能。
由於我们著眼点在於想要了解系统上面软件所产生的各项资讯,因此本章主要针对 syslogd 与 logrotate 来介绍。
接著下来我们来谈一谈怎么样规划这两个玩意儿。就由 syslogd 这支程序先谈起吧!毕竟得先有登录文件,才可以进行
logrotate 呀!您说是吧!