让我们先来构造一条audit日志。在home目录下新建一个目录,然后配置一条audit规则,对这个目录的wrax,都记录审计日志:

auditctl -w /home/audit_test -p wrax -k audit_test

root用户访问audit_test目录时,即在这个目录下ls,审计日志如下:

type=SYSCALL msg=audit(1523501721.433:4172989307): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=21e0550 a2=90800 a3=0 items=1 ppid=13329 pid=18721 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=10711 comm="ls" exe="/usr/bin/ls" key="audit_test"
type=CWD msg=audit(1523501721.433:4172989307): cwd="/home/audit_test"
type=PATH msg=audit(1523501721.433:4172989307): item=0 name="." inode=99213313 dev=08:11 mode=040755 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL

使用ausearch命令可以看到这条日志的解释,使日志中的一些我们看不懂的参数转换为可读形式:

type=SYSCALL msg=audit(// ::21.433:) : arch=x86_64 syscall=openat success=yes exit= a0=0xffffffffffffff9c a1=0x21e0550 a2=O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC a3=0x0 items= ppid= pid=18721
auid=root uid=root gid=root euid=root suid=root fsuid=root egid=root sgid=root fsgid=root tty=pts2 ses= comm=ls exe=/usr/bin/ls key=audit_test
type=CWD msg=audit(04/12/2018 10:55:21.433:4172989307) : cwd=/home/audit_test
type=PATH msg=audit(04/12/2018 10:55:21.433:4172989307) : item=0 name=. inode=99213313 dev=08:11 mode=dir,755 ouid=root ogid=root rdev=00:00 objtype=NORMAL

其他用户访问audit_test时,审计日志如下:

type=SYSCALL msg=audit(1523501777.709:4172989316): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=10ce550 a2=90800 a3=0 items=1 ppid=2354 pid=30729 auid=0 uid=1001 gid=1001 euid=1001 suid=1001 fsuid=1001 egid=1001 sgid=1001 fsgid=1001 tty=pts1 ses=9870 comm="ls" exe="/usr/bin/ls" key="audit_test"
type=CWD msg=audit(1523501777.709:4172989316): cwd="/home/audit_test"
type=PATH msg=audit(1523501777.709:4172989316): item=0 name="." inode=99213313 dev=08:11 mode=040755 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL

type=SYSCALL msg=audit(// ::17.709:) : arch=x86_64 syscall=openat success=yes exit= a0=0xffffffffffffff9c a1=0x10ce550 a2=O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC a3=0x0 items= ppid= pid= 
auid=root uid=lbh gid=lbh euid=lbh suid=lbh fsuid=lbh egid=lbh sgid=lbh fsgid=lbh tty=pts1 ses= comm=ls exe=/usr/bin/ls key=audit_test
type=CWD msg=audit(04/12/2018 10:56:17.709:4172989316) : cwd=/home/audit_test
type=PATH msg=audit(04/12/2018 10:56:17.709:4172989316) : item=0 name=. inode=99213313 dev=08:11 mode=dir,755 ouid=root ogid=root rdev=00:00 objtype=NORMAL

下面我们来分析每个字段的含义:

type=SYSCALL

  每条记录都是以type=”keyword“开头,SYSCALL表示这条记录是向内核的系统调用触发产生的。更详细的type值和解释可以参考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec-Audit_Record_Types

msg=audit(1523501777.709:4172989316)

  在audit(time_stamp:ID)格式中,记录时间戳,从1970年1月1日00:00:00到现在的时间,ID为记录中唯一的ID标识,同一个事件产生的ID是相同的,如上访问audit_test目录会触发产生三条日志,但是事件ID是相同的。

arch=c000003e

  表示系统的CPU架构,这个十六进制表示”x86_64“,使用命令ausearch -i --arch c000003e可以打印出有这部分内容的audit.log中日志的解释。需要注意的是,使用ausearch来查询时,需要保证audit log中有这样的日志记录。

syscall=257

  向内核的系统调用的类型,类型值为257,在/usr/include/asm/unistd_64.h中有定义,这里257表示openat,可以使用命令ausyscall来查询不同的数字对应的系统调用名称。或者使用ausyscall --dump命令来显示所有的系统调用。

 # ausyscall
openat

# ausyscall --dump
Using x86_64 syscall table:
0 read
1 write
2 open

……

success=yes

  表示系统调用成功与否

exit=3

  系统调用结束时的返回码,可以使用如下命令来查看返回值为3的日志解释,不同的系统调用,返回值不同。

#ausearch --interpret --exit 

a0=ffffffffffffff9c a1=21e0550 a2=90800 a3=0

  为系统调用时的前四个arguments,这些arguments依赖于使用的系统调用,可以使用ausearch来查看解释(部分参数可以打印出数值具体的解释)。

items=1

  表示跟在系统调用后,补充记录的个数。

ppid=2354

  父进程ID,如bash的ID。

pid=30729

  进程Id,即为ls进程的ID。我们通过ps来查询,可以看到bash的进程与ppid是对应的

linux-xdYUnA:/home/audit_test # ps -aux | grep bash
lbh 2354 0.0 0.0 pts/1 S+ Apr11 : bash
root 0.0 0.0 pts/ Ss Apr11 : -bash
root 13329 0.1 0.0 pts/2 Ss : : -bash
root 0.0 0.0 pts/ S+ : : grep --color=auto bash
root 0.0 0.0 pts/ Ss Apr11 : -bash

  

linux audit审计(7)--读懂audit日志的更多相关文章

  1. 一次CMS GC问题排查过程(理解原理+读懂GC日志)

    这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下.这篇文章分三部分: 1.问题的场景和处理过程:2.GC的一些理论东西:3.看懂GC的日志 先说一下问题吧 ...

  2. [转]一次CMS GC问题排查过程(理解原理+读懂GC日志)

    这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下.这篇文章分三部分: 1.问题的场景和处理过程:2.GC的一些理论东西:3.看懂GC的日志 先说一下问题吧 ...

  3. linux audit审计(4)--audit的日志切分,以及与rsyslog的切分协同使用

    audit的规则配置稍微不当,就会短时间内产生大量日志,所以这个规则配置一定要当心.当audit日志写满后,可以看到如下场景: -r-------- 1 root root 8388609 Mar 3 ...

  4. linux audit审计(3)--audit服务配置

    audit守护进程可以通过/etc/audit/auditd.conf文件进行配置,默认的auditd配置文件可以满足大多数环境的要求. local_events = yes write_logs = ...

  5. linux audit审计(2)--audit启动

    参考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec- ...

  6. linux audit审计(6)--audit永久生效的规则配置

    定义reboot系统后,仍然生效的审计规则,有两种办法: 1.直接写入/etc/audit/audit.rules文件中,在service文件中需要加入ExecStartPost=-/sbin/aud ...

  7. linux audit审计(7-1)--读懂audit日志

     auid=0 auid记录Audit user ID,that is the loginuid.当我使用lbh用户登录系统时,再访问audit_test,此时记录的auid为1001,具体日志如下: ...

  8. linux audit审计(5)--audit规则配置

    audit可以配置规则,这个规则主要是给内核模块下发的,内核audit模块会按照这个规则获取审计信息,发送给auditd来记录日志. 规则类型可分为: 1.控制规则:控制audit系统的规则: 2.文 ...

  9. mysqlbinlog读懂binlog

    binlog 报unknown variable 'default-character-set=utf8' 方法1: 在/etc/my.cnf 中将default-character-set=utf8 ...

随机推荐

  1. SSM框架整合(IntelliJ IDEA + maven + Spring + SpringMVC + MyBatis)

    本篇文章主要内容是介绍如何使用IntelliJ IDEA创建Spring + SpringMVC + MyBatis项目,下面会给出项目搭建的详细步骤以及相关的配置文件. 1. 创建maven项目   ...

  2. Linux:Day3 文件系统

    Linux的文件系统: 根文件系统(rootfs):root filesystem /boot:引导文件存放目录:内核文件(vmlinuz).引导加载器(bootloader,grub)都存放于此目录 ...

  3. modbus与rs485的关系_modbus与rs485的区别和联系

    http://www.elecfans.com/tongxin/123/20180103610476.html 经常看到RS485和MODBUS写在一起,它们的区别和联系? RS485是一个物理接口, ...

  4. linux安装jdk1.8(rpm方式)

    在Oracle官网下载64位的jdk1.8版本 jdk1.8: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloa ...

  5. mac sourcetree push分支选中所有tag的时候报错

    错误信息: ....... ! [rejected] 573_0811_stable -> 573_0811_stable (already exists)updating local trac ...

  6. Feature Extractor[ResNet v2]

    0. 背景 何凯明大神等人在提出了ResNet网络结构之后,对其做了进一步的分析工作,详细的分析了ResNet 构建块能起作用的本质所在.并通过一系列的实验来验证恒等映射的重要性,并由此提出了新的构建 ...

  7. CF833D Red-Black Cobweb 点分治、树状数组

    传送门 统计所有路径的边权乘积的乘积,不难想到点分治求解. 边权颜色比例在\([\frac{1}{2},2]\)之间,等价于\(2B \geq R , 2R \geq B\)(\(R,B\)表示红色和 ...

  8. console 命令进行 JS 调试的灵活用法

    1.console.log() 占位符 console.log 支持的占位符包括:字符(%s).整数(%d或%i).浮点数(%f)和对象(%o): console.log('字符串: %s, 整数: ...

  9. Daily Scrum 12.19

    Member Task on 12.19 Task on 12.20 仇栋民 请假 完成Task972 : 完成活动评分基础功能 康家华 完成 Task1004 : 百度map UI优化 完成Task ...

  10. PS滤镜制作下雨照片特效

    原图 一.打开你想要添加下雨效果的照片,并新建一个图层,命名为雨,填充为黑色,对“雨”层执行:滤镜 > 杂色> 添加杂色,参数如图. 二.对“雨”层执行:滤镜 > 模糊 > 高 ...