「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战」。
- 日志管理介绍
日志是重要的系统信息文件,其中记录了许多重要的系统事件,包括用户的登录信息、系统启动信息、系统安全信息、邮件相关信息、各种服务相关信息等。
日志对于安全来说也很重要,它记录了系统每天发生的各种事情,通过日志来检查错误发生的原因,或者收到攻击时攻击者留下的痕迹。
⭐/var/log
目录就是系统日志文件的保存位置:
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 查看,使用 w 、who 、users 等命令查看 |
1.2 案例
使用 root 用户通过 Xshell 登录,第一次错误登录,第二次正确登录,查看 /var/log/secure
中记录的日志信息:
- 日志管理服务 rsyslogd
2.1 日志服务原理图
⭐rsyslogd 是后台程序 (daemon、服务),那 rsyslogd 服务如何知道将各类型日志信息记录至日志文件保存位置 /var/log/xxx
呢?
⭐得益于 /etc/rsyslog.conf
配置文件,/etc/rsyslog.conf
中记录了日志文件管理的规则:
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
参数为反向过滤(不想要什么)
- ⭐查询 rsyslogd 服务的自启动状态
systemctl list-unit-files | grep "rsyslog"
2.3 日志管理规则
⭐查看配置文件 /etc/rsyslog.conf
日志管理规则:
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、事件的具体信息
- 自定义日志服务
vim /etc/rsyslog.conf
: 编辑日志管理规则:
1 | shell复制代码# 增加自定义日志(*.*==>所有类型所有级别的日志信息) |
此时重启下 CentOS,然后查看日志信息:
- 日志轮替
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 配置文件参数说明
4.4 自定义日志轮替
⭐方法一:直接在 /etc/logrotate.conf
配置文件中写入该日志的轮替策略。
⭐方法二:/etc/logrotate.d/
目录下新建该文件的日志轮替文件,然后在 /etc/logrotate.conf
中引入该目录 (include
)
例:
1 | shell复制代码/var/log/wyk.log |
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
指令查看的是内存日志,重启后会被清空。
- 盘点日志管理的相关文件
/var/log/
: 系统日志文件目录/etc/rsyslog.conf
: 日志管理规则配置文件(什么日志信息放到什么地方)/etc/logrotate.conf
: 全局的日志轮替策略/规则,可以单独给某个日志文件制定策略/etc/logrotate.d
(include
引入)/etc/logrotate.d/
: 单文件设置日志轮替规则,该目录可被/etc/logrotate.conf
文件引入 :include /etc/logrotate.d
希望本文对你有所帮助🧠
欢迎在评论区留下你的看法🌊,我们一起讨论与分享🔥
本文转载自: 掘金