概要
※前回投稿した、OCI BaseDB のファイル変更を AIDE + rsyslogd + Logging Analytics + Monitoring で取得する では、AIDEの出力結果ログに任意の権限を付与する方法が分からなかったため、rsyslogd 経由でログを収集した。
setfacl コマンドでデフォルト権限を付与することで、AIDEのデフォルト設定で出力されるログ ( /var/log/aide/aide.log) の権限が変更できることを教えて頂いたため、実施してみた。
参考:setfacl コマンドで権限を付与する方法が記載されているマニュアル
ホストのエージェント・ユーザーへのログに対するREADアクセス権の付与
実施内容は前回の記事と同じで以下を行う。
・BaseDB (Linux) 標準の AIDE (Advanced Intrusion Detection Environment) でファイル変更を検知
・OCI Logging Anaytics で検知結果のログを監視
※OCI Monitoring でメトリックとして収集する部分は、前回と同じ流れなので割愛。
1.AIDE 設定
1-1.初期状態の確認
前回の記事 1-1 と内容は同じ。
1-2.AIDE設定変更
前回の記事 1-2 では、rsyslog経由でログを出力したが、
このまま /var/log/aide.log を監視できるように、権限の変更を行う。
aide.conf の設定は、デフォルトのまま、/var/log/aide/aide.log に出力。
vi /etc/aide.conf
---
#report_url=syslog:LOG_LOCAL3
syslog_format=yes
report_url=file:@@{LOGDIR}/aide.log
管理エージェントインストールに関するマニュアルに、権限付与の方法が記載されているのでこちらを参考にする。
たとえば、管理エージェント・ユーザーmgmt_agentのパス/scratch/logs/*.logには、次のコマンドが必要です:
setfacl -m u:mgmt_agent:rx /scratch
setfacl -R -m u:mgmt_agent:rx /scratch/logs
setfacl -d -m u:mgmt_agent:rx /scratch/logs
setfacl のオプションはこちら等を参照。
-d でデフォルトACLを設定することで、新しく aide.log が生成されても、mgmt_agent に権限を付与できる。
デフォルトACLを設定すると、ACLを親ディレクトリから継承してディレクトリ内のファイル全てにACL設定を反映できる
権限付与の方法マニュアルを参考に、2つ目、3つ目のコマンドを実行してみる。
※1つ目を参考にすると、/var/log に権限付与となり aide のログ参照だけであれば不要と考えたため、やめておいた。
setfacl -R -m u:mgmt_agent:rx /var/log/aide
setfacl -d -m u:mgmt_agent:rx /var/log/aide
これを実行してみる
# 既存の状態
[root@dbvcn2 ~]# cd /var/log/
[root@dbvcn2 log]# getfacl aide/
# file: aide/
# owner: root
# group: root
user::rwx
group::r-x
other::---
# コマンド実行
[root@dbvcn2 log]# setfacl -d -m u:mgmt_agent:rx /var/log/aide
[root@dbvcn2 log]# setfacl -R -m u:mgmt_agent:rx /var/log/aide
[root@dbvcn2 log]# getfacl aide
# file: aide
# owner: root
# group: root
user::rwx
user:mgmt_agent:r-x
group::r-x
mask::r-x
other::---
default:user::rwx
default:user:mgmt_agent:r-x ★デフォルト設定として、mgmt_agent に権限が付いている
default:group::r-x
default:mask::r-x
default:other::---
# 変更チェックを実行してみる
[root@dbvcn2 log]# /usr/bin/systemctl restart aidescan.service
[root@dbvcn2 log]# ls -l aide/
total 8
-rw-r-----+ 1 root root 122 Jul 29 08:39 aide.log
-rw------- 1 root root 3292 Jul 29 08:34 aide.log.prev
[root@dbvcn2 log]# getfacl aide/*
# file: aide/aide.log
# owner: root
# group: root
user::rw-
user:mgmt_agent:r-x #effective:r-- ★新たに生成されたファイルに権限が付いている
group::r-x #effective:r--
mask::r--
other::---
# file: aide/aide.log.prev
# owner: root
# group: root
user::rw-
group::---
other::---
# 新しいファイルは mgmt_agent で読めることが確認できた。
[root@dbvcn2 log]# sudo -u mgmt_agent head -5 /var/log/aide/aide.log
aidescan_exit_code=0; submitted_metrics_count=0; secs_since_last_run=332.303284168; secs_since_last_success=1690587594.83
これでOS側の設定は終わり。
rsyslogdや、logrotateの設定は不要。
2.OCI Logging Analytics エージェントインストール
2-1. BaseDB にエージェントをインストール
前回の記事 2-1 と内容は同じ。
2-2. プラグインのデプロイ
前回の記事 2-2 と内容は同じ。
3.OCI Logging Analytics 監視設定
3-1.ロググループの作成
前回の記事 3-1 と内容は同じ。
3-2.パーサーの作成
AIDE 用のパーサーを作成する。
syslog フォーマットではないため、前回のパーサーとは少し異なる、AIDEログ用の新たなパーサーが必要。
検知した行を選択して次へ (図の例だと、1行目はサマリのため、3行目以降の file= で始まる行を選択する必要あり)
各フィールドを対象に、ドラッグして属性を入力する。
※最後のフィールドだけ、「オプションのフィールド」のチェックは「無し」なので注意
※各フィールドドラッグ後の詳細入力画面では、
自動で入力される正規表現部分を、以下の表の通りに編集が必要となる。
(例えば、スペースや記号を区別するような正規表現が自動で入力されるが、区別は不要)
※フィールド毎の設定入力後に、再度色付き部分を押下して編集ウインドウを表示すると、
入力した正規表現が戻っている場合があるが、重要なのはフィールドの抽出画面下にある「解析式」
のため、その部分の記載が戻っていなければ問題無い。
対象 | ラジオボタン | フィールド | 正規表現 | オプションのフィールド |
file= 固定文字(青) | リテラルテキストとして | ー | file= | チェックあり |
ファイル名 セミコロンまで(黄色) | フィールドとして | Supplemental Filename | [^;]* | チェックあり |
セミコロン(青) | リテラルテキストとして | ー | ; | チェックあり |
セミコロンより後ろの文字全て(緑) | フィールドとして | Message | .* | チェック無し |
最終的な正規表現(解析式に表示されるもの)
(?:file=)?([^;]*)?(?:;)?(.*)
パーサー作成完了。
3-2.ソースの作成
作成したパーサーを使った、Linux Host 用のソースを作成する。
管理 ⇒ ソース ⇒ ソースの作成
エンティティタイプは、Host(Linux) を選択する。
パーサーは、今回の記事で新たに作成した AIDE 用のパーサーを選択。
含まれているパターンには、
/var/log/aide/aide.log
を指定する。
ソース作成後、「関連付けられていないエンティティ」に、インストールした Linux 用のエンティティが表示されているはずなので、選択して、「アソシエーションの追加」を押下。
「ログエクスプローラで表示」を押下し、ログ・エクスプローラに遷移すると、AIDE ログが表示される。
以降の 3-3~ は、
前回の記事と内容は同じ要領で実施可能のため、ここまでとする。