日志文件分析

一分析日志文件

日志文件是用于记录Linux系统中各种运行消息的文件,相当于Linux主机的"日记"

日志文件对于诊断和解决系统中的问题很有帮助,系统一旦出现问题时及时分析日志就会"有据可查"。此外,当主机遭受***时,日志文件还可以帮助寻找***者留下的痕迹

不同的日志文件记载了不同类型的信息,例如Linux内核消息、用户登录记录、程序错误等

·日志的功能

用于记录系统、程序运行中发生的各种事件

通过阅读日志,有助于诊断和解决系统故障

·日志文件的分类

1内核及系统日志

由系统服务syslog统一进行管理,日志格式基本相似;根据其主配置文件/etc/syslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置

2用户日志

记录系统用户登录及退出系统的相关信息;包括用户名、登陆的终端、登陆时间、来源主机、正在使用的进程操作等

3程序日志

由各种应用程序独立管理的日志文件,记录格式不统一;

·日志文件保存位置及介绍

大部分日志文件默认都放在目录/var/log/下;一部分程序公用一个日志文件,一部分程序使用单个日志文件,而有些大型服务器程序的日志文件不止一个,会在/var/log/创建多个子目录来存放日志;大部分日志文件只有root用户才有权读取

其中

/var/log/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息。

/var/log/cron:记录crond计划任务产生的事件信息。

/var/log/dmesg:记录Linux系统在引导过程中的各种事件信息。

/var/log/maillog:记录进入或发出系统的电子邮件活动。

/var/log/lastlog:记录每个用户最近的登录事件。

/var/log/rpmpkgs:记录系统中安装的各rpm包列表信息。

/var/log/secure:记录用户认证相关的安全事件信息。

/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。

/var/run/btmp:记录失败的、错误的登录尝试及验证事件。

·日志文件的分析

分析日志文件的目的在于通过浏览日志查找关键信息,对系统服务进行调试,以及判断发生故障的原因等;

对于大多数日志文件(内核及系统日志、大多数程序日志),只要使用tail、more、less、cat等命令处理工具查看即可;而对于一些二进制格式的日志文件(用户日志),则需要使用特定的查询命令

1内核及系统日志分析

软件包:sysklogd-1.4.1-39.2 ;提供了klogd、syslogd两个程序

主要程序:/sbin/klogd、/sbin/syslogd;分别用于记录系统内核的消息和各种应用程序的消息

配置文件:/etc/syslog.conf

由系统服务 syslogd 统一管理

通过查看/etc/syslog.conf文件中的内容,可以了解到系统默认的日志设置,可以设置日志记录的位置等(本地或者远程服务器)

日志消息的级别

0 EMERG(紧急):会导致主机系统不可用的情况

1 ALERT(警告):必须马上采取措施解决的问题

2 CRIT(严重):比较严重的情况

3 ERR(错误):运行出现错误

4 WARNING(提醒):可能会影响系统功能的事件

5 NOTICE(注意):不会影响系统但值得注意

6 INFO(信息):一般信息

7 DEBUG(调试):程序或系统调试信息等

执行以下命令可以查看帮助信息中的日志级别部分

日志记录的一般格式

内核及系统日志文件中的每一行表示一条消息,每个消息由4个字段的固定格式组成:

时间标签:消息发出的日期和时间

主机名:生成消息的计算机的名字

子系统名称:发出消息的应用程序名称

消息:消息的具体内容

2用户日志分析

保存了用户登录、退出系统等相关信息;属于二进制的数据文件,需要用专门的命令查询

/var/log/lastlog:最近的用户登录事件

/var/log/wtmp:用户登录、注销及系统开、关机事件

/var/run/utmp:当前登录的每个用户的详细信息

/var/log/secure:与用户验证相关的安全性事件

分析工具

users 命令:当前用户登录的会话有几个

Who命令:登录到系统的每个用户的信息;包括用户名、终端类型、登录日期以及远程主机

w命令:比who更丰富的内容,还包括了每个用户及其所运行的进程信息

Last命令:查询用户登录的历史记录

Lastb命令:查询登录失败的用户记录

也可以通过查看安全日志文件/var/log/secure中的内容获得相关信息

3程序日志分析

由相应的应用程序独立进行管理,自己维护日志记录

Web服务:/var/log/httpd/

access_log、error_log

代理服务:/var/log/squid/

access.log、cache.log、squid.out、store.log

FTP服务:/var/log/xferlog

分析工具

文本查看、grep过滤检索、Webmin管理套件中查看

awk、sed等文本过滤、格式化编辑工具

WebalizerAwstats等专用日志分析工具

·日志文件的管理策略

日志管理策略

1及时作好备份和归档

2延长日志保存期限

3控制日志访问权限,日志中可能会包含各类敏感信息,如账户、口令等

4集中管理日志,便于日志信息的统一收集、整理和分析杜绝日志信息的意外丢失、恶意篡改或删除

二 应用实例

实验目的:建立集中管理的日志服务器,将客户机中服务产生的日志消息,自动发送到服务器中的指定文件

实验环境:两台linux5,一台做服务器,一台做客户机,如图所示

实验要求:将客户机B中crond服务产生的日志消息,自动发送到服务器A的/var/log/cron文件中

实验步骤:

1在服务器上调整syslogd服务设置,开启服务器功能

服务器的配置文件是/etc/sysconfig/syslog

修改配置项

其中

"-r"选项表示允许接收其他主机发送过来的日志记录

"-x"选项表示不进行DNS域名解析

"-m"选项表示记录日志时的时间标记间隔(设为0禁用该功能)

"-s"选项表示指定客户机地址(指定谁可以发送自己的日志文件到服务器上)

重启服务

开启514号端口

2配置客户端日志记录的文件位置

添加服务器地址(如果保留原来的配置,表示同时在本地和远程主机上记录)

重启服务

3在客户端新建计划任务,观察服务器的日志变换