【安全】linux audit审计使用入门

文章目录
  • *       * 1 audit简介
    
    • 2 auditctl的使用

    • 2 audit配置和规则

    • 3 工作原理

    • 4 audit接口调用

    •         * 4.1 获取和修改配置
      
      • 4.2 获取和修改规则
      • 4.3 获取审计日志
    • 5 audit存在的问题

    •         * 5.1 内核版本
      
      • 5.2 审计日志过多造成的缓存队列和磁盘问题
      • 5.2 容器环境下同一个命令的日志存在差异
    • 6 参考文档

1 audit简介

audit是Linux内核提供的一种审计机制,由于audit是内核提供的,因此,在使用audit的过程中就包含内核空间和用户空间部分:

  • rules:审计规则,其中配置了审计系统需要审计的操作
  • auditctl:用户态程序,用于审计规则配置和配置变更
  • kaudit:内核空间程序,根据配置好的审计规则记录发生的事件
  • auditd:用户态程序,通过netlink获取审计日志

通常的使用流程:

  • 用户通过auditctl配置审计规则
  • 内核的kauditd程序获取到审计规则后,记录对应的审计日志
  • 用户态的auditd获取审计日志并写入日志文件。

audit的主要应用场景是安全审计,通过对日志进行分析发现异常行为。

2 auditctl的使用

auditctl是用户态的控制程序,可以修改audit配置以及审计规则的操作。

auditctl的选项可以分成两类。

配置类:

  • -b:配置buffer的大小
  • -e:设置enabled标记
  • -f:设置failure标记
  • -s:返回整体的状态
  • –backlog_wait_time:设置backlog_wait_time

审计规则类:

  • -a & -A l,a:往某个规则表中增加需要记录的行为
  • -d:从某个规则表中删除规则
  • -D:删除所有规则
  • -F f=v:设置更多监控条件
  • -l:查看规则
  • -p:在文件监控上设置权限过滤
  • -i:当从文件中读取规则时忽略错误
  • -c:出错时继续
  • -r:设置rate_limit,每秒多少条消息
  • -R:从文件中读取规则
  • -S:设置要监控的系统调用名或者系统调用号
  • -w:增加监控点
  • -W:删除监控点

例如,假如我们想要获取调用execve系统调用的事件,可以增加下列的规则:

auditctl -a always,exit -S execve -F key=123456

然后就可以通过ausearch查找该日志:

ausearch -k 123456

如果想要获取执行tail命令的事件,可以增加规则:

auditctl -w /usr/bin/tail -p x -k 123456

然后使用tail命令查看通过ausearch命令查看日志:

time->Sun Apr 23 15:47:36 2023
type=PROCTITLE msg=audit(1682236056.128:4318964): proctitle=7461696C002D6E0032006C756F2E7368
type=PATH msg=audit(1682236056.128:4318964): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=36969 dev=08:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:ld_so_t:s0 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PATH msg=audit(1682236056.128:4318964): item=0 name="/usr/bin/tail" inode=100666597 dev=08:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:bin_t:s0 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=CWD msg=audit(1682236056.128:4318964):  cwd="/root"
type=EXECVE msg=audit(1682236056.128:4318964): argc=4 a0="tail" a1="-n" a2="2" a3="luo.sh"
type=SYSCALL msg=audit(1682236056.128:4318964): arch=c000003e syscall=59 success=yes exit=0 a0=20749e0 a1=218ecd0 a2=2179ee0 a3=7fffa4a99460 items=2 ppid=58219 pid=59519 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=956 comm="tail" exe="/usr/bin/tail" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="123456"

可以看到,开头一行是事件发生的事件,后面的若干行是执行tail命令产生的事件日志,有些日志很简单,例如CWD,表示操作的当前路径,而有些日志很复杂,例如SYSCALL,有接近30个字段。每行日志都有type字段和msg字段(冒号前面是时间戳,可以通过date命令转换,冒号后面是事件ID,同一条规则产生的事件的事件ID是一样的,因此,如果不使用ausearch查找某条规则产生的日志,就需要先用key进行查找,找到对应的事件ID,然后再通过事件ID查找产生的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值