安全审计-audit

安全审计包含了两个部分: audit审计服务syslog日志系统

两者的关系如下:

  1. audit服务-专门用来记录安全信息,用于对系统安全事件的追溯;
  2. syslog日志系统-用来记录系统中的各种信息,如安全、调试、运行信息等;

    如果audit服务没有运行,linux内核就会将安全审计信息传递给syslog日志系统。  syslog会记录系统状态、如硬件的警告和应用软件的记录等。但是syslog属于应用层,且仅止于此一应用而已,没办法记录太多的日志。因此,audit诞生以取代syslog的责任,来记录核心层的事件:文件的读写,系统调用,权限的状态等

三个操作audit的工具

audit可用的三个指令:

  1. auditctl控制kernel audit system,能取得状态,增加或者删除rules、设定某个文件的watch.
  2. ausearch用来查询audit logs 的工具。
  3. aureport 产生audit系统简报的工具。

临时操作审计实例(含脚本调用)

  • 新建个临时目录,进行测试:/tmp/testfolder
  • 设置监控, auditctl -w /tmp/testfolder -p war -k monitor-hosts
  • 查看当前权限, ls -lrt /tmp/ | grep testfolder
  • 修改权限, chmod 777 testfolder
  • 查看审计日志, ausearch -ts today -k monitor-hosts

linux系统审计-audit_审计

[root@CTyun-CMDB ~]# ausearch -ts today -k monitor-hosts
----
time->Fri Oct 21 09:28:16 2022
type=CONFIG_CHANGE msg=audit(1666315696.431:77670): auid=0 ses=10974 op=add_rule key="monitor-hosts" list=4 res=1
----
time->Fri Oct 21 09:28:45 2022
type=PROCTITLE msg=audit(1666315725.380:77672): proctitle=6C73002D2D636F6C6F723D6175746F002D6C7274002F746D702F
type=PATH msg=audit(1666315725.380:77672): item=0 name="/tmp/testfolder" inode=203289443 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=CWD msg=audit(1666315725.380:77672): cwd="/tmp"
type=SYSCALL msg=audit(1666315725.380:77672): arch=c000003e syscall=191 success=no exit=-61 a0=7ffedc622260 a1=7f70f5d50ddf a2=0 a3=0 items=1 ppid=113154 pid=113252 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=10974 comm="ls" exe="/usr/bin/ls" key="monitor-hosts"
----
time->Fri Oct 21 09:28:45 2022
type=PROCTITLE msg=audit(1666315725.380:77671): proctitle=6C73002D2D636F6C6F723D6175746F002D6C7274002F746D702F
type=PATH msg=audit(1666315725.380:77671): item=0 name="/tmp/testfolder" inode=203289443 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=CWD msg=audit(1666315725.380:77671): cwd="/tmp"
type=SYSCALL msg=audit(1666315725.380:77671): arch=c000003e syscall=192 success=no exit=-61 a0=7ffedc622260 a1=7f70f6175eaa a2=dd0a10 a3=ff items=1 ppid=113154 pid=113252 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=10974 comm="ls" exe="/usr/bin/ls" key="monitor-hosts"
----
time->Fri Oct 21 09:28:45 2022
type=PROCTITLE msg=audit(1666315725.380:77673): proctitle=6C73002D2D636F6C6F723D6175746F002D6C7274002F746D702F
type=PATH msg=audit(1666315725.380:77673): item=0 name="/tmp/testfolder" inode=203289443 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=CWD msg=audit(1666315725.380:77673): cwd="/tmp"
type=SYSCALL msg=audit(1666315725.380:77673): arch=c000003e syscall=191 success=no exit=-61 a0=7ffedc622260 a1=7f70f5d50db0 a2=0 a3=0 items=1 ppid=113154 pid=113252 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=10974 comm="ls" exe="/usr/bin/ls" key="monitor-hosts"
----
time->Fri Oct 21 09:28:57 2022
type=PROCTITLE msg=audit(1666315737.033:77674): proctitle=63686D6F64003737370074657374666F6C646572
type=PATH msg=audit(1666315737.033:77674): item=0 name="testfolder" inode=203289443 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=CWD msg=audit(1666315737.033:77674): cwd="/tmp"
type=SYSCALL msg=audit(1666315737.033:77674): arch=c000003e syscall=268 success=yes exit=0 a0=ffffffffffffff9c a1=ba90f0 a2=1ff a3=7fff2a10c920 items=1 ppid=113154 pid=113254 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=10974 comm="chmod" exe="/usr/bin/chmod" key="monitor-hosts"

从日志中定位到的chmod 777 testfolder,在/tmp目录下执行的,UID=0。

linux系统审计-audit_审计_02

以上是命令操作,下面针对脚本调用发生变更的日志。

先看简单的脚本执行内容;

#/bin/bash

cd /tmp/testfolder
rm -rf test1
mkdir ./delf
touch ./delf/fileaa
chmod -R 777 ./delf

当前运行结果查看:

linux系统审计-audit_审计_03

审计日志记录:

linux系统审计-audit_audit_04

linux系统审计-audit_审计_05

linux系统审计-audit_audit_06

上面是临时配置,下面就永久配置--针对配置文件的描述

配置文件-audit.rules

audit的配置文件为/etc/audit/audit.rules主要分为三种类别:

  1. -basic audit system parameters,基本的审计系统参数。一些audit的整体全局参数设置
  2. -file and directory watches,文件和目录的监控。目录权限的设置以及是否可以查看某个目录或者文件
  3. -system call audits,系统调用的审计。用来系统调用的规则配置

备注:

  • 目录观察的详细度要比文件观察低。
  • 无法使用任何的pathname globbing,如?或者*
  • 只能配置已经存在的文件,若配置观察目录而又新增了文件,则新文件只会在下次audit重启后才会加入。


利用-k产生key string 以供ausearch直接索引

-w /etc/var/log/audit/ -k LOG_audit

操作命令

重启audit

#service auditd restart

更新auditd

#yum update audit

检查文件和系统的更改状态

#aureport --start today --event --summary -i

查询单一文件

#ausearch -f filename

利用-ts指定日期-k指定key string,其中password-file使用auditctl -k来产生。


#ausearch -ts today -k password-file

#ausearch -ts 3/12/07 -k password-file

-ui来指定user name(UID),例如找出(uid 516)的操作

#ausearch -ts today -k password-file -x rm -ui 516

#ausearch -k passwork-file -ui 516