こんにちは、ひろかずです。
Deep Securityの変更監視機能を使っていると行き当たる壁に、「コンテンツの『改ざん』を検知したい」という要望があると思います。
諸条件あるかと思いますが、一定の解が出そうなので一筆書きます。
#前提
- Deep Security Managerの導入が完了していること。
- ライセンスを投入していること。
- 最低でもRelayを導入しており、管理対象になっていること。
- 監視対象サーバの他に、1台以上の信頼できるサーバを用意できること。
- 監視対象サーバと信頼できるサーバにAgentが導入されており、有効化と変更監視機能がオンになっていること。
#参照情報
マニュアルの142,235頁になります。
#何が壁なのか
サーバ上の資源(ファイルやプログラム、動作しているサービスやポート)の変化を監視するソリューションは幾つもありますが、「意図された変更(人的・システム的)」と「そうでない変更(恐らくは一般的な意味での「改ざん」)」を自動的に識別するソリューションはあまりありません。
※ 絶対に変更が発生しない前提の資源を定義したり、変更内容を事前に登録して、それ以外の変更を「改ざん」という区別はできると思いますが、運用上回せるか否かは別問題だと思います。
特にWebコンテンツは、サービスによっては頻繁に更新されるため、運用上その識別がより困難になります。
#本件のゴール
できるだけ人手をかけずに自動的に「意図された変更」と「そうでない変更(恐らくは「改ざん」)」を識別できるよう、信頼されたコンピュータと同じ変更監視イベントにそれと判るタグを付与することとします。
#工程
1.事前準備
2.検証用変更監視ルールの作成
3.自動タグ付けルールの作成
4.変更監視タスクの作成
5.動作確認
#1.事前準備
今回は、以下の様な構成を用意しました。
DeepSecurityは、9.5sp1を使用しています。
DMZは、外部に公開しているWebサーバです。
Trustedは、外部からアクセスできず、外部からの改ざんが起こり得ないSubnetに配置します。
Trustedは、SecurityGroupやIAMにて、VPC内からのアクセスも制限することが望ましいです。
構成例を以下に示します。
#2.検証用変更監視ルールの作成
今回の検証用に「/tmp/test/配下」の変更を監視する変更監視ルールを作成します。
カスタムルールについては、マニュアルの235頁を参照してください。
ポリシータブの共通オブジェクト配下の「変更監視ルール」を選択し、新規>新しい変更監視ルールと選択します。
コンテンツタブ内のテンプレートを「カスタム(XML)」にし、コンテンツ内を以下のように設定します。
作成したルールを、DMZとTrustedに付与します。
#3.自動タグ付けルールの作成
イベントとレポートタブから変更監視イベントを選択し、「自動タグ付け...」をクリックします。
タグ名を指定します。
このタグは、信頼済みのコンピュータとして指定したTrustedへの変更と、Trusted以外のコンピュータへの類似した変更イベントに対して自動的に付与されます。
#4.変更の検索タスクの作成
Linuxの場合、ファイルやディレクトリへの変更の検索は、予約タスクの実行を契機に行われます。
詳しくは以下を参照してください。
トレンドマイクロ Q&Aページ
変更監視 (Integrity Monitoring) でのリアルタイム検知について
Trustedに対する変更検索を行った後で、それ以外の変更検索を行う都合上、変更の検索タスクを2つ作成します。
詳しくはマニュアルの142頁を参照してください。
まず、Trustedに対する変更タスクを作成します。
管理タブの予約タスクから「新規」をクリックします。
予約タスクの種類を「コンピュータの変更を検索」を選択します。
今回は検証なので頻度は「1回のみ」としておきます。
変更を検索するコンピュータを指定します。
ここは「すべてのコンピュータ」で構いません。
同じ要領で、「一般コンピュータの検索」を作成します。
変更箇所は、「信頼済みのコンピュータを除外します。」とするところです。
#5.動作確認
DMZとTrustedに同じ変更をかけます。
trusted# touch /tmp/test/hoge1.txt
trusted# ls -lR /tmp/
/tmp/:
total 4
drwxr-xr-x 2 root root 4096 Jun 20 03:19 test
/tmp/test:
total 0
-rw-r--r-- 1 root root 0 Jun 20 03:19 hoge1.txt
dmz# touch /tmp/test/hoge1.txt
dmz# ls -lR /tmp/
/tmp/:
total 4
drwxr-xr-x 2 root root 4096 Jun 20 03:20 test
/tmp/test:
total 0
-rw-r--r-- 1 root root 0 Jun 20 03:20 hoge1.txt
タイムスタンプが違ってしまいましたね。
それでは、管理タブの予約タスクから、先ほど作成した変更検索タスクを実行します。
まずは、「信頼されたコンピュータの検索」を選択して「今すぐタスクを実行」をクリックします。
処理が完了したのを確認してから、「一般コンピュータの検索」を選択して「今すぐタスクを実行」をクリックします。
しばらくすると、イベントとレポートタブの変更監視イベントに記録されます。
DMZとTrusted双方に「Trusted_Change」タグが付与されてます。
タイムスタンプは無視されているようですね。
次に、DMZとTrustedにそれぞれ異なる変更をかけます。
trusted# echo trusted > /tmp/test/hoge1.txt
trusted# cat /tmp/test/hoge1.txt
trusted
trusted# ls -lR /tmp/
/tmp/:
total 4
drwxr-xr-x 2 root root 4096 Jun 20 03:19 test
/tmp/test:
total 4
-rw-r--r-- 1 root root 8 Jun 20 04:51 hoge1.txt
dmz# echo dmz > /tmp/test/hoge1.txt
dmz# cat /tmp/test/hoge1.txt
dmz
dmz# ls -lR /tmp/
/tmp/:
total 4
drwxr-xr-x 2 root root 4096 Jun 20 03:20 test
/tmp/test:
total 4
-rw-r--r-- 1 root root 4 Jun 20 04:52 hoge1.txt
先ほどと同じように、「信頼されたコンピュータの検索」の処理が完了したのを確認してから、「一般コンピュータの検索」を実行します。
運用上では、タグが付かなかったものについて、調査していく方針になると思います。
お疲れ様でした。