Linux服务器的日志管理

1.简介

        从安全角度来说,Linux服务器的日志非常重要,它记录了系统每天所发生的各种各样的事情,如果服务器受到***,就可以通过它来进行分析。同时,它更是很重要的排障依据,可以通过它来检查错误发生的原因,所以我们必须了解和熟悉的运行机制。

2.日志服务升级

Linux在前面采用的是syslog作为日志收集服务器,由于syslog收集日志性能较低,目前大多数Linux版本都采用rsyslog来代替syslog收集日志。

3.系统日志配置详解

rsyslogsyslog配置文件有相类似的地方,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如下所示。

KEY
Explain
auth
pam_pwdb报告的认证活动。
authpriv
包括特权信息,如用户名在内的认证活动
cron
cronat有关的计划任务信息
daemon
inetd守护进程有关的后台进程信息。
kern
内核信息,首先通过klogd传递
lpr
与打印服务器有关的信息
mail
与电子邮件有关的信息
mark
syslog的内部功能,用于生成时间戳
nems
来自新闻服务器的信息
syslog
syslog生成的信息
user
由用户程序生成的信息
uucp
uucp生成的信息
local0~local7
与自定义程序一起使用

Level优先级

level定义了消息的紧急程度。按严重程度由高到低顺序排列如下:

level
Explain
emerg
该系统不可用,等同于panic
alert
需要被立即修改的条件
crit
危险情况
err
错误消息,等同于error
warning
预警信息,等同于warn
notice
具有重要性的普通文件
info
提供信息的消息
debug
不包含函数条件或问题的其他信息
none
没有重要级,通常用于排错

selector(选择条件)

通过小数点“.”把facilitylevel连接在一起称为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)启动。

参考关系图Linux日志分析_第1张图片

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

}

修改配置文件之后,重启服务生效。