auditdでの監査情報検索(CentOS7)

# 環境
```
# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
```

# 1. auditd.conf の設定内容

`/etc/audit/auditd.conf`にauditdの設定内容があります。


```text:/etc/audit/auditd.conf
#
# This file controls the configuration of the audit daemon
#

local_events = yes
write_logs = yes
log_file = /var/log/audit/audit.log
log_group = root
log_format = RAW
flush = INCREMENTAL_ASYNC
freq = 50
max_log_file = 8
num_logs = 5
priority_boost = 4
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = NONE
##name = mydomain
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
verify_email = yes
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
use_libwrap = yes
##tcp_listen_port = 60
tcp_listen_queue = 5
tcp_max_per_addr = 1
##tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
enable_krb5 = no
krb5_principal = auditd
##krb5_key_file = /etc/audit/audit.key
distribute_network = no
```


設定 | 内容
--- | ---
local_events | 監査イベントの記録(`yes`:記録、`no`:記録しない)
write_logs | イベントのログファイル書き込み(`yes`:記録、`no`:記録しない)
log_file | ログファイル出力場所
log_group | ログファイル書き込み権限
log_format | ログファイル形式(`raw`:出力,`nolog`:破棄)
flush | ディスク書き込み形式(`none`:ディスク書込無し,`incremantal`:freq頻度で書込(同期)、`incremantal_async`:freq頻度で書込(非同期)、`data`:ディスク書込常時同期、`sysc`:完全同期)
freq | Flush行頻度 **但しflush = INCREMENTAL_ASYNCの場合のみ**
max_log_file | 最大容量(MB)
num_logs | ファイルローテート保持数(2未満でローテート無し) **但しmax_log_file_action = ROTATEの場合のみ**
priority_boost | プロセス処理優先度(4:デフォルト、0:変更なし)
disp_qos | 監査イベントキューの超過時処理(`lossy`:監査イベント破棄、`lossless`:キュー回復まで待機)
dispatcher | 監査用プロセスの場所、アプリケーションに標準入力を渡す動作を行う
name_format | コンピュータ名の記入方法(`none`:記入無し、`hostname`:gethostnameコマンドに同じ、`fqd`:名前解決によるFQDN、`numeric`:IPアドレス、`user`:nameオプションと同じ値)
name | name_formatに使用する値 **但しname_format = USERの場合のみ**
max_log_file_action | 最大容量到達時のアクションを指定
space_left | ログ出力用のディスク空き容量の定義(MB or %)
space_left_action | ログ出力用のディスク空き容量不足時のアクションを指定(オプションは別表)
verify_email | 通報先メールアドレスの検証を行う(`yes`:検証する、`no`:検証しない) **但しaction_mail_acctパラメータの前に記入する**
action_mail_acct | 通報先メールアドレス
admin_space_left | システム管理用のディスク容量空き容量の定義(MB or %)
admin_space_left_action | システム管理用のディスク容量空き容量の不足時のアクションを指定(オプションは別表)
disk_full_action | ディスクフル発生時のアクションを指定(オプションは別表)
disk_error_action | ディスクエラー/ログ書き込みエラー発生時のアクションを指定(オプションは別表)
use_libwrap | tcp_wrappersの使用有無(`yes`:使用、`no`:不使用)
##tcp_listen_port | リモートからの監査に使用するTCPポート
tcp_listen_queue | リモートからの監査に使用するキュー数
tcp_max_per_addr | リモートからの監査の同時接続数
tcp_client_ports | リモートからの監査に使用するクライアントTCPポート
tcp_client_max_idle | リモートからの監査における通信アイドル時間(`0`で無監視)
enable_krb5 | (非推奨)kerberos認証を有効にする
krb5_principal | プリンシパル(監査主体)のチェック方法を指定
krb5_key_file | プリンシパル(監査主体)のキーの場所を指定 **但しkrb5_principal = auditdの場合のみ**
distribute_network | ネットワーク発信イベントの記録(`yes`:記録、`no`:記録しない)

:::note info
アクションは以下から指定します。
`ignore`：動作無し
`syslog`：通報
`email`：SYSLOG及びMAIL通報
`suspend`：監査ログ書込中止
`single`：シングルユーザモード発動
`halt`:システム停止
:::




# 2. ausearchでの検索

`ausearch`コマンドを利用することで`auditd`の内容を可読できるようになります。


オプション | 効果
--- | ---
-i、--interpret | テキスト変換
-m , --message [イベント] | イベントタイプを指定
-ts , --start [時刻] | イベント開始時を指定
-te , --end [時刻] | イベント終了時を指定
--session [セッションID] | ログインセッションIDを指定
-sv、--success [yes/no] | イベントの成功/失敗を指定
-ua , --uid-all [ユーザ名] | ユーザ名を指定
-ui、--uid [ユーザID] | ユーザIDを指定
-ga , --gid-al [グループ名] | グループ名を指定
-ga , --gid-al [グループID] | グループIDを指定
-w , --word [テキスト] | イベント内の任意テキストを指定
-v, --version | バージョンを表示

:::note info
時間は以下でも指定可能です。
`now`、`recent`、`this-hour`、`boot`、`today`、`yesterday`、`this-week`、`week-ago`、`this-month`、`this-year`
※`recent`は10分間
:::


https://man7.org/linux/man-pages/man8/ausearch.8.html

<br><br>

 イベントタイプ|内容 
--- | ---
SERVICE_START | サービスの開始時にトリガーされます。
SERVICE_STOP | サービスが停止したときにトリガーされます。
SYSTEM_BOOT | システムの起動時にトリガーされます。
LOGIN | システムログイン時にトリガーされます。
USER_LOGIN | ユーザーのログイン時にトリガーされます。
USER_LOGOUT | ユーザーがログアウトするときにトリガーされます。


