- 限定コンテンツへのアクセス
- 他ユーザーとのつながり
- あなたの体験を共有
- サポート情報の発見
この記事では、XQLで記述したクエリを用いたBIOCルールによって
Linuxサーバの設定ファイルの変更監視する方法について説明します。
また、本記事の内容はお客様の運用環境において要求される事項と必ずしも一致するものではなく、
動作を保証するものではありませんのでご承知おきください。
Linuxサーバで、ファイルのアクセス権、所有者の変更、Remove, Rename, Write, Createイベントが
発生した時にアラートを出力するようにします。
以下のファイル及びディレクトリを監視対象としてみます。
・/etcディレクトリ直下の拡張子.confのファイル
・/bootディレクトリ内のファイル及びサブディレクトリ
・/etc/crontab
・/etc/cron.dailyディレクトリ内のファイル及びサブディレクトリ
・/etc/cron.hourlyディレクトリ内のファイル及びサブディレクトリ
・/etc/cron.weeklyディレクトリ内のファイル及びサブディレクトリ
・/etc/cron.monthlyディレクトリ内のファイル及びサブディレクトリ
XQLクエリは以下のとおりです。 監視対象となるファイルパス「action_file_path」は
正規表現で記述しています。より良い正規表現があると思うので色々試して見てください。
また、見てただいてわかるとおり正規表現を使う場合は「~=」という演算子を使います。
dataset = xdr_data
| filter agent_os_type = ENUM.AGENT_OS_LINUX and
event_type = ENUM.FILE and
event_sub_type in ( ENUM.FILE_CHANGE_MODE, ENUM.FILE_CHANGE_OWNER, ENUM.FILE_REMOVE ,ENUM.FILE_RENAME, ENUM.FILE_WRITE, ENUM.FILE_CREATE_NEW ) and
(
action_file_path ~= "^\/etc\/[\w]+(.conf)$" or
action_file_path ~= "^/etc/crontab$" or
action_file_path ~= "^\/etc\/cron\.daily\/.+" or
action_file_path ~= "^\/etc\/cron\.hourly\/.+" or
action_file_path ~= "^\/etc\/cron\.weekly\/.+" or
action_file_path ~= "^\/etc\/cron\.monthly\/.+" or
action_file_path ~= "^\/boot\/.+"
)
| filter action_file_path !~= ".+(.swp|.swx)$"
上にXQLを使ってBIOCルールを作成します。
ルールを作成する画面で以下のようにクエリをテストし成功すると条件に一致したイベントが検出されます。
期待しない結果が出てくる場合はここでXQLのチューニングを行います。
action_file_pathに含まれる値の内訳
ルールの名前、Severity、MITRE ATT&CKにおけるTactic/Techniqueなどを設定し作成します。
OKボタンをクリックすると、
BIOC Rulesの画面に作成したルールが表示されます。
ここでは2つの操作を実施してみたいと思います。
1つ目は、sshでLinuxサーバ(ホスト名ubuntusvr、IP 192.168.68.114)リモートアクセスして、
/etc/resolv.confの編集を行い最終行にちょっとしたコメント行を追加し、
2つ目は、/etc/cron.dailyディレクトリにあるbsdmainutilsの名前を変更してみます。
(sudo mv bsdmainutilsbsdmainutils.renameのところ)
サーバのログデータがクラウドに送信されるとBIOCルールによって判定されインシデントが作成されました。
Linux File Monitoringというアラート名で2つのHigh Severityのアラート(赤いところ)が表示されています。
まず1つ目のアラートを確認してみます。
INITIATOR_PATHにvimが、FILE_PATHに/etc/resolv.confが表示されており、
vimによってresolv.confが操作されたということがわかります。
このアラートからCausality Chainを確認すると、
Bのマーク(オレンジ枠のところ)赤く塗られて強調表示されており、ここで検知したことがわかります。
余談ですが、2つ左隣のアイコン(黄色の枠)を見ると、ユーザーがrootに変更になったことがわかります。
vimをsudoコマンドで起動した後に該当ファイルを編集したので、このようなプロセスの連鎖になっています。
また、プロセスの連鎖をもう少し左側にさかのぼっていくと雲のマークのアイコンがあります。
白枠のメッセージに
「sshd has been controlled from a remote host; connection details: local IP address: 192.168.68.114, local port: 22, remote IP address: 192.168.68.104, remote port: 57507」
と書かれておりsshによってリモートアクセスが行われ、そこが起点になっていることがわかります。
実際にsshでリモートアクセスして操作していたので、同じ結果がCausality Viewに表示されています。
次に2つ目のアラートを確認してみます。
INITIATOR_PATHに/usr/bin/mvが、FILE_PATHに/etc/cron.daily/bsdmainutils.renameが表示されており、
mvによってbsdmainutils.renameが操作されたということがわかります。
上の例と同様、このアラートからCausality Chainを確認すると、
Bのマーク(オレンジ枠のところ)赤く塗られて強調表示されており、ここで検知したことがわかります。
(よく見ると上の例のCausality Chainと同じでsshが起点になってます。)
Bマークの下のアイコンをクリックするとmvを用いて名前を変更していたことがわかります。(CMDに書かれたコマンド)
このようにして、サーバの変更監視にBIOCルールを活用することもできます。
実際には運用環境に合わせて適切なXQLを記述する必要があると思いますが 、
監視の必要性がある場合は参考にして見てください。
BIOCルールのついての詳細はこちら
正規表現におけるXQLの演算子についてはこちら