假设你有一台 Linux 机器并且有三个用户 -
user1
、 、user2
、user3
谁可以登录到该机器。
您创建了一条规则
$ auditctl -w /etc/file.txt -p rwxa
如果您想每天查看谁以及在什么时间访问了
file.txt
您将如何操作以最大程度地减少信息过载,因为您使用了一些访问file.txt
和创建大量记录数据的应用程序。需要仅查看file.txt
其他用户(user1
、user2
、user3
、他们的应用程序、远程用户等)的文件访问
答案1
有用于过滤和报告审计事件的用户空间工具。看https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sec-Creating_Audit_Reports.html举一些例子。
对于您的情况,您可以尝试以下操作:
ausearch --start today --success no --file /etc/file.txt | aureport --file
查看当天对文件的所有失败访问尝试。
查看 ausearch 和 aureport 手册页以获取更多选项。
答案2
假设您已经安装了auditd(这似乎与您使用auditctl 创建规则一样),您可以通过uid 进行grep。
使用以下命令查找 uid:
id user1
id user2
id user3
检查日志记录,选择有问题的用户 ID。
cat /var/log/audit/audit.log | grep uid=1000
假设 1000 是您希望查看其文件访问权限的用户。例如,它会向您显示用户 1000 何时查看了已审核的 file.txt(在本例中使用 cat)。
类型=SYSCALL msg=审核(1484859413.000:83): arch=c000003e syscall=2 成功=是退出=3 a0=7ffd50e9eefb a1=0 a2=20000 a3=7ffd50e9c8d0 项目=1 ppid=28517 pid=28545 auid=1000 uid= 1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=435 comm="cat" exe="/bin/cat" key=(null) type=PATH msg =审核(1484859413.000:83): item=0 name="test.txt" inode=4847 dev=08:01 mode=0100644 ouid=1000 ogid=1000 rdev=00:00 nametype=NORMAL
我希望这就是您正在寻找的!