Linux审计工具auditd使用与日志收集_/etc/audit/auditd.conf-程序员宅基地

技术标签: 运维  linux  其他  审计  auditd  大数据  

0 概述

Auditd工具可以帮助运维人员审计Linux,分析发生在系统中的发生的事情。Linux 内核有用日志记录事件的能力,包括记录系统调用和文件访问。管理员可以检查这些日志,确定是否存在安全漏洞(如多次失败的登录尝试,或者用户对系统文件不成功的访问)。

1 安装

Centos7默认已安装Audit
在这里插入图片描述
使用命令service auditd status可查看该服务是否开启
在这里插入图片描述

2 配置文件

在/etc/audit路径下
在这里插入图片描述
auditd.conf文件 ----审计工具的配置文件
audit.rules文件 ----审计的规则,该文件由/etc/audit/rules.d产生
audit-stop.rules文件 ----审计停止规则,该文件定义了停止检测
rules.d目录 ----定义需要审计的规则,写到文件之后会永久有效

如下是auditd.conf,审计工具配置文件。在该文件中,用中文增加了对应的参数值解释。详细解释,可查阅官方解释:https://linux.die.net/man/8/auditd.conf
在这里插入图片描述

3 auditd工具

 auditctl:auditd默认操作命令
 aureport:生成和查看审计规则的文件
 ausearch:是一个搜索各种事件的工具
 autrce:用于跟踪进程的命令

3.1 auditctl命令

auditctl –l 查看当前定义的规则
auditctl –a 添加一条检测规则(当前添加的规则临时有效,永久生效需要修改配置文件)
auditctl -a action,filter -S system_call -F field=value -k key_name

action和filter 明确一个事件被记录。action可以为always或者never,filter明确出对应的匹配过滤,filter可以为:task、exit、user、exclude。
system_call 明确出系统调用的名字,几个系统调用可以写在一个规则里,如-S xxx -S xxx。系统调用的名字可以在/usr/include/asm/unistd_64.h文件中找到。其中字段中具体解释,参考: https://blog.csdn.net/xiyangfan/article/details/5259258
field=value 作为附加选项,修改规则以匹配特定架构、GroupID,ProcessID等的事件。具体有哪些字段,可以参考https://linux.die.net/man/8/auditctl
如:一个文件被user ID为1000或者更大的用户删除,或重命名,记录审计,命令如下:

auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete
auditctl -a always,exit -F path=/etc/shadow -F perm=wa

等价于 auditctl –w /etc/shadow –p wa

auditctl –d 删除一条规则
auditctl –D 删除所有规则
auditctl –w 指定要审计的文件或目录路径
auditctl –p[r|w|x|a] 和-w一起使用指定触发审计的文件/目录的访问权限

rwxa : 指定的触发条件,r 读取权限,w 写入权限,x 执行权限,a 属性(改变在文件或者目录中的属性)

auditctl –k 指定别名,方便下次审计时可以根据该名字进行调用,并查看相关的信息
auditctl –s 查看auditd服务状态
auditctl -e  设置使能标志

设置为0,关闭audit,设置为1,开启audit;当设置为2时,表示锁定,一般在设置完其他规则后最后设置,防止其他人修改规则;任何修改规则的行为都会被拒绝,并且记录审计日志,只有当重启系统后,这个使能标志才可以被修改。

3.2 aureport命令

aureport 生成总结性记录

-au	关于身份验证的报表
-c	关于配置更改的报表
-cr	关于加密事件的报表
-e	关于事件的报表
-f	关于文件的报表
-i	解释模式
-if<输入文件名>	使用文件作为输入
-h	关于主机的报表
-l	有关登录的报表
-k	关于key的报表
-m	关于账户修改的报表
-ma	关于强制访问控制(MAC)事件的报表
-p	关于进程的报表
-s	关于系统调用的报表
-tm	关于终端的报表
--node<节点名>	特定节点的事件
--success	在报表中只显示成功的事件
--failed	在报表中只显示失败的事件
-n	关于异常事件的报表
--summary	在报表中为主要对象排序总数
-r	关于异常事件响应的报表
-t	日志时间范围报表
-te<结束日期><结束时间>	报表结束时间
-ts<开始日期><开始时间>	报表起始时间
--tty	关于tty的报表
-u	关于用户的报表
-x	关于可执行文件的报表

3.3 ausearch命令

ausearch -a 5207   搜寻当前audit服务中event ID等于5207的log

ausearch –k xx 按指定别名查看审计内容

ausearch –i  格式化输出

