3 日志文件介绍与分析
3.1 日志文件介绍
日志的功能:
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
日志文件的分类:
- 内核及系统日志:
这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置,决定将内核消息及各种系统程序消息记录到什么位置。日志格式基本相似。 - 用户日志:
记录用户登录及退出系统的相关信息,包括用户名、登录的终端、登录时间、来源主机、正在使用的进程操作等。 - 程序日志:
有些应用程序会选择由自己独立管理一份日志文件(而不是交给rsyslog服务管理),用于记录本程序运行过程中的各种事件信息。记录格式不统一。
日志保存位置:
- 默认位于:/var/log 目录下
主要日志文件介绍:
日志 | 位置 | 描述 |
内核及公共消息日志 | /var/log/messages | 它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,以及用户自定义安装软件的日志,也会在这里列出。 |
计划任务日志 | /var/log/cron | 记录与系统定时任务相关的曰志 |
系统引导日志 | /var/log/dmesg | 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息。 |
邮件系统日志 | /var/log/maillog | 记录邮件信息的曰志 |
用户登录日志: | /var/log/lastlog | 记录系统中所有用户最后一次的登录时间的曰志。这个文件是二进制文件.不能直接用 vi 查看,而要使用 lastlog 命令查看。 |
/var/log/secure | 记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录。比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中。 | |
/var/log/wtmp | 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件,不能直接用 vi 查看,而要使用 last 命令查看。 | |
/var/tun/ulmp | 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用 vi 查看,而要使用w、who、users等命令查看。 |
3.2 内核及系统日志
由系统服务 rsyslog 统一管理,根据其主配置文件 /etc/rsyslog.conf。
- 软件包:rsyslog-8.24.0-12.el7.x86_64 (可使用 ”rpm -q“ 命令查看)
- 主要程序:/sbin/rsyslogd
- 配置文件:/etc/rsyslog.conf (可使用 ”rpm -qc“ 命令查看)
日志消息的级别:
级号 | 消息 | 级别 | 说明 |
0 | EMERG | 紧急 | 会导致主机系统不可用的情况 |
1 | ALERT | 警告 | 必须马上采取措施解决的问题 |
2 | CRIT | 严重 | 比较严重的情况 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能会影响系统功能的事件 |
5 | NOTICE | 注意 | 不会影响系统但值得注意 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等 |
日志记录的一般格式:
- 事件产生的时间。
- 产生事件的服务器的主机名。
- 产生事件的服务名或程序名。
- 事件的具体信息。
3.3 用户日志分析
保存了用户登录、退出系统等相关信息:
- /var/log/lastlog:最近都用户登录事件。二进制文件,使用 lastlog 命令查看。
- /var/log/secure:与用户验证有关的安全性事件。
- /var/log/wtmp:用户登录、注销,及系统开、关机事件。二进制文件,使用 last 命令查看。
- /var/run/utmp:当前登录的每个用户的详细信息。二进制文件,使用w、who、users等命令查看。
分析工具:
- users、who、w、last、lastb
示例:
1)users:查询最近三次登录的用户信息。
users 命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。 如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数。
[root@localhost ~]# users root root 复制代码
2)who:查看当前登录的用户、终端、登录时间、IP地址。
who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可
以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用
户名、终端类型、登录日期及远程主机。
[root@localhost ~]# who root pts/0 2022-03-11 21:17 (192.168.72.1) root pts/1 2022-03-11 21:17 (192.168.72.1) 复制代码
3)w:查看当前登录的用户、终端、IP地址、登录时间、占用CPU的情况、进程等。
w 命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的 输出内容要丰富一些。
[root@localhost ~]# w 23:24:39 up 2:16, 2 users, load average: 0.25, 0.18, 0.16 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.72.1 21:17 7.00s 0.11s 0.00s w root pts/1 192.168.72.1 21:17 2:06m 9.05s 9.03s top 复制代码
4)last: 读取 /var/log/wtmp 文件,显示登录系统的用户信息。
last 命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。通过 last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前 主机可能已被入侵。
[root@localhost ~]# last -n 3 //查看最近3次登录信息 root pts/3 192.168.72.1 Fri Mar 11 23:00 - 23:19 (00:19) root pts/2 192.168.72.1 Fri Mar 11 23:00 - 23:19 (00:19) root pts/3 192.168.72.1 Fri Mar 11 22:22 - 23:00 (00:37) wtmp begins Tue Jan 18 17:39:14 2022 [root@localhost ~]# last -t 20220305200000 |head -5 //查看2022年3月5日20点之前的登录信息 root pts/1 192.168.72.1 Sat Mar 5 18:32 - 19:47 (01:15) root pts/0 192.168.72.1 Sat Mar 5 18:32 - 19:47 (01:15) root pts/1 192.168.72.1 Sat Mar 5 17:07 - 18:23 (01:16) root pts/0 192.168.72.1 Sat Mar 5 17:07 - 18:23 (01:16) root pts/1 192.168.72.1 Sat Mar 5 16:55 - 17:05 (00:10) 复制代码
5)lastb:读取 /var/log/btmp 文件,显示登入系统失败的用户信息。
lastb 命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都将记录在案。登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除 了使用 lastb 命令查看以外,也可以直接从安全日志文件/var/log/secure 中获得相关信息。
[root@localhost ~]# lastb yuji pts/0 Mon Mar 7 04:02 - 04:02 (00:00) zhangsan pts/0 Mon Mar 7 03:43 - 03:43 (00:00) yuji pts/0 Mon Mar 7 03:40 - 03:40 (00:00) root pts/0 Sat Mar 5 12:15 - 12:15 (00:00) btmp begins Sat Mar 5 12:15:57 2022 复制代码
3.4 程序日志分析
由相应的应用程序独立进行管理:
- Web服务:/var/log/httpd/
- access_log、error_log
- 代理服务:/var/log/squid
- access.log、cache.log
- FTP服务:/var/log/xferlog
分析工具:
- 文本查看、grep过滤检索、Webmin管理套件中查看
- awk、sed等文本过滤、格式化编辑工具
- Webalizer、Awstats等专用日志分析工具
3.5 日志管理策略
- 及时做好备份和归档
- 延长日志保存期限
- 控制日志访问权限
- 日志中可能会包含各类敏感信息,如账户、口令等。
- 集中管理日志
- 将服务器的日志文件发到统一的日志文件服务器
- 便于日志信息的统一收集、整理和分析
- 杜绝日志信息的意外丢失、恶意篡改或删除
4 内核及系统日志管理
4.1 系统日志相关服务
4.1.1 sysklogd 系统日志服务介绍
CentOS 5 之前版本采用的日志管理系统服务
- syslogd: system application 记录应用日志
- klogd: linux kernel 记录内核日志
事件记录格式:
- 日期时间 主机 进程[pid]: 事件内容
C/S架构:
- 通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理
4.1.2 rsyslog 系统日志服务
rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。尽管rsyslog最初是常规的syslogd,但发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。
当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。即使在远程的目的地和更精细的处理中,性能通常也被认为是惊人的”。
官网:
rsyslog 特性:
- 多线程
- UDP, TCP, SSL, TLS, RELP
- MySQL, PGSQL, Oracle实现日志存储
- 强大的过滤器,可实现过滤记录日志信息中任意部分
- 自定义输出格式
- 适用于企业级中继
查看 rsyslog 工具的详细信息:
[root@localhost ~]#rpm -qi rsyslog Name : rsyslog Version : 8.24.0 Release : 12.el7 Architecture: x86_64 Install Date: 2021年08月06日 星期五 20时59分53秒 Group : System Environment/Daemons Size : 2001814 License : (GPLv3+ and ASL 2.0) Signature : RSA/SHA256, 2017年08月11日 星期五 03时43分05秒, Key ID 24c6a8a7f4a80eb5 Source RPM : rsyslog-8.24.0-12.el7.src.rpm Build Date : 2017年08月07日 星期一 08时56分12秒 Build Host : c1bm.rdu2.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.rsyslog.com/ Summary : Enhanced system logging and kernel message trapping daemon Description : Rsyslog is an enhanced, multi-threaded syslog daemon. It supports MySQL, syslog/TCP, RFC 3195, permitted sender lists, filtering on any message part, and fine grain output format control. It is compatible with stock sysklogd and can be used as a drop-in replacement. Rsyslog is simple to set up, with advanced features suitable for enterprise-class, encryption-protected syslog relay chains. 复制代码