码迷,mamicode.com
首页 > 其他好文 > 详细

使用auditctl追踪文件变化

时间:2015-06-16 01:34:21      阅读:641      评论:0      收藏:0      [点我收藏+]

标签:auditd; auditctl; file monitor

扔出去的烫手山芋,最后还是会回到自己手上。所以,遇见问题最好的办法不是回避,而是直面。


问题描述:通过ftp远程mget下来的文件,用户在使用时发现找不到。ftp日志中有传输记录,ftp脚本中同时用ls命令显示本地文件夹的内容,并且会cp一份到备份目录。根据所有记录,发现文件确定load下来,但是当用户需要使用时,却丢失了。


于是,问题来了,有没有办法知道文件是什么时候生成,有谁访问过,怎么丢失或者谁删除了的?


google "monitor file change on linux" 大多数给的建议是使用inotifywatch这个命令,试了试,发现达不到自己想要的效果。


例子:(可以是文件夹或者文件,使用Ctrl+C中断监控,然后会返回结果到标准输出)

root@bv03301:/root: inotifywatch -v /home/qli00001/

Establishing watches...

Total of 1 watches.

Finished establishing watches, now collecting statistics.

total  modify  attrib  close_write  close_nowrite  open  create  delete   filename

32     13        1        1                     7                        8       1           1       /home/qli00001/

从上面可以看到,inotifywatch只能显示文件的总体变化数量,但是不能反映具体的变化过程,包括改变时间,操作的用户等。


偶然搜到一篇文章提到audit。发现在系统上,有个daemon auditd一直运行,而日志里记录的大都是关于用户的审计信息,如login,auth,chage之类的。文章也提到可以使用auditctl管理用户定义的审计规则。关于该命令的使用,参考man page吧,内容不多,但是也不很好理解,抱歉,英文水平有限,特别是读专业文档的时候。介绍一下我的使用:比如我在测试机上要监控/opt/audittest 这个文件夹的变化。


#auditctl -w /opt/audittest/ -p wx -r 10 -k lickky

(-w 指定文件或目录,-p指定操作:write execute, -r指定日记记录的频率每秒10次(log太多会影响极其性能,所以最好限制记录次数,当然这也会造成记录不完整,自己平衡),-k就是一个tag,方便查阅)

# auditctl -l (查看刚创建的规则)

LIST_RULES: exit,always dir=/opt/audittest (0xe) perm=wx key=lickky

然后我们来看/var/audit/audit.log:

rule添加成功

 221 type=CONFIG_CHANGE msg=audit(1434353234.854:498545): audit_rate_limit=10 old=0 auid=608 ses=20688 res=1

 222 type=CONFIG_CHANGE msg=audit(1434353234.855:498546): auid=608 ses=20688 op="add rule" key="lickky" list=4 res=1

删除一个文件no

type=SYSCALL msg=audit(1434353304.200:498613): arch=c000003e syscall=263 success=yes exit=0 a0=ffffffffffffff9c a1=f380c0 a2=0 a3=100 items=2 ppid=27225 pid=27304 auid=608 uid=55000866 gid=506 euid=55000866 suid=55000866 fsuid=55000866 egid=506 sgid=506 fsgid=506 tty=pts3 ses=20857 comm="rm" exe="/bin/rm" key="lickky"

type=CWD msg=audit(1434353304.200:498613):  cwd="/opt/audittest"

type=PATH msg=audit(1434353304.200:498613): item=0 name="/opt/audittest" inode=131236 dev=fd:03 mode=040777 ouid=0 ogid=0 rdev=00:00 nametype=PARENT

type=PATH msg=audit(1434353304.200:498613): item=1 name="no" inode=131242 dev=fd:03 mode=0100640 ouid=55000866 ogid=506 rdev=00:00 nametype=DELETE

创建一个新文件,这里会同时记录生产的临时文件,内容比较类似,就不全部贴出来

type=SYSCALL msg=audit(1434353309.125:498614): arch=c000003e syscall=2 success=yes exit=4 a0=ef1560 a1=c2 a2=180 a3=1 items=2 ppid=27225 pid=27305 auid=608 uid=55000866 gid=506 euid=55000866 suid=55000866 fsuid=55000866 egid=506 sgid=506 fsgid=506 tty=pts3 ses=20857 comm="vim" exe="/usr/bin/vim" key="lickky"

type=CWD msg=audit(1434353309.125:498614):  cwd="/opt/audittest"

type=PATH msg=audit(1434353309.125:498614): item=0 name="/opt/audittest" inode=131236 dev=fd:03 mode=040777 ouid=0 ogid=0 rdev=00:00 nametype=PARENT

type=PATH msg=audit(1434353309.125:498614): item=1 name=".hele.swp" inode=131242 dev=fd:03 mode=0100600 ouid=55000866 ogid=506 rdev=00:00 nametype=CREATE

不需要监控之后,删除规则

#auditctl -D


本文出自 “做监控的那些日子” 博客,谢绝转载!

使用auditctl追踪文件变化

标签:auditd; auditctl; file monitor

原文地址:http://lickkyli.blog.51cto.com/5944973/1662094

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!