linux audit审计(7)--读懂audit日志
让我们先来构造一条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日志的更多相关文章
- 一次CMS GC问题排查过程(理解原理+读懂GC日志)
这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下.这篇文章分三部分: 1.问题的场景和处理过程:2.GC的一些理论东西:3.看懂GC的日志 先说一下问题吧 ...
- [转]一次CMS GC问题排查过程(理解原理+读懂GC日志)
这个是之前处理过的一个线上问题,处理过程断断续续,经历了两周多的时间,中间各种尝试,总结如下.这篇文章分三部分: 1.问题的场景和处理过程:2.GC的一些理论东西:3.看懂GC的日志 先说一下问题吧 ...
- linux audit审计(4)--audit的日志切分,以及与rsyslog的切分协同使用
audit的规则配置稍微不当,就会短时间内产生大量日志,所以这个规则配置一定要当心.当audit日志写满后,可以看到如下场景: -r-------- 1 root root 8388609 Mar 3 ...
- linux audit审计(3)--audit服务配置
audit守护进程可以通过/etc/audit/auditd.conf文件进行配置,默认的auditd配置文件可以满足大多数环境的要求. local_events = yes write_logs = ...
- linux audit审计(2)--audit启动
参考:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/sec- ...
- linux audit审计(6)--audit永久生效的规则配置
定义reboot系统后,仍然生效的审计规则,有两种办法: 1.直接写入/etc/audit/audit.rules文件中,在service文件中需要加入ExecStartPost=-/sbin/aud ...
- linux audit审计(7-1)--读懂audit日志
auid=0 auid记录Audit user ID,that is the loginuid.当我使用lbh用户登录系统时,再访问audit_test,此时记录的auid为1001,具体日志如下: ...
- linux audit审计(5)--audit规则配置
audit可以配置规则,这个规则主要是给内核模块下发的,内核audit模块会按照这个规则获取审计信息,发送给auditd来记录日志. 规则类型可分为: 1.控制规则:控制audit系统的规则: 2.文 ...
- mysqlbinlog读懂binlog
binlog 报unknown variable 'default-character-set=utf8' 方法1: 在/etc/my.cnf 中将default-character-set=utf8 ...
随机推荐
- 转://如何创建ASM磁盘
1 前言 无论是安装单机版的asm还是rac都离不开ASM磁盘组的创建,创建ASM磁盘组的关键是创建好需要的asm磁盘,发现很多网友安装grid软件和grid实例,都在磁盘的创建这里有很大的问题,本 ...
- jira8.0.2安装与破解
环境: centos7.4 java1.8 jira版本:8.0.2 mysql :mariadb 软件下载: 破解包: atlassian-extras-3.2.jar 连接mysql驱动: mys ...
- go struct{}的几种特殊用法
参考:https://blog.csdn.net/kturing/article/details/80557280 1.声明为声明为map[string]struct{} 由于struct{}是空,不 ...
- Debian 8.9 搭建wordpress个人博客
想自己搭个博客玩玩,就搭建了此博客,过程可谓艰辛啊! 先在阿里云买了个 轻量应用服务器 1个月10块钱,好贵.... 用 windows sever 下载不了phpstudy,也不知道怎么回事... ...
- Collection 和 Collections 、 Array 与 Arrays 的区别
比较 Collection 和 Collections 的区别, Array 与 Arrays 的区别 Collection 和 Collections的区别 Collection 在 Java.ut ...
- ASP.NET Core - 关于Tag Helper值得了解的五点
如果您开发过ASP.NET Core Web应用程序,您应该已经熟悉了Tag Helper.ASP.NET Core应用程序依赖Tag Helper来呈现表单和表单字段是很常见的.所以,一个视图通常包 ...
- __attribute__ 机制详解(一)
GNU C 的一大特色就是__attribute__ 机制.__attribute__ 可以设置函数属性(Function Attribute).变量属性(Variable Attribute)和类型 ...
- linux进程控制开发实例
fork.c #include <sys/types.h> #include <unistd.h> #include <stdio.h> #include < ...
- 3.sparkSQL整合Hive
spark SQL经常需要访问Hive metastore,Spark SQL可以通过Hive metastore获取Hive表的元数据.从Spark 1.4.0开始,Spark SQL只需简单的配置 ...
- 牛客---java练习
一. 1. abstract可以修饰方法和类,不能修饰属性.抽象方法没有方法体,即没有大括号{}.抽象类中的成员属性都是public static final类型的:成员方法都是public abst ...