動画・自由研究
[セキュリティ講座]

Tripwireで改ざん検知(σ´∀`)σ  ※KUSANAGIコマンド編

動画・自由研究
テクニカルサポート

#CloudGarage Advent Calendar 2018 、8日目の記事です。

————————————————————————————
※この記事はプライム・ストラテジー株式会社運営「KUSANAGI MAGAZINE」へCloudGarageテクニカルサポートより寄稿しました内容を一部リライトして転載しております。
————————————————————————————

CloudGarageテクニカルサポートの遠藤と申します。
よろしくお願いいたします。

2018.9月のKUSANAGI バージョンアップにて実装されたセキュリティ対策用アプリケーションに関する記事となります。

今回は『Open Source Tripwire (IDS)』について触れてみますが、詳細なIDSとは!の解説はしないので、ファイル更新があったら通知する仕組みとここではざっくりな表現とさせていただきます(*´¬`)

弊社サービスを利用のお客様で実際にあったものとしては脆弱性があるCMSやプラグインを利用していたため、その脆弱性経由で不正スクリプトが設置され、不特定多数にスパムメール送信が行われていました。
Tripwireを導入した場合、意図しないファイル(スクリプト)が設置されたことに早い段階で気づけるようになるかも。

1.KUSANAGIコマンドでTripwireを有効にする

上述のバージョン以降、 # kusanagi addon install tripwire と実行することでインストール可能です。
インストールの過程で何度もパスフレーズの設定(入力)を求められますが、運用時にも入力することが多々あるものなので、適当に入力して忘れてしまった、となりませんように。

# kusanagi addon install tripwire

----------------------------------------------
The Tripwire site and local passphrases are used to sign a variety of
files, such as the configuration, policy, and database files.

Passphrases should be at least 8 characters in length and contain both
letters and numbers.

See the Tripwire manual for more information.

----------------------------------------------
Creating key files...

(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)

Enter the site keyfile passphrase:
Verify the site keyfile passphrase:
Generating key (this may take several minutes)...Key generation complete.

(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)

Enter the local keyfile passphrase:
~~以下省略~~

2.Tripwireの設定を調整する

設定ファイルは /etc/tripwire/以下に作成されます。
Tripwireの不正検知はファイルやディレクトリ情報を記録したデータベースを作り、そのデータベースと比較して更新や削除、追加が行われたらアラートを出すものです。

管理者はそのアラートを見て意図して設置されているファイルなのか、または消されてしまったファイルなのかなど判断する運用となります。

基となるデータベースはサンプルファイルとして用意されている /etc/tripwire/twpol.txt を基に編集すると良いでしょう。

twpol.txt の中身はディレクトリ毎にセクションを分け、細かい設定が可能になっています。
(特定のディレクトリやファイルは検知対象外とする、このディレクトリの検知は指定したメールアドレスにアラートを通知する、などもこのファイルで編集します)

169行目付近の記述を例にすると次のように記述されていますが、これは /(root)直下、/home以下、/etc以下に対しての設定です。

 169 (
 170 rulename = "Invariant Directories",
 171 severity = $(SIG_MED)
 173 )
 174 {
 175 / -> $(SEC_INVARIANT) (recurse = 0) ;
 176 /home -> $(SEC_INVARIANT) (recurse = 0) ;
 177
 178 /etc -> $(SEC_INVARIANT) (recurse = 0) ;
 179
 180 }

KUSANAGIの場合は/home/kusanagi/<<プロファイル名>>/ にプロファイル毎のディレクトリが作成されますが、
例えばこの領域へのファイル作成を検知させる場合、次のように記述を変更します(ついでにメール通知も有効にします)。

※メール通知をするにはemailto = の形式で severity の下に書きます。severityの文末に ; も追加します。
※ recurse = 0 のものは検知対象外です。 /home/kusanagi の行を追加し、その行を -1 とすることで /home/kusanagi以下は検知対象となります。

  (
  rulename = "Invariant Directories",
  severity = $(SIG_MED);
  emailto = *****@example.com 
  )
  {
  / -> $(SEC_INVARIANT) (recurse = 0) ;
  /home -> $(SEC_INVARIANT) (recurse = 0) ;
  /etc -> $(SEC_INVARIANT) (recurse = 0) ;
 /home/kusanagi -> $(SEC_INVARIANT) (recurse = -1) ;
  }

実際にこの設定で運用するとプロファイル以下のlogファイルの更新も検知しますので実用的ではないのですが、ここでは分かりやすい例としてこのディレクトリで設定しました。

ポリシーファイルの編集が終わったら暗号化をしておきましょう。

# twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt

3.データベースやポリシーファイルの作成・更新をする

調整したポリシーファイルに沿ってデータベースを作成するには次のコマンドで行います。

#  /usr/sbin/tripwire --init

また、検知後にデータベースを更新しないと毎回検知した時にレポート内容に同じ変化ファイル(ディレクトリ)情報が通知されるため、検知内容に問題が無かったり処置が終わったらデータベースを最新に更新するため、再度初期化するかレポートファイルを基にデータベースを更新してください。

ポリシーファイルを更新する場合は次のコマンドで行います。

# tripwire --Update-policy -Z Low /etc/tripwire/twpol.txt

4.ファイル検知動作チェック

設定した検知対象ディレクトリに適当なファイルを設置してみましょう。

# touch /home/kusanagi/<<プロファイル>>/testfile

ファイルを設置したら検知するか次のコマンドでチェックさせます。 -Mはメール送信に利用します。

# tripwire -m c -c /etc/tripwire/tw.cfg -M

なお、画面上のコマンド結果(レポート)とメールで通知されるレポート内容は異なります。

これは2.の設定でしたメール送信は特定ディレクトリに関する設定のため、
メールに記述される検知ファイルも設定したものに対しての通知となります。

次のような内容を含んだメールが届き、testfileがadd(追加)されたことのレポートとなっています。

-------------------------------------------------------------------------------
Rule Name: Invariant Directories (/home/kusanagi)
Severity Level: 66
-------------------------------------------------------------------------------
 ----------------------------------------
 Added Objects: 1
 ----------------------------------------

Added object name: /home/kusanagi/<<プロファイル>>/testfile

 

エンタープライズ版のTripwireではリアルタイム検知にも対応しているようですが、、、通常版はcronで定期的にチェックやデータベース更新を行うよう作りこむと実用的になります(ノω`*)


以上、テクニカルサポートからのブログ投稿でした。
最後までお読みいただき、ありがとうございました━━━━ヾ(´ー`)ノ゙━━━━!!

この記事を書いた人

テクニカルサポート

テクニカルサポートを得意とするCloudGarage、エクスクラウドのサポートスタッフ。

この記事のタグ

オススメの記事

この記事を読んだ人にオススメのサービス

CloudGarage

エンタープライズに最適!KUSANAGI搭載の超高速サーバーだからSEO対策にも強く、スマートフォンでも爆速!スケールアウトも楽々。負荷分散や開発環境構築にも最適。安心の定額制。

ページトップへ