zhangguanzhang's Blog

Linux audit 审计

字数统计: 502阅读时长: 2 min
2020/07/05

什么是audit?

linux audit子系统是一个用于收集记录系统、内核、用户进程发生的行为事件的一种安全审计系统。该系统可以可靠地收集有关上任何与安全相关(或与安全无关)事件的信息,它可以帮助跟踪在系统上执行过的一些操作。

使用

安装

好像高版本 os 都自带了,没有就 yum install -y audit

1
systemctl status auditd.service

例如追踪一个内核参数被谁修改

要注意的是 auditctl 只能临时生效,要想永久生效使用文件 audit.rules

基本信息查看

1
2
3
4
5
6
7
8
9
10
11
12
13
# 查看状态
$ auditctl -s
enabled 1
failure 1
pid 705
rate_limit 0
backlog_limit 8192
lost 0
backlog 0
loginuid_immutable 0 unlocked
# 查看 rule
$ auditctl -l
No rules

增加一个 rule

-w 选项增加一个 path 审计,-p 审计权限

1
2
3
$ auditctl -w /proc/sys/net/ipv4/ip_forward -pw -k sysctl-exec
$ auditctl -l
-w /proc/sys/net/ipv4/ip_forward -p w -k sysctl-exec

监听日志:

1
tailf /var/log/audit/audit.log  | grep sysctl-exec

另一个窗口写入触发审计日志记录

1
echo 1 > /proc/sys/net/ipv4/ip_forward

可以看到日志审计到了。

1
type=SYSCALL msg=audit(1624344618.910:10909123): arch=c000003e syscall=2 success=yes exit=3 a0=166ec40 a1=241 a2=1b6 a3=fffffff0 items=2 ppid=6419 pid=6421 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts3 ses=61322 comm="bash" exe="/usr/bin/bash" key="sysctl-exec"

使用 pstree 来查看进程树,也就是我另一个终端的 shell

1
2
$ pstree -sp 6419
systemd(1)───sshd(4866)───sshd(6419)───bash(6421)

清空 rule

1
auditctl -D

持久化 rule

建议写到子配置文件里,某些系统主配置文件的内容是等于 子配置文件内容加起来后 > /etc/audit/audit.rules

1
echo '-w /proc/sys/net/ipv4/ip_forward -p w -k sysctl-exec' > /etc/audit/rules.d/zgz.rules

参考的一些rule

  • kill: auditctl -a exit,always -F arch=b64 -S kill -k audit_kill
  • module: auditctl -a always,exit -F arch=x86_64 -S delete_module -F key=module-unload

参考

CATALOG
  1. 1. 什么是audit?
  2. 2. 使用
    1. 2.1. 安装
    2. 2.2. 例如追踪一个内核参数被谁修改
      1. 2.2.1. 基本信息查看
      2. 2.2.2. 增加一个 rule
      3. 2.2.3. 清空 rule
      4. 2.2.4. 持久化 rule
    3. 2.3. 参考的一些rule
  3. 3. 参考