ausearch –f  根据指定的审计目录或文件查看审计内容

ausearch -m    #按消息类型查找

ausearch -ul   #按登陆ID查找

ausearch -ua   #按uid和euid查找

ausearch -ui   #按uid查找

ausearch -ue   #按euid查找

ausearch -ga   #按gid和egid查找

ausearch -gi   #按gid查找

ausearch -ge   #按egid查找

ausearch -c    #按cmd查找

ausearch -x    #按exe查找

ausearch -sc   #按syscall查找

ausearch -p    #按pid查找

ausearch -sv   #按syscall的返回值查找(yes/no)

ausearch -f    #按文件名查找

ausearch -tm   #按连接终端查找(term/ssh/tty)

ausearch -hn   #按主机名查找

ausearch -k    #按特定的key值查找

ausearch -w    #按在audit rule设定的字符串查找

3.4 autrce

为了跟踪设置的rule有没有生效,我们经常会追踪指定的进程,autrace生成的log会存放在/var/log/audit/audit.log。 当用autrace去跟踪一个进程时,为了保证避免autrace与之前audit rule生成的日志冲突,使用auditctl -D去停止所有的audit log, 当autrace结束后,使用systemctl restart auditd重启audit服务。

autrace /usr/bin/less

在这里插入图片描述

4 审计日志

4.1 例子

添加如下两条审计的规则:

auditctl -w /root/chen/test.sh -p wxra -F uid=root -k auditest1
auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -S mkdir -S rmdir -S creat -F uid!=root -F dir=/root/chen/test -k auditest2

添加完成之后用auditctl –l查看相关信息:

在这里插入图片描述
使用ausearch -k auditest1 -i 和ausearch -k auditest2 -i查看当前的审计日志
在这里插入图片描述
审计日志内容显示,当前审计规则已经录入
分别使用root和非root用户运行test.sh脚本,sh test.sh,此时再查看审计日志
在这里插入图片描述
此时可以使用命令ausearch –k auditest1 -i查看审计内容,只有root用户执行的命令被审计日志记录下来
在这里插入图片描述
同样在/root/chen/test目录下分别使用root和非root用户创建文件root和chen目录
在这里插入图片描述
使用命令ausearch -k auditest2 –i –c mkdir,只有非root用户创建文件夹的操作会被记录
在这里插入图片描述

4.2 审计日志内容分析

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

audit

在audit(time_stamp:ID)格式中,记录时间戳,从1970年1月1日00:00:00到现在的时间,ID为记录中唯一的ID标识,同一个事件产生的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命令来显示所有的系统调用。

success=yes

表示系统调用成功与否

exit=3

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

#ausearch --interpret --exit 3
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是对应的

auid=0

auid记录Audit user ID,that is the loginuid。auid为登录用户的ID,如果是root,ID为0。
uid=1001,gid=1001, euid=1001, suid=1001, fsuid=1001, egid=1001, sgid=1001, fsgid=1001
uid为启动这个分析进程的用户的ID,即具体执行进程的用户ID。后面分别对应着,group ID组用户ID,effective user ID有效用户ID, set user ID设置用户ID, file system user ID文件系统用户ID, effective group ID有效组用户ID, set group ID设置组用户ID, file system group ID文件系统组ID

tty=pts0

具体在哪个终端tty执行的操作。如执行ls这个操作是在哪个终端进行的。

ses=10868  

session ID,对话ID。

comm=ls

什么命令导致的审计记录。

exe=“/usr/bin/ls”

记录可执行文件的具体路径

type=CWD

type值为CWD,即current working directory。记录的是当前进程的位置

inode=99213313 

inode表示这个文件或目录的inode number,可以用如下命令来查询当前inode对应的文件

find / -inum 99213313 -print
dev=08:11

dev字段,指明device的minor和major ID。

mode=040755

mode字段表示文件或路径的权限。

ouid=0

对象所有者的ID

ogid=0

对象所有组者ID.

4.3 审计日志报告

使用aureport命令可以生成日志报告
在这里插入图片描述

aureport –au 生成关于身份验证的报告

在这里插入图片描述

aureport –k –i 按之前设置的关键字生成报表 

在这里插入图片描述

aureport –s 按系统调用生成报表

在这里插入图片描述

aureport –ts 02/02/2021 00:00:00 –te today 按指定时间生成报表

在这里插入图片描述

aureport -p –i 按进程的pid生成报表

在这里插入图片描述

aureport –t 按时间查看日志

在这里插入图片描述

aureport –if <文件名> 按文件名生成报表

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Keyuchen_01/article/details/113629205

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法