Linux服务器的日志管理
1.简介
从安全角度来说,Linux服务器的日志非常重要,它记录了系统每天所发生的各种各样的事情,如果服务器受到***,就可以通过它来进行分析。同时,它更是很重要的排障依据,可以通过它来检查错误发生的原因,所以我们必须了解和熟悉的运行机制。
2.日志服务升级
Linux在前面采用的是syslog作为日志收集服务器,由于syslog收集日志性能较低,目前大多数Linux版本都采用rsyslog来代替syslog收集日志。
3.系统日志配置详解
rsyslog与syslog配置文件有相类似的地方,rsyslog服务的配置文件默认在/etc/rsyslog.conf,配置rsyslog时有必要先了解rsyslog.conf的格式。
3.1.配置文件规范
理解并完善一个rsyslog的配置,对系统管理员来说尤为重要。/etc/rsyslog.conf根据如下的格式定义规则:语法格式语法解释
facility.level action设备.优先级处理方案
facility-1,facility-2.level action设备-1,设备-2.优先级处理方案
facility字段
facility.level字段也称为seletor(选择条件),选择条件和处理方案之间用空格或者tab分隔,多个facility选择条件使用“,”分开表示。facility定义了日志消息的范围,其可以使用的key如下所示。
KEYExplain
auth由pam_pwdb报告的认证活动。
authpriv包括特权信息,如用户名在内的认证活动
cron与cron和at有关的计划任务信息
daemon与inetd守护进程有关的后台进程信息。
kern内核信息,首先通过klogd传递
lpr与打印服务器有关的信息
mail与电子邮件有关的信息
marksyslog的内部功能,用于生成时间戳
nems来自新闻服务器的信息
syslog由syslog生成的信息
user由用户程序生成的信息
uucp有uucp生成的信息
local0~local7与自定义程序一起使用
Level优先级
level定义了消息的紧急程度。按严重程度由高到低顺序排列如下:levelExplain
emerg该系统不可用,等同于panic
alert需要被立即修改的条件
crit危险情况
err错误消息,等同于error
warning预警信息,等同于warn
notice具有重要性的普通文件
info提供信息的消息
debug不包含函数条件或问题的其他信息
none没有重要级,通常用于排错
selector(选择条件)
通过小数点“.”把facility和level连接在一起称为selector(选择条件)可以使用分号“,”同时定义多个选择条件。也支持如下三个修饰符::标识所有日志信息
=:等于,即仅包含本优先级别的日志信息
!:不等于,本优先级日志信息除外
action(处理方案)
有前面的选择条件定义的日志信息,可执行下面的动作:file:指定日志文件的绝对路径。
terminal或者print:发送到串行或并行设备的标识符,例如/dev/ttyS2 @host表示远程的日志服务器。
username:发送信息到本机的指定用户信息窗口中,但该用于必须已经登录系统。
named pipe:发送到预先使用mkfifo命令创建的FIFO文件的绝对路径中。
4.日志归档
日志滚动服务:所有的日志文件都会随着时间的推移和访问次数的增加而迅速增长,因此必须对日志文件进行定期清理,以免造成磁盘空间的不必要的浪费,同时也加快了管理员查看日志所用的时间。因而logrotate就非常有存在的必要了,Redhat系统默然安装logrotate,利用logrotate设置了相关对rsyslog日志迅速增长的设置。logrotate的执行由crond服务实现。在/etc/cron.daily目录中,有个logrotate,是个shellscript,用来启动logrotate。
logrotate程序每天由cron在指定的时间(/etc/crontab)启动。
参考关系图
4.1.Logrotate配置文件
#cat/etc/logroate.conf
weekly#每周清理一次日志文件
rotate 4#保存四个轮换日志
create#清除旧日志的同时,创建新的空日志文件
dateext#使用日期为后缀的回滚文件#可以去/var/log目录下看看
include/etc/logrotate.d#包含/etc/logrotate.d目录下的所有配置文件
/var/log/wtmp{#对/var/log/wtmp这个日志文件按照下面的设定日志回滚
monthly#每月轮转一次
create 0664 rootutmp#设置wtmp这个日志文件的权限,属主,属组
minsize 1M#日志文件必须大于1M才会去轮换(回滚)
rotate 1#保存一个轮换日志
}
/var/log/btmp {
missingok#如果文件丢失不报错
monthly
create 0600 rootutmp
rotate 1
}
#cat /etc/logrotate.d/syslog
/var/log/cron#这些文件是rsyslog.conf文件中全局配置定义中指定的Target的路径
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
sharedscripts
postrotate#轮换之后重启rsyslog服务
/bin/kill -HUP`cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
修改配置文件之后,重启服务生效。