openEuler:日志管理

日志介绍

概述

系统日志是一系列用于记录系统操作和活动进行的文件,这些日志对于监控和排查系统问题非常重要,因为它们可以提供有关系统行为、应用活动和安全事件的见解。系统日志还可以成为识别 Linux 系统中潜在安全弱点和漏洞的重要信息来源。通过分析目标系统上的日志,我们可以深入了解系统行为、网络活动和用户活动,并利用这些信息识别任何异常活动,例如未经授权的登录、攻击尝试、明文凭据或异常的文件访问,这些都可能表明潜在的安全漏洞.

日志的分类

kernel logs

这些日志包含系统内核的相关信息,例如:硬件驱动,系统调用和内核事件

System logs

系统日志包含系统级别事件的信息,例如:服务的开启与停止,登录尝试和系统重启,通过监测这些日志,我们可以检测到系统中任何可能的访问或活动

Authentication logs

这些日志存储着用户尝试登录的认证信息(成功或者失败)

Feb 28 2024 18:15:01 sshd[5678]: Accepted publickey for admin from 10.14.15.2 port 43210 ssh2: RSA SHA256:+KjEzN2cVhIW/5uJpVX9n5OB5zVJ92FtCZxVzzcKjw
Feb 28 2024 18:15:03 sudo:   admin : TTY=pts/1 ; PWD=/home/admin ; USER=root ; COMMAND=/bin/bash
Feb 28 2024 18:15:05 sudo:   admin : TTY=pts/1 ; PWD=/home/admin ; USER=root ; COMMAND=/usr/bin/apt-get install netcat-traditional
Feb 28 2024 18:15:08 sshd[5678]: Disconnected from 10.14.15.2 port 43210 [preauth]
Feb 28 2024 18:15:12 kernel: [  778.941871] firewall: unexpected traffic allowed on port 22
Feb 28 2024 18:15:15 auditd[9876]: Audit daemon started successfully
Feb 28 2024 18:15:18 systemd-logind[1234]: New session 4321 of user admin.
Feb 28 2024 18:15:21 CRON[2345]: pam_unix(cron:session): session opened for user root by (uid=0)
Feb 28 2024 18:15:24 CRON[2345]: pam_unix(cron:session): session closed for user root

在这个例子中,我们可以看到在第一行中,用户admin成功使用公钥进行身份验证。此外,我们还可以看到该用户属于sudoers组,因为他可以使用sudo执行命令。内核消息表明端口22上允许了意外的流量,这可能意味着潜在的安全漏洞。之后,我们看到systemd-logind为用户"admin"创建了一个新会话,并且root用户的一个cron会话已打开并关闭。

Application logs

这类日志范围比较广泛,包括了各种在系统上运行的程序生成的日志

openEuler 中的常用系统日志

  • dmesg
    主要记录系统在开机时内核检测过程所产生的信息, 通过执行dmesg命令查看。

  • /var/log/wtmp or /var/log/faillog
    这两个文件可以记录正常登陆系统的账户信息(wtmp),与错误登陆时所使用的账户信息(faillog)。last命令就是读取wtmp文件来获取的。

  • /var/log/btmp
    记录错误登录日志, 这个文件是二进制的,不能使用cat命令查看,而要使用lastb命令查看。

  • /var/run/utmp
    记录当前一登录的用户的信息,同样不能使用cat命令查看,而要使用w, who, users命令来查询。

  • /var/log/lastlog
    记录了系统上面所有账户最近一次登陆系统的相关信息,lastlog命令就是读取这个文件里的记录来显示的。

  • /var/log/secure
    只要涉及到需要用户名和密码的操作, 那么当登陆系统是(不论正确错误),都会记录到这里。

  • /var/log/messages
    这个文件非常重要, 几乎系统发生的错误信息,或者重要信息都会被记录在这里。

  • /var/log/cron
    主要记录关于crontab计划任务的相关信息, 比如,系统计划任务的错误配置, 计划任务的修改等。

  • /var/log/maillog or /var/log/mail/
    记录着邮件的往来信息, 默认是postfix邮件服务器的某些信息。

