web-dev-qa-db-ja.com

特定のユーザーの特定のパス内のファイルまたはフォルダーへのアクセスを監査する方法

私はauditdの構成に関するいくつかの情報を読んでいて、これを理解することができません。

  • ユーザーによる特定のシステムコールのログ
  • すべてのユーザーによる特定のファイルへのログアクセス

しかし、私が理解できないのは、監査デーモンを設定して、フォルダー構造内のすべてのファイル(たとえば、/homeおよびその中のすべてのサブフォルダーとファイル)へのアクセス(読み取り/書き込み)のみをログに記録する方法です。指定されたユーザーID。

そのため、ユーザーID 2053のユーザー「bob」がいる場合、ファイルシステムで開いたり読み取ったりしようとしたすべてのファイルがわかります。システムサービスや他のユーザーがこれらのファイルにアクセスすることに興味はありません。

追加の質問:ファイルシステム階層全体に対してこの種の監査を設定することはどういうわけか可能ですか? AFAIK監査は、いくつかの理由でそれを許可していません

7
Petr

私はこのようなものから始めます:

# auditctl -a exit,always -F Arch=x86_64 -S open -F auid=1000 -k track-guido

これにより、すべてのファイルシステムで、uid = 1000のユーザーのすべてのファイルオープン操作が追跡されます。グラフィカルセッションを持つユーザーで実行すると、次のようなログ(たとえば、不要なものだと思います)の[〜#〜] heaps [〜#〜]が生成されることに注意してください。

# ausearch -i -k track-guido
---- (chrome opening /etc/hosts )
type=PROCTITLE msg=audit(03/05/2015 19:49:14.990:257528) : proctitle=/opt/google/chrome/chrome  
type=PATH msg=audit(03/05/2015 19:49:14.990:257528) : item=0 name=/etc/hosts inode=917951 dev=08:02 mode=file,644 ouid=root ogid=root rdev=00:00 obj=system_u:object_r:net_conf_t:s0 nametype=NORMAL 
type=CWD msg=audit(03/05/2015 19:49:14.990:257528) :  cwd=/home/guido 
type=SYSCALL msg=audit(03/05/2015 19:49:14.990:257528) : Arch=x86_64 syscall=open success=yes exit=164 a0=0x7f843c7682fe a1=O_RDONLY|O_CLOEXEC a2=0x1b6 a3=0x7f84411c070c items=1 ppid=1665 pid=3224 auid=guido uid=guido gid=guido euid=guido suid=guido fsuid=guido egid=guido sgid=guido fsgid=guido tty=(none) ses=1 comm=WorkerPool/3224 exe=/opt/google/chrome/chrome subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=track-guido 
---- (gnome-Shell opening /proc/self/stat)
type=PROCTITLE msg=audit(03/05/2015 19:49:15.041:257529) : proctitle=/usr/bin/gnome-Shell 
type=PATH msg=audit(03/05/2015 19:49:15.041:257529) : item=0 name=/proc/self/stat inode=21375 dev=00:03 mode=file,444 ouid=guido ogid=guido rdev=00:00 obj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 nametype=NORMAL 
type=CWD msg=audit(03/05/2015 19:49:15.041:257529) :  cwd=/home/guido 
type=SYSCALL msg=audit(03/05/2015 19:49:15.041:257529) : Arch=x86_64 syscall=open success=yes exit=42 a0=0x7f7b7b7a5f4a a1=O_RDONLY a2=0x7fff4ce2aaa0 a3=0x1 items=1 ppid=1371 pid=1665 auid=guido uid=guido gid=guido euid=guido suid=guido fsuid=guido egid=guido sgid=guido fsgid=guido tty=(none) ses=1 comm=gnome-Shell exe=/usr/bin/gnome-Shell subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=track-guido 

ルールを調整し、ディレクトリツリーをこのように制御するには、次のようになります。

# auditctl -w /home/guido/Development/git/ -F auid=1000 -p rwxa -k track-guido-development

どこ:

-F auid=     filter on actual uid
-p rwxa      track Read, Write, eXecute, Attributes

(必要な数の-Fを組み合わせることができます)。

次のような出力を与える:

# ausearch -i -k track-guido-development
----
type=PROCTITLE msg=audit(03/05/2015 22:04:40.893:365951) : proctitle=vim /home/guido/Development/git/eduFXserver.git/pom.xml 
type=PATH msg=audit(03/05/2015 22:04:40.893:365951) : item=0 name=/home/guido/Development/git/eduFXserver.git/.pom.xml.swp inode=11146444 dev=08:05 mode=file,600 ouid=guido ogid=guido rdev=00:00 obj=unconfined_u:object_r:user_home_t:s0 nametype=NORMAL 
type=CWD msg=audit(03/05/2015 22:04:40.893:365951) :  cwd=/home/guido 
type=SYSCALL msg=audit(03/05/2015 22:04:40.893:365951) : Arch=x86_64 syscall=getxattr success=yes exit=37 a0=0x241e6d0 a1=0x7fc8479afcee a2=0x241e720 a3=0xff items=1 ppid=784 pid=9231 auid=guido uid=guido gid=guido euid=guido suid=guido fsuid=guido egid=guido sgid=guido fsgid=guido tty=pts3 ses=1 comm=vim exe=/usr/bin/vim subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=track-guido-development 
----
type=PROCTITLE msg=audit(03/05/2015 22:04:40.893:365953) : proctitle=vim /home/guido/Development/git/eduFXserver.git/pom.xml 
type=PATH msg=audit(03/05/2015 22:04:40.893:365953) : item=0 name=/home/guido/Development/git/eduFXserver.git/.pom.xml.swp inode=11146444 dev=08:05 mode=file,600 ouid=guido ogid=guido rdev=00:00 obj=unconfined_u:object_r:user_home_t:s0 nametype=NORMAL 
type=CWD msg=audit(03/05/2015 22:04:40.893:365953) :  cwd=/home/guido 
type=SYSCALL msg=audit(03/05/2015 22:04:40.893:365953) : Arch=x86_64 syscall=getxattr success=yes exit=37 a0=0x241e6d0 a1=0x7fc8479afcee a2=0x241e720 a3=0xff items=1 ppid=784 pid=9231 auid=guido uid=guido gid=guido euid=guido suid=guido fsuid=guido egid=guido sgid=guido fsgid=guido tty=pts3 ses=1 comm=vim exe=/usr/bin/vim subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=track-guido-development 
----

まだ多くの不要なものが含まれていますが、はるかに優れています。ルールの1つが引き継いだためにシステムが応答しなくなった場合は、次を実行できます。

# auditctl -R /etc/audit/audit.rules

デフォルト(空)のルールにリセットするパニックモードとして。

2
guido