ふと、CentOSなどでよく使用したり操作したりするファイルを調べたいなぁと思ったのだが、残念ながらそういった情報はデフォルトでは保持しておらず、ログにも記録してくれない。 だからといって、inotify-waitなどでログを取るのもちょっとなぁ…と考えていたところ、auditdでファイルやフォルダを指定してやることで、対象のファイルへのアクセスや操作を監査する事ができるようだ。

とりあえず、以下のコマンドを実行することで、指定したフォルダ配下での操作をログに出力できる。

auditctl -w /etc/ -p war -k etcdir

上記コマンドを実行したら、以後は「/var/log/audit/audit.log」に操作内容が記録されるようになる。

[root@BS-PUB-CENT7-01 ~]# tail -F /var/log/audit/audit.log | grep hosts
type=PATH msg=audit(1491134908.972:3419): item=0 name="hosts" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134931.027:3423): item=0 name="/etc/hosts" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134939.587:3425): item=0 name="/etc/hosts" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134940.906:3427): item=0 name="/etc/hosts" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134943.689:3453): item=0 name="hosts" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134943.689:3454): item=0 name="hosts" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134943.689:3455): item=1 name=".hosts.swp" inode=67109033 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:etc_t:s0 objtype=CREATE
type=PATH msg=audit(1491134943.690:3456): item=1 name=".hosts.swpx" inode=67115015 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:etc_t:s0 objtype=CREATE
type=PATH msg=audit(1491134943.690:3457): item=1 name=".hosts.swpx" inode=67115015 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:etc_t:s0 objtype=DELETE
type=PATH msg=audit(1491134943.690:3458): item=1 name=".hosts.swp" inode=67109033 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:etc_t:s0 objtype=DELETE
type=PATH msg=audit(1491134943.690:3459): item=1 name=".hosts.swp" inode=67109033 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:etc_t:s0 objtype=CREATE
type=PATH msg=audit(1491134943.690:3460): item=0 name=".hosts.swp" inode=67109033 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:etc_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134943.690:3461): item=0 name=".hosts.swp" inode=67109033 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:etc_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134943.690:3462): item=0 name=".hosts.swp" inode=67109033 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:etc_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134943.690:3463): item=0 name="hosts" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134947.457:3466): item=0 name="hosts" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=NORMAL
type=CONFIG_CHANGE msg=audit(1491134947.457:3471): auid=0 ses=144 op="updated_rules" path="/etc/hosts" key=(null) list=4 res=1
type=PATH msg=audit(1491134947.457:3472): item=2 name="hosts" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=DELETE
type=PATH msg=audit(1491134947.457:3472): item=3 name="hosts~" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=CREATE
type=CONFIG_CHANGE msg=audit(1491134947.457:3473): auid=0 ses=144 op="updated_rules" path="/etc/hosts" key=(null) list=4 res=1
type=PATH msg=audit(1491134947.457:3474): item=1 name="hosts" inode=67115015 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:net_conf_t:s0 objtype=CREATE
type=PATH msg=audit(1491134947.472:3475): item=0 name="hosts~" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134947.472:3476): item=0 name="hosts" inode=67115015 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134947.472:3477): item=0 name="hosts" inode=67115015 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134947.472:3478): item=0 name="hosts" inode=67115015 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134947.472:3479): item=0 name="hosts" inode=67115015 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=NORMAL
type=PATH msg=audit(1491134947.472:3480): item=1 name="hosts~" inode=67115022 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 objtype=DELETE
type=PATH msg=audit(1491134947.473:3481): item=1 name="/etc/.hosts.swp" inode=67109033 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:etc_t:s0 objtype=DELETE

実際に運用するなら、ログに記録する操作内容についてちゃんと精査したほうが良いと思うが、少なくともCentOS系であればこういった情報を記録することが可能だ。 auditd、あまり理解できてなかったけど色々と使い勝手良さそう。 ちゃんと使い方を勉強しておいたほうがいいかな。