日志管理

rsyslog

rsyslog 是一种增强版的系统日志守护程序,用于大多数 Linux 发行版上处理系统日志。它能够接收日志消息、过滤和解析日志内容,并将其保存到本地日志文件或通过网络发送到远程日志服务器
官方指导文档

日志设施(facility)

就是对日志信息分类,将不同类别的日志记录到不同的位置
常见的日志设施:

日志类别描述
authPAM认证相关日志
authprivSSH、FTP登录相关日志
cron任务计划相关日志
daemon守护进程相关日志
kern内核相关日志
lpr打印相关日志
mail邮件相关日志
mark标记记号相关日志
news新闻相关日志
security安全相关日志,与auth类似
syslogrsyslog自己的日志
user用户相关日志
uucpUNIX to UNIX cp相关日志
local0 ~ local7用户自定义使用设置日志

PS:定义日志级别的时候可以使用通配符,比如,* 表示全部级别; 表示多个级别(debug,info,notice);! 表示某个级别除外;= 表示仅仅某个级别的日志

日志级别
  1. debug:调试级别(程序调试信息)
  2. info:通知消息(程序的正常输出)
  3. notice:注意级别(程序可能有错误)
  4. warning:警告级别(警告错误)
  5. error:错误级别
  6. crit:严重错误级别
  7. alter:发出严重报警级别
  8. emerg:系统级别故障,会导致系统不可用的严重信息

logrotate 日志转储服务

logrotate 是一个方便的日志管理工具,随着时间的推移,日志文件会越来越多,占用磁盘空间越来越大,但是我们又需要使用日志来定位故障,logrotate 就按照时间/大小将日志文件压缩,并且定期清理时间久远的日志,以节省我们的磁盘空间,并且减少了手动操作。

logrotate 的简单介绍

系统定时运行

openEuler 等常见的 Linux 发行版中默认安装 logrotate,并且在 crontab 中确定了定时运行,我们可以 cat /etc/cron.daily/logrotate 查看定时运行程序
image.png

配置 logrotate

样例

/var/log/messages {
    rotate 5
    weekly
    postrotate
        /usr/bin/killall -HUP syslogd
    endscript
}

常见配置参数

  • daily :指定转储周期为每天
  • weekly :指定转储周期为每周
  • monthly :指定转储周期为每月
  • rotate count :指定日志文件删除之前转储的次数,0 指没有备份,5 指保留 5 个备份
  • tabooext [+] list:让 logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和~
  • missingok:在日志轮循期间,任何错误将被忽略,例如 “文件无法找到” 之类的错误。
  • size size:当日志文件到达指定的大小时才转储,bytes (缺省) 及 KB (sizek) 或 MB (sizem)
  • compress: 通过 gzip 压缩转储以后的日志
  • nocompress: 不压缩
  • copytruncate:用于还在打开中的日志文件,把当前日志备份并截断
  • nocopytruncate: 备份日志文件但是不截断
  • create mode owner group : 转储文件,使用指定的文件模式创建新的日志文件
  • nocreate: 不建立新的日志文件
  • delaycompress: 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩
  • nodelaycompress: 覆盖 delaycompress 选项,转储同时压缩。
  • errors address : 专储时的错误信息发送到指定的 Email 地址
  • ifempty :即使是空文件也转储,这个是 logrotate 的缺省选项。
  • notifempty :如果是空文件的话,不转储
  • mail address : 把转储的日志文件发送到指定的 E-mail 地址
  • nomail : 转储时不发送日志文件
  • olddir directory:储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
  • noolddir: 转储后的日志文件和当前日志文件放在同一个目录下
  • prerotate/endscript: 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行

更多信息请参考man logrotate帮助文档

参考文章

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值