16. Webコンテンツ改ざん監視(SSH)
本書はLinuxホストに対して、Webコンテンツ改ざん監視(SSH)を実施するためのマニュアルです。
Windowsホストは本書の対象外となっております。予めご了承ください。
16.1. 概要
16.1.1. Webコンテンツ改ざん監視(SSH)とは
SSH経由で、指定したコンテンツファイルの監視を行います。
SSH経由で接続を行いますので、監視対象サーバ側で事前に接続設定やコマンドの準備等が必要です。(詳細は「 監視対象サーバでの事前準備 」に記載しております)
指定した監視対象ディレクトリ内のファイルハッシュを取得・記録し、次回監視時の結果と照らし合わせてファイルが追加・編集・削除されていないか監視を行います。
後述の「 サービスの登録 」にて、サービス登録時に監視対象ディレクトリを指定します。
勿論、指定したディレクトリ直下のみを監視するわけではなく、「/var/www/html/」以下にあるディレクトリ内のファイルも監視対象とします。
SSH接続にて内部ファイルの監視を行うのではなく、HTTP接続にてWEBコンテンツの改ざん監視を行う場合は「Webコンテンツ改ざん監視」または「Webコンテンツ改ざん監視(一括監視)」をご利用ください。
「Webコンテンツ改ざん監視」「Webコンテンツ改ざん監視(一括監視)」の場合、公開鍵の登録やsudoの設定は不要です。監視用途に合わせて、接続方法をご選択ください。
また、事前にバックアップを取得しておけば、改ざん前の正常な状態に復旧させることも可能です。
復旧処理は管理画面からの手動実行か、エスカレーションコマンドによる自動実行が可能です。
16.1.2. Webコンテンツ改ざん監視(SSH)でできること
SSH経由で対象サーバへアクセスし、指定したディレクトリ内のファイルに追加・編集・削除処理があったか監視を行い、変更を検知した場合に障害を発生させます。
事前に、対象サーバ内にバックアップ用ディレクトリ(以降マスターディレクトリ)を用意すると、自動、または手動で変更内容を元に戻す復旧処理が行えます。
16.1.3. 監視可能なファイル数の上限について
Webコンテンツ改ざん監視(SSH)では、監視の実行時に監視対象ディレクトリ以下のファイル一覧を取得します。
ファイル数が多い場合、監視コマンドの実行時間が60秒を超えてしまうためタイムアウトとなり、正常に監視が行えません。
弊社では概ね以下の環境で監視が行えることを確認しております。
監視対象サーバ:Rocky Linux release 9.4 (Blue Onyx)
ネットワーク:同一セグメント内からのアクセス
監視対象ディレクトリ以下のファイル数:2,000件
監視対象ディレクトリ以下のディレクトリ数:110件
監視対象ディレクトリ以下の総ファイルサイズ:40MB
また、上記の環境で1,000件のファイル削除を行い、自動復旧エスカレーションにより監視が復旧することを確認しております。
処理時間は監視対象サーバの性能や、通信速度といった環境に依存します。タイムアウトが頻発するような場合は、例えば監視対象ファイル数を減らすといった対応が必要です。
16.2. サービス利用の流れ
16.2.1. 監視対象サーバでの事前準備
X-MONから監視対象サーバへSSH接続するために、以下2つの事前準備を行う必要があります。 復旧処理の設定も行う場合は、追加で設定が必要です。
X-MON SSH公開鍵の登録
SSHログインユーザへsudo権限の割り当て
本マニュアルを以下のような流れで読み進めると、X-MON管理画面と監視対象サーバを極力行き来せずに準備を進められます。
ただし、以下の通りに進めなければ「復旧処理設定が後々設定できなくなる」といったことはございません。
「まずはしっかり監視設定を行ってから、次に復旧処理設定を」とお考えの方は本マニュアルを順にお読みいただければ、監視設定→復旧設定といった流れになっております。
16.2.1.1. X-MON SSH公開鍵の登録
WebブラウザよりX-MONへログインし、監視メニュー「システム情報」よりSSH公開鍵をダウンロードし、監視対象サーバへ登録します。
詳細な手順は、X-MONへログイン後、以下ヘルプ画面にてご確認ください。
・ヘルプ ・チェックコマンドメニュー ・Webサービス監視 ・Webコンテンツ改ざん監視(SSH) ・事前準備 |
16.2.1.2. SSHログインユーザへsudoの割り当て
監視対象ファイルの権限により正しく監視できない場合があるため、本監視プラグインの利用時はsudoを必須としております。
16.2.2. サービスの登録
本監視を利用する場合、サービス登録時に以下の「サービス監視用コマンド」を選択します。
グループ … Webサービス監視
サービス監視コマンド名 … Webコンテンツ改ざん監視(SSH)
「Webコンテンツ改ざん監視(SSH)」を選択すると以下の設定項目が表示されます。ご希望の監視に合わせて設定してください。
「マスターディレクトリパス」「除外設定」の2項目は必須項目ではありません。
項目名 |
条件 |
説明 |
入力例 |
---|---|---|---|
SSHポート |
必須 |
SSH接続時に利用するポート番号を指定します。 デフォルト「22」が指定されています。 |
22 |
SSHユーザ名 |
必須 |
SSH接続に利用するユーザ名を指定します。
事前準備で用意したログインユーザ名へ変更してください。
|
root |
監視ディレクトリパス |
必須 |
監視対象先のディレクトリを指定します。
末尾には/(スラッシュ)を付ける必要があります。
|
/var/www/html/ |
マスターディレクトリパス |
任意 |
復旧処理を行う場合、監視対象ディレクトリの
バックアップ先となるディレクトリを指定します。
末尾には/(スラッシュ)を付ける必要があります。
|
/tmp/backup/ |
除外設定 |
任意 |
監視対象先ディレクトリで監視から除外するファイルを
「監視対象ディレクトリパス」からの相対パスで指定します。
後から調整できます。
除外指定には*(ワイルドカード)が利用できます。
例 ) *.pngで拡張子pngファイルの除外
ディレクトリ毎に指定する必要があります。
(image.pngを設定すると/var/www/html/image.pngは除外され、
別階層にある/var/www/html/image/image.pngは除外されません。)
複数の除外対象を登録可能です。
複数の除外対象を登録する場合は、|(パイプ)区切りで指定してください。
|
監視対象ディレクトリ
・/var/www/html/
------------
除外したいファイル
・/var/www/html/image/001.png
設定内容
「image/001.png」
------------
複数の除外したいファイル
・/var/www/html/image/001.png
・/var/www/html/.htaccess
設定内容
「image/001.png|.htaccess」
|
サービス新規登録時、デフォルトでは「監視間隔(分)」は「5(分)」、「試行回数」は「3」と指定されています。設定内容に合わせて、「監視間隔(分)」→「30」、「試行回数」→「1」等調整をお願いいたします。
「テスト実行」ボタンについて
必須項目の入力内容に誤りがないか確認できます。
「SSHポート」「SSHユーザ名」「監視ディレクトリパス」の指定に誤りがある場合(監視ディレクトリパスが存在しない、SSHユーザが存在しない等)、以下のようにUNKNOWNステータスが返ります。
正しく設定されている場合はOKステータスを返しますが、「初回監視では比較用のデータが存在しないため、次回より監視を行います」と表示され、ここでは詳細な監視対象は確認できません。
監視対象ファイルを確認する場合は「除外するディレクトリ・ファイルの指定を調整する場合」をご確認ください。
サービス登録を行った後は、管理者メニュー [X-MON再起動] で設定内容を反映させてください。
16.2.3. 監視内容の確認
「監視対象サーバでの事前準備」と「サービスの登録」の設定情報が正しく行えている場合、正常に監視を行えます。
UNKNOWNステータス等を返す場合は、設定情報を再確認してください。
正常に監視が行えている場合も、初回監視のみ次回監視より比較に利用するファイルハッシュ一覧を取得する必要があるため「OK – 初回監視では比較用のデータが存在しないため、次回より監視を行います」と表示されます。
ファイルを比較し、追加・編集・削除ファイルの有無を検知できるようになると「OK – 問題ファイル 0 件 前回の監視と比べファイルに変更はありませんでした」と表示されるようになります。
監視対象ディレクトリ以下で、ファイルに対して追加・編集・削除操作を検知した場合「CRITICAL – 問題ファイル 〇件 前回の監視と比べファイルに変更があります」と表示されます。
上記赤枠、「ステータス情報」部分をクリックすると監視詳細画面へ遷移します。
また、以下のページからも監視詳細画面へ遷移できます。
「サービス情報」画面 「ステータス情報」部分
「サービス一覧表示」画面 「ステータス情報」部分
「Web改ざん警告管理」画面 「SSH接続」→ 対象サービス「詳細情報」ボタン
上から順に最新の履歴が表示されています。
最大10件まで履歴が表示され、監視結果が正常または異常により表示項目が異なります。
正常 |
異常 |
|
---|---|---|
フォーマット |
{監視時刻} 正常
監視対象ファイル {数}件
|
{監視時刻} 異常
監視対象ファイル {数}件
追加、編集、削除件数 {数}件
追加されたファイル
{ファイル名}
編集されたファイル
{ファイル名}
削除されたファイル
{ファイル名}
|
例 |
2016-10-07 22:45:05 正常
監視対象ファイル 8件
|
2016-10-07 22:46:16 異常
監視対象ファイル 9件
追加、編集、削除件数 3件
追加されたファイル
/var/www/html/.htaccess
編集されたファイル
/var/www/html/index.html
/var/www/html/redirect.php
削除されたファイル
なし
|
また、以下の条件の場合、履歴が追加されます。
・監視比較を行った、最初の結果の場合
・前回の追加・編集・削除ファイルと比較して、ファイル数に変更がある場合(ハッシュ値の比較は行いません。)
・前回の履歴が異常、かつ最新の監視結果が正常だった場合
「ファイル詳細」ボタンをクリックすると、対象監視時刻に監視対象となったファイル名の一覧が表示されます。
「ハッシュ値表示」ボタンをクリックすると、各ファイルのsha1sumハッシュ値が追加で表示されます。
上記画面で確認できる詳細な監視履歴情報は、X-MONのバックアップには含まれません。
16.3. 復旧処理利用の流れ
必要な場合は、予め「特定時点の監視対象ディレクトリ」を監視対象サーバ内の任意の場所へバックアップしておき、
障害検知後にそのバックアップで上書きすることにより元の状態に戻すことができます。
16.3.1. 監視対象サーバでの事前準備
「監視対象サーバでの事前準備」の実施
復旧処理を行う場合も同様に「X-MON SSH公開鍵の登録」「SSHログインユーザへsudoの割り当て」作業が必要です。まだの方は「 監視対象サーバでの事前準備 」を実施してください。
監視登録時に実施済みの場合は、再実行は不要です。引き続き以下の項目を実施してください。
rsyncコマンドのインストール
復旧または同期処理を行う場合、監視対象サーバへrsyncコマンドがインストールされている必要があります。
「マスターディレクトリ(バックアップ保存先)」の準備
本監視では、監視対象サーバ外には復旧用のバックアップを作成できません。
監視対象サーバへSSH接続し、バックアップを取得したい箇所に予めディレクトリを生成しておいてください。
16.3.2. 「マスターディレクトリ」への同期
バックアップ保存先ディレクトリへ、コンテンツを上書き保存することを「マスターディレクトリへの同期」と呼びます。 「マスターディレクトリへの同期」を行うには、「サービスの登録」が済んでいる必要があります。
「OK – 問題ファイル 0 件 前回の監視と比べファイルに変更はありませんでした」と正常に監視が行われている状態で、「監視対象ディレクトリ」に以下のファイルを置いてください。
__renew.txt (先頭に2つアンダーバーを付けます)
監視チェックが動作したタイミングで監視対象ディレクトリに上記ファイルが含まれていると、 X-MONは「監視対象ディレクトリ」以下のディレクトリ及びファイルを、rsyncコマンドを利用して「マスターディレクトリ」へ同期します。
同期処理が実行されると、監視結果に「OK – ディレクトリの同期を行いました」と表示されます。
これで復旧処理を行う準備が整いました。
復旧処理は次章以降に以下の自動・手動復旧手順を記載しております。ご都合の良い方を利用してください。
自動復旧の場合 |
手動復旧の場合 |
|
---|---|---|
方法 |
エスカレーション設定 |
Web改ざん警告管理の復旧ボタン |
メリット |
自動で差し戻るため、改ざんされた場合
すぐにコンテンツの復旧が行える
|
どのファイルが追加・編集・削除
されたか確認可能
|
デメリット |
どのファイルが追加・編集・削除されたか
確認しないまま、差し戻し処理が実行される
|
急ぎ修正を必要とする場合も、ボタンを
押すまで復旧処理が実行されない
|
16.3.3. 自動復旧
16.3.3.1. エスカレーション設定
障害発生直後に自動復旧を行う場合、エスカレーション設定を利用します。
「サービス管理」画面より「サービスエスカレーション設定」ボタンをクリックし「エスカレーション設定」画面へ遷移します。
サービスエスカレーション設定画面が表示されますので、「新規作成」ボタンをクリックします。
設定画面が表示されますので、エスカレーション名称に任意の名称を入力し、新しい条件の追加からエスカレーション条件を入力します。
※エスカレーション対象はデフォルトで遷移元のサービスが選択されているため、操作は不要です。
表示された画面でエスカレーション条件を入力し、「追加」ボタンを押します。
上記の例は、改ざんが起こった際に1度だけ復旧コマンドを実行する設定です。
コマンドは「コマンド実行」より「Webコンテンツ改ざん監視(SSH)コンテンツ復旧」を選択します。
エスカレーション条件を追加した状態です。
「作成」ボタンをクリックするとエスカレーション設定が登録されます。
以上で、エスカレーション登録は完了です。
16.3.4. 手動復旧
どのファイルが追加、変更、削除があったのか確認を行ってから復旧を行う場合、管理画面「Web改ざん警告管理」を利用します。
対象ファイル名や、ファイルsha1sumハッシュ値の確認が行えます。ただし、対象ファイルの内容(どの行がどのように修正されたか)についてはX-MONの画面では確認できません。
障害発生後、以下のページから監視詳細画面へ遷移します。
上記赤枠、「マスターディレクトリから復旧処理を行う」ボタンをクリックすると、確認画面がポップアップします。
確認画面に表示されている注意事項をよく読み、「OK」ボタンをクリックします。
これでマスターディレクトリから監視対象ディレクトリへファイルの差し戻し処理を行います。
無事処理を終えると、以下枠部分に案内が表示されます。
16.4. 場面ごとの対処方法
16.4.1. 除外するディレクトリ・ファイルの指定を調整する場合
「サービスの登録」時点で初めから除外指定を的確に行うことは難しいものがあります。
以下のサイクルを活用し、除外指定の調整を行ってください。
監視しているファイルの一覧を確認する。
正常に監視が行われた後、「Web改ざん警告管理(SSH接続)」画面へ遷移します。
最新の監視結果横に表示されている「ファイル詳細」ボタンをクリックします。
表示されたポップアップウィンドウ内、下枠部分に表示されているファイル一覧が監視対象としてファイルハッシュを取得したものです。
既に監視対象から除外したファイルは表示されません。
除外したいファイルが一覧に表示されている場合、サービスの編集より再度除外設定を行い、管理者メニュー「X-MON再起動」で変更を反映させてください。
「監視履歴削除」ボタンで最新のハッシュと履歴を削除し、監視を初期化する。
以下、赤枠内「監視履歴削除」ボタンをクリックします。
「監視履歴削除」ボタンを利用すると、最新のハッシュ情報(前回の記録)と履歴情報を削除し、監視を初期化します。
履歴情報は、以下枠内の情報を指します。
この項目で実行される「監視履歴削除」は、対象サービスの履歴のみ削除を行います。他サービスとして登録されているWeb改ざん監視(SSH)の履歴は削除されません。
16.4.2. 運用開始後、監視対象領域のファイル追加・編集・削除を行う場合
監視対象サーバにて意図した作業でファイルを更新した場合も、「改ざん」と判定されてしまうと復旧処理でファイルが差し戻る恐れがあります。
以下の手順により、「改ざん」と判定させずにファイルの差し替えを行うことが可能です。
「監視対象ディレクトリ」直下に「__stop.txt」ファイルを設置
「__stop.txt」は空ファイルで結構です。
監視対象サーバでのファイル設置例
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# touch __stop.txt
|
「__stop.txt」が設置されている場合、監視は実行されますが、ファイルハッシュの取得や比較といった監視処理は行いません。
ステータス情報には「OK – コンテンツの更新中です」と表示されます。
コンテンツの更新
必要なコンテンツの更新を行ってください。
「監視対象ディレクトリ」直下に「__renew.txt」ファイルを設置
コンテンツの更新が完了したら、この時点のファイル構成を正として同期処理を行うため「__renew.txt」ファイルを設置します。
こちらも空ファイルで結構です。「__renew.txt」を設置しても「__stop.txt」が存在する限り監視処理が再開されることはありません。
監視対象サーバでのファイル設置例
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# touch __renew.txt
|
「__stop.txt」ファイルの削除
監視再開時は、1.で設置した「__stop.txt」を手動で削除します。
「__renew.txt」ファイルは次回監視チェック後に自動で削除するため、追加の作業は不要です。
サービス設定で「マスターディレクトリ」を指定している場合、マスターディレクトリのデータと前回のハッシュ値を更新後、「__renew.txt」ファイルを削除します。 「マスターディレクトリ」を指定していない場合、前回のハッシュ値を更新後、「__renew.txt」ファイルを削除します。
正しく同期処理が行われると、ステータス情報には「OK – ディレクトリの同期を行いました」と表示されます。
16.4.3. 障害として検知した内容が正しい反映だった場合
前述「運用開始後、監視対象領域のファイル追加・編集・削除を行う場合」を行わず、正しい変更を障害として検知してしまった場合、現在の監視対象をマスターディレクトリへ同期し、ハッシュ結果を更新することができます。
「Web改ざん警告詳細」画面で障害が発生している際に表示される 「マスターディレクトリへ同期処理を行う」ボタンをクリックします。
表示内容をしっかり確認し、問題がなければ「OK」ボタンをクリックしてください。
「OK」ボタンをクリックすると、「マスターディレクトリ」へ同期後、前回のハッシュ結果を現在の情報で更新します。
16.4.4. 「マスターディレクトリ」を変更する場合
既にデータが同期された「マスターディレクトリ」を、別のマスターディレクトリへ変更する場合は、以下の手順で行えます。
一部、監視対象サーバへSSHクライアント等でログインして操作する必要がございます。
※X-MON管理画面から「旧マスターディレクトリに保存されている情報を直接新マスターディレクトリへ移行する」機能は用意されていません。
監視対象サーバで新たなバックアップ用ディレクトリを作成する
X-MON 監視メニュー「ホスト・サービス一覧表示」画面で対象サービスを選択し、詳細画面へ遷移したうえで「操作」から「アクティブチェック」を「無効」にする(監視の一時停止)
X-MON 管理者メニュー「サービスの編集」画面で対象サービス(Webコンテンツ改ざん監視(SSH)を行っているサービス)で新たに作成したディレクトリを指定する
監視対象サーバで、「「マスターディレクトリ」への同期」を参考に__renew.txtファイルを監視ディレクトリへ設置し、新たなマスターディレクトリへ監視ディレクトリのファイルを同期する
X-MON 管理者メニュー「X-MON再起動」で設定変更を反映する
X-MON 監視メニュー「ホスト・サービス一覧表示」画面で対象サービスを選択し、詳細画面へ遷移したうえで「操作」から「アクティブチェック」を「有効」に戻す(監視の再開)
X-MON ステータス情報に「OK – ディレクトリの同期を行いました」と表示されるのを確認する
監視対象サーバで旧マスターディレクトリを削除する