OCI Computeインスタンス上のOracle Linuxの監査ログを収集する

# はじめに
ComputeインスタンスのOracle Linuxの監査ログをOCI Loggingで収集する方法を確認します。

# 環境の確認

対象は以下のOSです。
```
$ cat /etc/oracle-release 
Oracle Linux Server release 8.9
```

Oracle Linuxはauditdや収集するためのエージェントがデフォルトで入っています。

各サービスの状態を確認します。
```
$ systemctl status auditd
● auditd.service - Security Auditin![スクリーンショット 2024-06-25 13.49.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/e1fd72af-007a-174a-e8f5-972cf6309dd5.png)
g Service
   Loaded: loaded (/usr/lib/systemd/system/auditd.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2024-03-26 04:16:43 GMT; 2 months 30 days ago
・・・
```

以下４つはそれぞれの状態がマニュアルに記載がある状態になっていることを確認します。

```
systemctl status unified-monitoring-agent
systemctl status unified-monitoring-agent_config_downloader.timer
systemctl status unified-monitoring-agent_config_downloader.service
systemctl status unified-monitoring-agent_restarter.path
```

https://docs.oracle.com/ja-jp/iaas/Content/Logging/troubleshooting.htm#troubleshooting_agent_linux

# ログのカスタマイズ
デフォルトで取得されるログに加えて、実行したコマンドも監査ログとして収集します。

`/etc/audit/rules.d/audit.rules`ファイルに以下を追記し、サービスをrestartします。

```
-a exit,always -F arch=b64 -F uid!=0 -F gid!=985 -S execve -k execute
```

```
$ sudo service auditd restart
Stopping logging: 
Redirecting start to /bin/systemctl start auditd.service
```

# 動的グループの作成
ここからはOCIコンソールでの作業になります。

ログを収集するインスタンスのOCIDを確認し、動的グループを作成します。

![スクリーンショット 2024-06-25 12.54.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/e7b45678-df63-8181-f9b5-274e9c62ccb4.png)


# ポリシー作成
任意の名称で以下のポリシーを作成します。

```
Allow dynamic-group instanceDG to use log-content in compartment コンパートメント名
```
# カスタムログの作成
インスタンスの監査ログはカスタムログとして収集します。

## ロググループの作成

任意の名称でロググループを作成します。

![スクリーンショット 2024-06-25 12.58.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/5a5795bd-4783-b5b3-83b0-0938b03aa8dd.png)

## カスタムログの作成

次に、任意の名称でカスタムログを作成します。
なお、ここの「説明」は日本語では入れられませんでした。

![スクリーンショット 2024-06-25 13.05.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/b878b684-7376-bb86-5f24-66317edf78b8.png)

先ほど作成した「動的グループ」を指定します。

エージェント構成では「ログ・パス」を指定して、ファイルパスを`/var/log/audit/audit.log`にします。

![スクリーンショット 2024-06-25 13.03.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/b43e1e8f-e798-817d-cda7-88e56cbaff54.png)

「高度なパーサー・オプション」をクリックして、パーサーを`AUDITD`にします。

![スクリーンショット 2024-06-25 13.03.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/6fed9ec6-f617-c7af-8641-d8130c004215.png)

# 確認
しばらく待って、カスタムログにログが収集されていることを確認します。

![スクリーンショット 2024-06-25 13.34.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/10f248d6-1217-be3e-a385-ffbc4f36305a.png)

「検索」でコマンド名で検索すると、コマンドのログも収集されていることがわかります。

![スクリーンショット 2024-06-25 13.49.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/c935900d-53a5-f3e6-9419-32b173f4e985.png)


![スクリーンショット 2024-06-25 13.49.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/05500a0e-6201-3395-a42b-2118cec10f11.png)

# ObjectStorageへの保存
OCI Loggingはデフォルト３０日、最大180日でログが破棄されます。
監査ログは一年間とか長期保管が必要になりますし、コスト的にもObjectStorageの方が安いので、OCI LoggingからServiceConnecterを経由してObjectStorageに転送します。

Loggingの「検索」画面に「サービス・コネクタの作成」ボタンがあるので、クリックします。

任意の名称を設定し、ソースを`ロギング`、ターゲットを`オブジェクト・ストレージ`にします。

![スクリーンショット 2024-06-25 14.01.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/16e5e608-8fd2-ce28-649a-09fd0fa9db42.png)

ターゲットの構成で作成済みのバケットを指定します。

![スクリーンショット 2024-06-25 14.01.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/04066d7b-739f-cd10-d5b0-527d3b837bab.png)

この画面で「ポリシーを作成」みたいなボタンがあるのでクリックすると、以下のようなポリシーが自動で作成されます。

![スクリーンショット 2024-06-25 14.05.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/04792799-6c79-a76e-707d-ae4435a49b2f.png)

しばらく待つと、以下のようにログがObjectStorageに転送されていることが確認できます。

![スクリーンショット 2024-06-25 14.14.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/492530/b8e4bdc7-1b26-b5e5-eedd-58b60688676a.png)

必要に応じて、ライフサイクルポリシーを設定することで、コストを抑えることができます。

# 参考資料
https://oracle-japan.github.io/ocitutorials/intermediates/using-logging/

https://homebase.server-on.net/index.php/ja/2020-01-05-18-41-26/14-2020-01-05-19-58-04/250-oci-oraclelinux

https://oji-cloud.net/2020/03/28/post-4692/