目录
一、介绍
日志文件是重要的信息系统文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统的启动信息、系统的安全信息、邮寄相关信息、各种服务相关信息。
不仅如此,日志对于安全来说也很重要,它记录了系统每天发生的各种事情,可以通过日志来检查错误发生的原因或者受到攻击时攻击者留下的痕迹。总的来说,日志就是记录重大事件的文件。
二、处理日志的工具
1、介绍
rsyslogd 专职管理系统日志的工具,它生产着用户的登录信息、系统的启动信息、系统的安全信息、邮寄相关信息、各种服务相关信息文件,这些文件都存储在/var/log目录下。
2、工具使用
(1)查询是否安装了rsyslogd工具
yum list rsyslog # @ 代表已被安装
(2)查看rsyslog服务是否开启
systemctl start rsyslog # 启动服务
systemctl restart rsyslog # 重启服务
systemctl stop rsyslog # 停止服务
systemctl reload rsyslog # 重新加载服务
3、/var/log/下常用的日志文件
- /var/log/boot.log 系统启动日志
- /var/log/cron 系统定时任务相关的日志
- /var/log/dmesg 记录了系统在开机时内核自检的信息,这些信息也可以直接使用 dmesg 命令来查看
- /var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,该文件为二进制文件,要使用命令 lastlog 查看
- /var/log/mailog 记录邮件信息的日志
- /var/log/message 记录系统重要信息的日志,该日志中有着 Linux 中绝大多数重要的信息,如果系统出现问题首先应该检查的就是这个文件
- /var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统登录、ssh 登录、添加用户、修改用户密码等
- /var/log/yum.log 记录着yum工具安装、卸载程序的记录。
(1)查看日志信息
日志信息分别是4个字段信息组成
- 第一个字段信息:产生日志的时间;
- 第二个字段信息:产生日志的主机名;
- 第三个字段信息:产生日志的程序或服务和进程号;
- 第四个字段信息:产生日志的程序或服务的具体操作;
三、rsyslogd的配置文件
/etc/rsyslog.conf # rsyslog主配置文件
四、日志规则
1、查看/etc/rsyslog.conf配置文件
*.* 第一个 * 代表着日志的设备类型,第二个 * 代表着日志的级别。* 代表包括所有日志类型或级别。
日志设备类型:每个程序在被设计时,都已经被作者定义好了设备类型,例如 ssh服务
vim /etc/ssh/sshd_config
可以根据设备类型,得知日志存储位置。例如:ssh的登录安全验证日志存储路径为 /var/log/secure
日志级别:根据需求,设置需要的级别,例如,要求日志只记录警告信息,就将日志级别设置为warning。
2、日志类型
auth | pam 产生的日志 |
authpriv | 安全验证,例如 ssh、ftp、su等登录信息的信息验证 |
corn | 定时任务 crontab、at相关 |
kern | 内核 |
lpr | 打印 |
| 邮件程序相关 |
mark(syslog)-rsyslog | 服务内部的信息,时间标识 |
news | 新闻组 |
user | 用户程序产生的相关信息 |
uucp | unix to nuix copy 主机之间相关的通信 |
local 1-7 | 自定义的日志设备 |
3、日志级别(从上往下,级别越高 记录的日志信息就越少)
五、自定义日志规则
vim /etc/rsyslog.conf
定义所有的登录安全验证信息到/var/log/test日志下
配置好日志规则后,重启rsyslog服务
systemctl restart rsyslog
使用su命令切换用户,再查看test日志是否记录
su命令切换用户的日志信息已记录到test文件下
六、日志轮转
1、介绍
为什么需要日志轮转?
因为日志无时无刻都在产生,而存储日志的文件也会随着时间增长越来越大,这样就会极大的浪费磁盘的空间。
什么是日志轮转?
将日志按照时间或大小的维度来分成多份,将旧的日志备份,创建新的文件存储日志,旧的备份日志积攒到一定数量就会删除。
2、配置文件
/etc/logrotate.conf # 主配置文件
/etc/logrotate.d/ # 子配置文件夹
(1)主配置文件 /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly # 一个星期轮转一次
# keep 4 weeks worth of backlogs
rotate 4 # 每个日志最多备份四个,超过了这个范围就会将最早日期的备份删除
# create new (empty) log files after rotating old ones
create # 在日志轮换后创建新的文件
# use date as a suffix of the rotated file
dateext # 以日期来作为文件的后缀 例子:yum.log-20240324
# uncomment this if you want your log files compressed
#compress # 将日志压缩,不建议开启这个选项,因为压缩日志会占用cpu资源
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d # 读取该目录下的所有子配置文件
# 为某个日志单独设置轮换规则
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly # 每个月轮换一次
create 0664 root utmp # 指定新创建文件的权限、属主、属组
minsize 1M # 日志大小要达到1M才会轮转,否则日期达到也不会轮转
rotate 1 # 仅保留一个备份日志文件
}
/var/log/btmp {
missingok # 日志丢失也不会报错
monthly # 日志一个月轮换一次
create 0600 root utmp # 指定新创建文件的权限、属主、属组
rotate 1 # 仅保留一个备份日志文件
}
# system-specific logs may be also be configured here.
代码中参数的解释
(2)子配置文件夹 /etc/logrotate.d/
该目录下的所有文件都可以自定义轮换规则。
3、为某个日志自定义轮换规则
为某个日志自定义轮换规则的两种方式:
- 在/etc/logrotate.conf/配置文件中添加;
- 在/etc/logrotate.d/目录下创建轮换规则文件(推荐);
(1)自定义轮换规则文件
# 我这里直接修改yum的轮换规则文件
vim /etc/logrotate.d/yum
(2)手动测试logrotate
# 修改日期
date 大于今天的日期
# logrotate手动测试
/usr/sbin/logrotate /etc/logrotate.conf
日志轮转是系统通过Cron工具来完成定时执行的,其执行脚本路径/etc/cron.daily/logrotate/
脚本内容:
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0