CentOS Stream 10
Sponsored Link

Auditd : 監査ルールを追加する
2025/01/02
 

デフォルトで設定されているシステムへのログインやユーザーアカウント操作、Sudo アクションなどの監査設定以外のアクション、例えば、ある特定のファイルへのアクセスを監査したい場合等は、個別にルールを追加する必要があります。

[1] 例として、[/etc/hosts] の書き込みアクセスと属性変更を記録する監査ルールを設定します。
# 現在のルールを表示 (デフォルトは以下のように個別ルールは未設定)

[root@dlp ~]#
auditctl -l

No rules
# perm : [r|w|x|a] で監視対象アクションを指定
# ⇒ r=読み取り, w=書き込み, x=実行, a=属性変更
# key : [任意の文字列] で検索用キーを設定

[root@dlp ~]#
auditctl -a always,exit -F arch=b64 -F path=/etc/hosts -F perm=wa -F key=hosts_change

[root@dlp ~]#
auditctl -l

-a always,exit -F arch=b64 -S open,bind,truncate,ftruncate,rename,mkdir,rmdir,creat,link,unlink,symlink,chmod,fchmod,chown,fchown,lchown,mknod,acct,swapon,quotactl,setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr,openat,mkdirat,mknodat,fchownat,unlinkat,renameat,linkat,symlinkat,fchmodat,fallocate,renameat2,openat2 -F path=/etc/hosts -F perm=wa -F key=hosts_change
[2] 監査ルール設定後、監査対象のファイルに監査対象アクションを実行すると、以下のようなログが記録されます。
[root@dlp ~]#
ausearch -k hosts_change | aureport -f -i


File Report
===============================================
# date time file syscall success exe auid event
===============================================
1. 01/02/2025 15:15:37 /etc/hosts~ rename yes /usr/bin/vim root 124
2. 01/02/2025 15:15:37 /etc/hosts openat yes /usr/bin/vim root 125
3. 01/02/2025 15:15:37 /etc/hosts setxattr yes /usr/bin/vim root 126
4. 01/02/2025 15:15:37 /etc/hosts setxattr yes /usr/bin/vim root 127
5. 01/02/2025 15:15:37 (null) fchmod yes /usr/bin/vim root 128
6. 01/02/2025 15:15:37 /etc/hosts setxattr yes /usr/bin/vim root 129
[3] [auditctl] で設定した監査ルールはシステム再起動すると初期化されるため、永続化するには [/etc/audit/rules.d] 配下にルールを定義しておく必要があります。定義ファイルは、拡張子が [.rules] であればファイル名は任意の名称で OK です。
# 現在の設定を additional.rules に書き出す

[root@dlp ~]#
auditctl -l >> /etc/audit/rules.d/additional.rules

[4] 監査対象にディレクトリを指定すると、対象ディレクトリ配下が再帰的に監査対象となります。
# [/home/testdir] に読み取りアクセスの監査ルールを設定

[root@dlp ~]#
auditctl -a always,exit -F arch=b64 -F dir=/home/testdir -F perm=r -F key=testdir_audit

[root@dlp ~]#
auditctl -l

-a always,exit -F arch=b64 -S open,readlink,quotactl,getxattr,lgetxattr,fgetxattr,listxattr,llistxattr,flistxattr,openat,readlinkat,openat2 -F dir=/home/testdir -F perm=r -F key=testdir_audit

# 対象ディレクトリへのアクセスが以下のように記録される

[root@dlp ~]#
ausearch -k testdir_audit | aureport -f -i


File Report
===============================================
# date time file syscall success exe auid event
===============================================
1. 01/02/2025 15:29:08 /home/testdir sendto yes /usr/sbin/auditctl root 123
2. 01/02/2025 15:30:43 /home/testdir/testfolder/text.txt openat yes /usr/bin/cat root 124
3. 01/02/2025 15:30:50 /home/testdir/testfolder lgetxattr yes /usr/bin/ls root 125
4. 01/02/2025 15:30:50 /home/testdir/testfolder listxattr yes /usr/bin/ls root 126
5. 01/02/2025 15:30:50 /home/testdir/testfolder openat yes /usr/bin/ls root 127
6. 01/02/2025 15:30:50 /home/testdir/testfolder/text.txt lgetxattr yes /usr/bin/ls root 128
7. 01/02/2025 15:30:50 /home/testdir/testfolder/text.txt listxattr yes /usr/bin/ls root 129
[5] 例として、UID が 1000 以上のログインユーザーが消去したファイルを監査する設定です。
なお、以下で S オプションで指定しているシステムコールの一覧は [dnf install man-pages] をすると [man syscalls] で確認できます。
[root@dlp ~]#
auditctl -a always,exit -F arch=b64 -S unlink,unlinkat -F 'auid>=1000' -F 'auid!=-1' -F key=delete_audit

[root@dlp ~]#
auditctl -l

-a always,exit -F arch=b64 -S open,readlink,quotactl,getxattr,lgetxattr,fgetxattr,listxattr,llistxattr,flistxattr,openat,readlinkat,openat2 -F dir=/home/testdir -F perm=r -F key=testdir_audit
-a always,exit -F arch=b64 -S unlink,unlinkat -F auid>=1000 -F auid!=-1 -F key=delete_audit

# 以下のようなログが記録される

[root@dlp ~]#
ausearch -k delete_audit | aureport -f -i


File Report
===============================================
# date time file syscall success exe auid event
===============================================
1. 01/02/2025 15:33:49 /run/user/1000/systemd/ unlink no /usr/lib/systemd/systemd cent 162
2. 01/02/2025 15:33:49 /run/user/1000/systemd/ unlink no /usr/lib/systemd/systemd cent 163
3. 01/02/2025 15:33:53 testfile.txt unlinkat yes /usr/bin/rm cent 172
関連コンテンツ