配置审计规则
- 要配置审计规则,请在 /etc/audit/rules.d/audit.rules 文件中添加以下行:
# vi /etc/audit/rules.d/audit.rules -a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat -S rmdir -k delete -a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -S rmdir -k delete
上述规则监控系统上所有文件的取消链接、重命名、删除等更改。
可选地,我们可以指定要查看的目录的完整路径,例如,如果我们只想监控特定文件中文件的删除我们可以通过将以下字段添加到审核规则来指定挂载点:
-F dir=[directory or mount point]
所以上面定义的规则现在将成为一个单一的规则,如下所示:
# vi /etc/audit/rules.d/audit.rules -a always,exit -F dir=/var/tmp -S unlink -S unlinkat -S rename -S renameat -S rmdir -k delete_var
请注意,我还修改了规则中的密钥。
- 规则需要重启auditd服务才能生效。
# service auditd restart
- 使用命令“auditctl -l”查看当前活动的auditd 规则。
# auditctl -l -a always,exit -S rename,rmdir,unlink,unlinkat,renameat -F dir=/var/tmp -F key=delete_var
因此,我们会遇到某个文件经常被删除的情况,我们需要调查谁删除了该文件。
它可以是可以删除文件的使用或者系统进程。
auditd 服务可以成为调查此类文件删除问题的完美工具。
该帖子概述了安装和配置 auditd 以监视文件 /var/tmp/test_file 的文件删除的步骤。
Red Hat Enterprise Linux 提供审计规则功能来记录用户或者进程完成的文件活动。
这可以通过配置审计规则来实现。
安装auditd
- 大多数情况下,我们会发现基于 redhat 的发行版上已经安装了 auditd。
如果没有,请使用 yum 安装它:
# yum install audit
2.接下来,确保服务在启动时启动并启动服务。
# systemctl enable auditd # systemctl start auditd
在 CentOS/RHEL 7 中,建议我们在重新启动 auditd 服务时使用“service”命令而不是 systemctl。
如果我们使用 systemctl 命令,我们可能会遇到以下错误:
# systemctl restart auditd Failed to restart auditd.service: Operation refused, unit auditd.service may be requested by dependency only (it is configured to refuse bananaal start/stop). See system logs and 'systemctl status auditd.service' for details.
3.查看服务状态:
# systemctl status auditd ● auditd.service - Security Auditing Service Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2018-06-16 03:29:19 UTC; 8s ago Docs: man:auditd(8) https://github.com/linux-audit/audit-documentation Process: 1951 ExecStartPost=/sbin/augenrules --load (code=exited, status=0/SUCCESS) Process: 1946 ExecStart=/sbin/auditd (code=exited, status=0/SUCCESS) Main PID: 1947 (auditd) Tasks: 2 CGroup: /system.slice/auditd.service └─1947 /sbin/auditd
检查审计日志以进行文件删除
我们现在可以尝试删除文件“/var/tmp/test_file”,以查看我们刚刚创建的auditd 规则是否在日志文件中记录了此事件。
这将在文件 /var/log/audit/audit.log 中记录文件删除操作,但是我们可以使用命令 ausearch 和审计规则 (-k) 中指定的键来查看事件:
# ausearch -k delete_var ... --- time->Sat Jun 16 04:02:25 2018 type=PROCTITLE msg=audit(1529121745.550:323): proctitle=726D002D69002F7661722F746D702F746573745F66696C65 type=PATH msg=audit(1529121745.550:323): item=1 name="/var/tmp/test_file" inode=16934921 dev=ca:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:user_tmp_t:s0 objtype=DELETE cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=PATH msg=audit(1529121745.550:323): item=0 name="/var/tmp/" inode=16819564 dev=ca:01 mode=041777 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:tmp_t:s0 objtype=PARENT cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0 type=CWD msg=audit(1529121745.550:323): cwd="/root" type=SYSCALL msg=audit(1529121745.550:323): arch=c000003e syscall=263 success=yes exit=0 a0=ffffffffffffff9c a1=9930c0 a2=0 a3=7ffe9f8f2b20 items=2 ppid=2358 pid=2606 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts1 ses=2 comm="rm" exe="/usr/bin/rm" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="delete_var"
正如我们在上面的日志中看到的那样,用户 root(uid=0) 删除了 (exe="/usr/bin/rm") 文件 /var/tmp/test_file。