「Linux 奏章 20」日志管理

「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战」。

  1. 日志管理介绍

日志是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统启动信息、系统安全信息、邮件相关信息、各种服务相关信息等。

日志对于安全来说也很重要,它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,或者收到攻击时攻击者留下的痕迹。

/var/log 目录就是系统日志文件的保存位置:

img

1.1 系统常用的日志

日志文件 说明
/var/log/boot.log 系统启动日志
/var/log/cron 记录与系统定时任务相关的日志
/var/log/cups 记录打印信息的日志
/var/log/dmesg 记录了系统在开机时内核自检的信息,也可以使用 dmesg 命令直接查看内核自检信息
/var/log/btmp 记录错误登录的日志。这个文件是二进制文件,不能直接使用 vi 查看,而要使用 lastb 命令查看img
/var/log/lasllog 记录系统中所有用户最后一次登录时间的日志。同样而是二进制文件,lastlog 命令查看
/var/log/mailog 记录邮件信息的日志
/var/log/message 记录 Linux 系统绝大多数重要消息,如果出现问题,首先检查该日志文件
/var/log/secure 记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh 的登录、su 切换用户、sudo 授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp 永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件,是二进制文件,使用 last 命令查看
/var/tun/ulmp 只记录当前登录用户的信息,所以该文件会随着用户的登录和注销而不断变化,无法使用 vi 查看,使用 wwhousers 等命令查看

1.2 案例

使用 root 用户通过 Xshell 登录,第一次错误登录,第二次正确登录,查看 /var/log/secure 中记录的日志信息:

img

  1. 日志管理服务 rsyslogd

2.1 日志服务原理图

rsyslogd 是后台程序 (daemon、服务),那 rsyslogd 服务如何知道将各类型日志信息记录至日志文件保存位置 /var/log/xxx 呢?

⭐得益于 /etc/rsyslog.conf 配置文件,/etc/rsyslog.conf 中记录了日志文件管理的规则:

img

2.2 rsyslogd

CentOS 7 日志管理服务是 rsyslogd(后台程序 daemon),CentOS 6.x 日志管理服务是 syslogd。rsyslogd 功能更强大,且 rsyslogd 向下兼容 syslogd 服务。

  • ⭐查询 Linux 中的 rsyslogd 服务是否启动
    • ps -aux | grep "rsyslog" | grep -v "grep" :
      • grep 不加参数是正向过滤(想要什么)、 -v 参数为反向过滤(不想要什么)
      • img
  • ⭐查询 rsyslogd 服务的自启动状态
    • systemctl list-unit-files | grep "rsyslog"
    • img

2.3 日志管理规则

⭐查看配置文件 /etc/rsyslog.conf 日志管理规则

img

2.4 日志类型 & 日志级别 ==> *.*

  • 编辑文件时的格式为 : *.* (第一个 * 代表日志类型、第二个 * 代表日志级别
    • 日志类型
      • auth pam产生的日志
      • authpriv ssh、ftp等登录信息的验证信息
      • corn 时间任务相关
      • kern 内核
      • lpr 打印
      • mail 邮件
      • mark(syslog)-rsyslog 服务内部的信息,事件标识
      • news 新闻组
      • users 用户程序产生的相关信息
      • uucp unix to nuix copy主机之间相关的通信
      • local 1-7 自定义日志设备
    • 日志级别(自上到下,级别从低到高,记录信息越来越少)
      • debug
      • info
      • notice
      • warning
      • err
      • crit
      • alert
      • emerg
      • none

2.5 日志文件格式信息

日志文件的格式包含以下 4 列

  • 1、事件产生的时间
  • 2、产生事件的服务器的主机名
  • 3、产生事件的服务名或程序名
  • 4、事件的具体信息

img

  1. 自定义日志服务

vim /etc/rsyslog.conf: 编辑日志管理规则:

1
2
shell复制代码# 增加自定义日志(*.*==>所有类型所有级别的日志信息)
*.* /var/log/wyk.log

img

此时重启下 CentOS,然后查看日志信息:

  1. 日志轮替

4.1 日志轮替介绍

日志轮替就是把旧日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围后,就会被自动删除。

4.2 日志轮替文件命名

  • CentOS 7 中使用 logrotate 进行日志轮替管理,要想改变日志轮替文件名字,通过 /etc/logrotate.conf 配置文件中 “dateext“ 参数
  • 如果配置文件中有 “dateext“ 参数,那么日志会用日期来作为日志文件的后缀,例如:”secure-20211114“。这样日志文件名就不会重叠,也就不需要日志文件的改名了,只需要自定保存日志个数,删除多余的日志文件即可。
  • 如果日志文件中没有 “dateext“ 参数,日志文件就需要进行改名了。
    • 第一次进行日志轮替:当前的 “secure” 日志会自动改名为 “secure.1”,然后新建 “secure” 日志,用于保存新的日志。
    • 第二次进行日志轮替:”secure.1” 自动改名为 “secure.2”,当前的 “secure” 日志会自动改名为 “secure.1”,然后新建 “secure” 日志用于保存新日志,以此类推。

vim /etc/logrotate.conf

4.3 logrotate 配置文件参数说明

img

4.4 自定义日志轮替

⭐方法一:直接在 /etc/logrotate.conf 配置文件中写入该日志的轮替策略。

⭐方法二:/etc/logrotate.d/ 目录下新建该文件的日志轮替文件,然后在 /etc/logrotate.conf 中引入该目录 (include)

例:

1
2
3
4
5
6
7
8
shell复制代码/var/log/wyk.log
{
missingok
daily
copytruncate
rotate 7
notifempty
}

4.5 日志轮替机制原理

日志轮替之所以可以在指定时间备份日志,是依赖系统的定时任务。在 /etc/cron.daily/ 目录,就会发现这个目录中有 logrotate 文件(可执行),logrotate 通过这个文件依赖定时任务执行。

4.6 内存日志

journalctl : 可以查看内存日志,以下介绍一些常用的指令

  • journalctl:查看全部
  • journalctl -n 3:查看最新 3 条

  • journalctl --since 19:00 --until 19:10:10:查看起始时间到结束时间的日志可加日期
  • journalctl -p err:报错日志

  • journalctl -o verbose:日志详细内容
  • journalctl _PID=1234 _COMM=sshd:查看包含这些参数的日志
  • journalctl | grep sshd
  • 注:journalctl 指令查看的是内存日志,重启后会被清空
  1. 盘点日志管理的相关文件

  • /var/log/ : 系统日志文件目录
  • /etc/rsyslog.conf : 日志管理规则配置文件(什么日志信息放到什么地方)
  • /etc/logrotate.conf : 全局的日志轮替策略/规则,可以单独给某个日志文件制定策略 /etc/logrotate.dinclude 引入)
  • /etc/logrotate.d/ : 单文件设置日志轮替规则,该目录可被 /etc/logrotate.conf 文件引入 : include /etc/logrotate.d

希望本文对你有所帮助🧠

欢迎在评论区留下你的看法🌊,我们一起讨论与分享🔥

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%