https://access.redhat.com/ja/articles/6970251

<br><br>


#### 2.1 今年以降のシステム起動を表示

```
# ausearch -i -m SYSTEM_BOOT -ts "this-year"

----
type=SYSTEM_BOOT msg=audit(2024年09月24日 13:17:57.930:7) : pid=727 uid=root auid=unset ses=unset msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success'
----
type=SYSTEM_BOOT msg=audit(2024年10月03日 22:01:14.866:7) : pid=729 uid=root auid=unset ses=unset msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success'
----
type=SYSTEM_BOOT msg=audit(2024年10月07日 08:50:17.668:7) : pid=728 uid=root auid=unset ses=unset msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success'
```


```
# ausearch -i -m SYSTEM_BOOT -ts "this-year" | cut -f 1-3 -d " " | grep -v "\-\-\-\-"

type=SYSTEM_BOOT msg=audit(2024年09月24日 13:17:57.930:7)
type=SYSTEM_BOOT msg=audit(2024年10月03日 22:01:14.866:7)
type=SYSTEM_BOOT msg=audit(2024年10月07日 08:50:17.668:7)
```



#### 2.2 今日以降のシステムログインイベントを表示

```
# ausearch -i -m LOGIN -ts "today"

----
type=LOGIN msg=audit(2024年11月04日 21:06:42.157:647) : pid=6660 uid=root old-auid=unset auid=root tty=(none) old-ses=4294967295 ses=63 res=yes
----
type=LOGIN msg=audit(2024年11月04日 22:01:01.467:657) : pid=6739 uid=root old-auid=unset auid=root tty=(none) old-ses=4294967295 ses=64 res=yes
----
type=LOGIN msg=audit(2024年11月04日 22:30:41.438:681) : pid=6778 uid=root old-auid=unset auid=user01 tty=(none) old-ses=4294967295 ses=65 res=yes
```


```
# ausearch -i -m LOGIN -ts "today" | cut -f 1-3,6,8 -d " " |grep -v "\-\-\-\-"

type=LOGIN msg=audit(2024年11月04日 21:06:42.157:647) uid=root auid=root
type=LOGIN msg=audit(2024年11月04日 22:01:01.467:657) uid=root auid=root
type=LOGIN msg=audit(2024年11月04日 22:30:41.438:681) uid=root auid=user01
```



#### 2.3 指定時間のユーザログインイベントを表示

```
# ausearch -i -m USER_LOGIN -ua user01 -ts "2024年11月04日" "01:00" -te "2024年11月05日" "01:00"

----
type=USER_LOGIN msg=audit(2024年11月04日 22:30:41.517:687) : pid=6778 uid=root auid=user01 ses=65 msg='op=login id=user01 exe=/usr/sbin/sshd hostname=192.168.142.1 addr=192.168.142.1 terminal=/dev/pts/1 res=success'
----
type=USER_LOGIN msg=audit(2024年11月04日 22:44:30.806:721) : pid=6854 uid=root auid=user01 ses=66 msg='op=login id=user01 exe=/usr/sbin/sshd hostname=192.168.142.1 addr=192.168.142.1 terminal=/dev/pts/1 res=success'
----
type=USER_LOGIN msg=audit(2024年11月04日 22:45:00.838:749) : pid=6896 uid=root auid=user01 ses=67 msg='op=login id=user01 exe=/usr/sbin/sshd hostname=192.168.142.1 addr=192.168.142.1 terminal=/dev/pts/1 res=success'
```

```
# ausearch -i -m USER_LOGIN -ua user01 -ts "2024年11月04日" "01:00" -te "2024年11月05日" "01:00" | cut -f 1-3,7,13 -d " " | grep -v "\-\-\-\-"

type=USER_LOGIN msg=audit(2024年11月04日 22:30:41.517:687) auid=user01 addr=192.168.142.1
type=USER_LOGIN msg=audit(2024年11月04日 22:44:30.806:721) auid=user01 addr=192.168.142.1
type=USER_LOGIN msg=audit(2024年11月04日 22:45:00.838:749) auid=user01 addr=192.168.142.1
```


#### 2.4 プロセス`chronyd`の起動イベントを表示

```
# ausearch -i -m SERVICE_START | grep "chronyd"

type=SERVICE_START msg=audit(2024年09月24日 13:17:58.224:17) : pid=1 uid=root auid=unset ses=unset msg='unit=chronyd comm=systemd exe=/usr/lib/systemd/systemd hostname=? addr=? terminal=? res=success'
type=SERVICE_START msg=audit(2024年10月03日 22:01:15.279:26) : pid=1 uid=root auid=unset ses=unset msg='unit=chronyd comm=systemd exe=/usr/lib/systemd/systemd hostname=? addr=? terminal=? res=success'
type=SERVICE_START msg=audit(2024年10月07日 08:50:17.905:17) : pid=1 uid=root auid=unset ses=unset msg='unit=chronyd comm=systemd exe=/usr/lib/systemd/systemd hostname=? addr=? terminal=? res=success'
```


# 参考

https://man7.org/linux/man-pages/man5/auditd.conf.5.html

https://linux.die.net/man/5/auditd.conf

https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/7/html/security_guide/sec-configuring_the_audit_service

https://docs.redhat.com/ja/documentation/Red_Hat_Enterprise_Linux/7/html/security_guide/chap-system_auditing#chap-system_auditing

https://access.redhat.com/ja/articles/6970251

https://man7.org/linux/man-pages/man8/ausearch.8.html