安全审计-audit
安全审计包含了两个部分: audit审计服务 、syslog日志系统;
两者的关系如下:
- audit服务-专门用来记录安全信息,用于对系统安全事件的追溯;
- syslog日志系统-用来记录系统中的各种信息,如安全、调试、运行信息等;
如果audit服务没有运行,linux内核就会将安全审计信息传递给syslog日志系统。 syslog会记录系统状态、如硬件的警告和应用软件的记录等。但是syslog属于应用层,且仅止于此一应用而已,没办法记录太多的日志。因此,audit诞生以取代syslog的责任,来记录核心层的事件:文件的读写,系统调用,权限的状态等
三个操作audit的工具
audit可用的三个指令:
- auditctl控制kernel audit system,能取得状态,增加或者删除rules、设定某个文件的watch.
- ausearch用来查询audit logs 的工具。
- 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
[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。
以上是命令操作,下面针对脚本调用发生变更的日志。
先看简单的脚本执行内容;
#/bin/bash
cd /tmp/testfolder
rm -rf test1
mkdir ./delf
touch ./delf/fileaa
chmod -R 777 ./delf
当前运行结果查看:
审计日志记录:
上面是临时配置,下面就永久配置--针对配置文件的描述
配置文件-audit.rules
audit的配置文件为/etc/audit/audit.rules主要分为三种类别:
- -basic audit system parameters,基本的审计系统参数。一些audit的整体全局参数设置
- -file and directory watches,文件和目录的监控。目录权限的设置以及是否可以查看某个目录或者文件
- -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