一、日志文件的分类

日志文件是用于记录Linux系统中各种运行消息的文件,相当于Linux主机的“日记”。不同的日
志文件记载了不同类型的信息,如Linux内核消息、用户登录事件、程序错误等
·日志文件对于诊断和解决系统中的问题很有帮助,因为在Linux系统中运行的程序通常会把系统
消息和错误消息写入相应的日志文件,这样系统一旦出现问题就会"有据可查”。此外,当主机
遭受攻击时,日志文件还可以帮助寻找攻击者留下的痕迹

内核及系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件
/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置
用户日志:这种日志数据用于记录Linux系统用户登录及退出系统的相关信息,包括用户名、登
录的终端、登录时间、来源主机、正在使用的进程操作等
程序日志:有些应用程序会选择由自己独立管理一份日志文件(而不是交给rsyslog服务管理),用于记录本程序运行过程中的各种事件信息

二、日志文件位置

Linux系统本身和大部分服务器程序的日志文件默认都放在目录/var/log/下

一部分程序共用一个日志文件,一部分程序使用单个日志文件,而有些大型服务器程序由于日志文件不止个,所以会在/var/log/目录中建立相应的子目录来存放日志文件,这样既保证了日志文件目录的结构清晰,又可以快速定位日志文件

有相当一部分日志文件只有root用户才有权限读取,这保证了相关日志信息的安全

三、常见日志文件

/var/log/inessages记录Linux内核消息及各种应用程序的公共日志信息,包括启动、I/O错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息
/var/log/cron记录crondi计划任务产生的事件信息
/var/log/dmesg记录Linux系统在引导过程中的各种事件信息
/var/log/maillog记录进入或发出系统的电子邮件活动
/var/log/lastlog记录每个用户最近的登录事件
/var/log/secure记录用户认证相关的安全事件信息
/var/log/wtmp记录每个用户登录、注销及系统启动和停机事件
/var/log/btmp记录失败的、错误的登录尝试及验证事件

1.分析日志文件

分析日志文件的目的在于通过浏览日志查找关键信息、对系统服务进行调试,以及判断发生故障的原因等
对于大多数文本格式的日志文件(如内核及系统日志、大多数的程序日志) ,只要使用tail、 more、 less、 cat等文本处理工具就可以查看日志内容
而对于些二进制格式的日志文件 (如用户日志),则需要使用特定的查询命令

2.内核及系统日志

rsyslog服务所使用的配置文件为/etc/rsyslog.conf.通过查看该文件中的内容,
可以了解到系统默认的日志设置
# grep -v "^$” /etc/rsyslog.conf
从配置文件/etc/rsyslog.conf中可以看到,受rsyslogd服务管理的日志文件都是Linux系统中最主要的日志文件,它们记录了Linux系统中内核、用户认证、邮件、计划任务等最基本的系统消息

四、日志消息等级

在Linux内核中,根据日志消息的重要程度不同,将其分为不同的优先级别(数字等级越小,优先级越高,消息越重要)

等级等级信息效果
0EMERG (紧急)会导致主机系统不可用的情况
1ALERT (警告)必须马上采取措施解决的问题
2CRIT (严重)比较严重的情况
3ERR(错误)运行出现错误
4WARNING (提醒)可能影响系统功能 ,需要提醒用户的重要事件
5NOTICE (注意)不会影响正常功能,但是需要注意的事件
6INFO(信息)一般信息
7DEBUG (调试)程序或系统调试信息等

五、日志文件分析

内核及大多数系统消息都被记录到公共日志文件/var/loq/messaqes中,而其他一些程序消息被记
录到各自独立的日志文件中
对于rsyslog服务统管理的大部分日志文件,使用的日志记录格式基本上都是相同的。以公共日志/var/loq/messaqes文件的记录格式为例,其中每一行表示一条日志消息,每一条消息均包括以下

四个字段:
时间标签:消息发出的日期和时间
主机名:生成消息的计算机的名称
子系统名称:发出消息的应用程序的名称
消息:消息的具体内容

1.用户日志

在wtmp、btmp、 lastlog等日志文件中 ,保存了系统用户登录、 退出等相关的事件消息。 但是这
些文件都是二进制的数据文件,不能直接使用tail、less等文本查看工具进行浏览,需要使用who、w、users、 last和lastb等用户查询命令来获取日志信息

查询当前登录的用户情况: users、who、 w

users命令 只是简单地输出当前登录的用户名称每个显示的用户名对应一个登录会话。如果一个
用户有不止一个登录会话,那他的用户名将显示与其相同的次数

who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可以查看当前系统存在哪些不合法用户,从而对其进行审计和处理who的默认输出包括用户名、终端类型、登录日
期及远程主机
w命令用于显示当前系统中的每个用户及其所运行的进程信息,比users、 who命令的输出内容要更加丰富一些

查询用户登录的历史记录: last、lastb命令
last命令用于 查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。通过last命令可
以及时掌握Linux主机的登录情况,若发现未经授权的用户登录过,表示当前主机可能已被入侵
lastb命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都将记录在案。
用于登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除了使用lastb命令
查看以外,也可以直接从安全日志文件/var/log/secure中获得相关信息

2.程序日志

在Linux系统中,还有相当一部分应用程序并没有使用rsyslog服务来管理日志,而是由程序自己
维护日志记录
例如,httpd网站服务程序使用两个日志文件access_ log和error. log,分别记录客户访问事件
错误事件
由于不同应用程序的日志记录格式差别较大,并没有严格使用统一的格式,这里不再详细介绍

六、日志分析注意事项

总地来说,作为一名合格的系统管理人员,应该提高警惕,随时注意各种可疑状况,定期并随机地检查各种系统日志文件,包括一般信息日志、网络连接日志、文件传输日志及用户登录日志记录等。在检查这些日志时,要注意是否有不合常理的时间或操作记录。例如,出现以下一些现象就应多加注意:

用户在非常规的时间登录,或者用户登录系统的IP地址和以往的不一样
用户登录失败的日志记录,尤其是那些一再连续尝试进入失败的日志记录
非法使用或不正当使用超级用户权限
无故或者非法重新启动各项网络服务的记录
不正常的日志记录,如日志残缺不全,或者是诸如wtmp这样的日志文件无故缺少了中间的记录文件
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