如何在 Linux 上审计文件访问

在 Linux 上有一个名为 audit 的审计 RPM,它提供审计服务来监视进程和命令。
使用审计 RPM,我们可以审计一些简单的文件操作,如读、写和执行。
这篇文章将介绍一种在Linux系统上监控文件访问的方法。
比如“文件何时被读取/修改?”,“谁编辑了特定文件?”。

  1. 如果没有运行,请先启动auditd服务。
# service auditd start       ### CentOS/RHEL 6
# systemctl start auditd     ### CentOS/RHEL 7
  1. 使用auditctl命令指定要监控的文件:
# auditctl -w /etc/hosts -p war -k hostswrap

-w :指定要审核/监视的文件。

-p :我们要审核/监视的操作/权限,r 表示读取,w 表示写入,x 表示执行,a 表示追加。

-k :为这条审计规则指定一个关键字,在搜索审计日志时,可以通过这个关键字进行搜索

  1. 请注意,通过在命令行上执行 auditctl 对正在运行的审计系统所做的更改在系统重新启动后不会持久。
    要使更改持久化,请将它们添加到 /etc/audit/audit.rules 文件中,如果它们当前未加载到审计中,请重新启动 auditd 服务以加载修改后的规则集。
# vi /etc/audit.rules
-w /etc/hosts -p war -k hostswrap
# service auditd restart       ### CentOS/RHEL 6
# systemctl restart auditd     ### CentOS/RHEL 7
  1. 要列出auditd 服务中的当前审核规则,请使用“l”选项。
# auditctl -l
No rules
AUDIT_WATCH_LIST: dev=8:5, path=/etc/hosts, filterkey=hostswrap, perms=rwa, valid=0
  1. 检查审计日志是否有对文件 /etc/hosts 的任何访问。
# ausearch -f /etc/hosts -i | less
type=FS_WATCH msg=audit(05/28/18 11:21:27.216:10) : watch_inode=4313009 watch=hosts filterkey=hostswrap perm=read,write,append perm_mask=read
type=SYSCALL msg=audit(05/28/18 11:21:46.251:19) : arch=i386 syscall=open success=yes exit=5 a0=c679b5 a1=0 a2=1b6 a3=0 items=1 pid=16056 aui
d=unset uid=oracle gid=dba euid=oracle suid=oracle fsuid=oracle egid=dba sgid=dba fsgid=dba comm=ons exe=/home/oracle/oracle/product/10.2.0/c
rs_1/opmn/bin/ons
---
type=PATH msg=audit(05/28/18 11:21:38.697:11) : name=/etc/hosts flags=follow,access inode=4313009 dev=08:05 mode=file,644 ouid=root ogid=root
 rdev=00:00
type=CWD msg=audit(05/28/18 11:21:38.697:11) :  cwd=/newspace/TAR/May
type=FS_INODE msg=audit(05/28/18 11:21:38.697:11) : inode=4313009 inode_uid=root inode_gid=root inode_dev=08:05 inode_rdev=00:00
type=FS_WATCH msg=audit(05/28/18 11:21:38.697:11) : watch_inode=4313009 watch=hosts filterkey=hostswrap perm=read,write,append perm_mask=writ
e
.....

日志显示操作时间、读取/写入文件的处理/命令、uid 等。

日期:2020-09-17 00:13:08 来源:oir作者:oir