はじめに
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
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
・・・
以下4つはそれぞれの状態がマニュアルに記載がある状態になっていることを確認します。
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
ログのカスタマイズ
デフォルトで取得されるログに加えて、実行したコマンドも監査ログとして収集します。
/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を確認し、動的グループを作成します。
ポリシー作成
任意の名称で以下のポリシーを作成します。
Allow dynamic-group instanceDG to use log-content in compartment コンパートメント名
カスタムログの作成
インスタンスの監査ログはカスタムログとして収集します。
ロググループの作成
任意の名称でロググループを作成します。
カスタムログの作成
次に、任意の名称でカスタムログを作成します。
なお、ここの「説明」は日本語では入れられませんでした。
先ほど作成した「動的グループ」を指定します。
エージェント構成では「ログ・パス」を指定して、ファイルパスを/var/log/audit/audit.log
にします。
「高度なパーサー・オプション」をクリックして、パーサーをAUDITD
にします。
確認
しばらく待って、カスタムログにログが収集されていることを確認します。
「検索」でコマンド名で検索すると、コマンドのログも収集されていることがわかります。
ObjectStorageへの保存
OCI Loggingはデフォルト30日、最大180日でログが破棄されます。
監査ログは一年間とか長期保管が必要になりますし、コスト的にもObjectStorageの方が安いので、OCI LoggingからServiceConnecterを経由してObjectStorageに転送します。
Loggingの「検索」画面に「サービス・コネクタの作成」ボタンがあるので、クリックします。
任意の名称を設定し、ソースをロギング
、ターゲットをオブジェクト・ストレージ
にします。
ターゲットの構成で作成済みのバケットを指定します。
この画面で「ポリシーを作成」みたいなボタンがあるのでクリックすると、以下のようなポリシーが自動で作成されます。
しばらく待つと、以下のようにログがObjectStorageに転送されていることが確認できます。
必要に応じて、ライフサイクルポリシーを設定することで、コストを抑えることができます。
参考資料