Tripwire でファイルを監視する

Beginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Tripwire を使用してファイルの整合性を監視し、不正なシステム変更を検出する方法を学びます。Debian に Tripwire をインストールし、そのデータベースを構成し、実践的なコマンドライン演習を通じてファイル監視を設定する練習を行います。

この実験では、暗号化キーの生成、ベースラインスナップショットの作成、整合性レポートの分析などの重要な操作をカバーしています。これらの実践的なタスクを通じて、効果的なファイル監視によりシステムセキュリティを維持するために必要なスキルを身につけます。


Skills Graph

Tripwire のインストール

このステップでは、強力なオープンソースのファイル整合性監視ツールである Tripwire をインストールします。Tripwire は、各ファイルのデジタル「指紋」を作成することで、システム管理者が重要なシステムファイルへの不正な変更を検出するのに役立ちます。この指紋には、ファイルサイズ、パーミッション、チェックサムなどの属性が含まれます。

後で Tripwire を実行すると、現在のファイル状態がこれらの保存された指紋と比較されます。何らかの変更が検出された場合(許可されたユーザーによる変更であっても)、Tripwire はアラートを生成します。これは、セキュリティ監視や潜在的なシステム侵害の検出に特に有用です。

LabEx の Debian ベースの仮想マシン (VM) を使用しているため、apt パッケージマネージャーを使用してインストールします。このプロセスは以下の明確な手順で構成されています。

  1. まず、ローカルのパッケージインデックスを更新する必要があります。これにより、利用可能な最新バージョンの Tripwire をインストールできます。

    sudo apt update
  2. 次に、以下のコマンドで Tripwire をインストールします。-y フラグはインストールを自動的に確認します。

    sudo apt install -y tripwire
  3. インストール中に、設定プロンプトが表示されます。両方の質問に対して「Yes」を選択します。

    • 最初の質問は、現在 Tripwire を設定するかどうかを尋ねます。
    • 2 番目の質問は、暗号化キーの生成(Tripwire のデータベースを保護するために使用されます)に関するものです。
  4. インストールが完了したら、インストールされたバージョンを確認することで、すべてが正常に動作したことを検証しましょう。

    tripwire --version

次の例のように、バージョン番号が表示される出力が表示されるはずです。

Tripwire(R) 2.4.3.7

このバージョン確認は、Tripwire が正しくインストールされていることを意味します。次のステップでは、システムファイルの監視を開始するように設定します。インストールプロセスでは、後で使用するポリシーファイルや暗号化キーなどの必要なコンポーネントが自動的に設定されています。

データベースの初期化

このステップでは、ファイル整合性監視のベースラインとして機能する Tripwire のデータベースを初期化します。このデータベースには、監視対象のファイルの暗号化チェックサムと属性が格納されます。これは、Tripwire が後で変更を検出するために比較する、ファイルの現在の状態のスナップショットを撮るようなものです。

始める前に、データベースの初期化には先に作成したポリシーファイルが必要であることを理解することが重要です。このポリシーファイルは、Tripwire にどのファイルやディレクトリを監視するか、どの属性をチェックするかを指示します。

データベースを初期化するには、以下の手順に従います。

  1. まず、編集したテキストバージョンのポリシーファイルから実際のポリシーファイルを生成する必要があります。次のコマンドを実行します。

    sudo twadmin --create-polfile /etc/tripwire/twpol.txt

    インストール時に設定したローカルパスフレーズの入力を求められます。このステップでは、人間が読める形式のポリシーを Tripwire が使用できる形式に変換します。

  2. 次に、次のコマンドで最初のデータベーススナップショットを作成します。

    sudo tripwire --init

    Tripwire がポリシーで指定されたすべてのファイルをスキャンするため、これには少し時間がかかる場合があります。この過程で、監視対象のすべてのファイルのチェックサムを計算し、ファイル属性を記録します。

  3. 初期化中に、次のような警告が表示される場合があります。

    ######## Warning: File system error.
    #### Filename: /proc/XXXX/XXXX
    #### No such file or directory
    #### Continuing...

    これらの /proc ファイルに関する警告は正常なもので、無視して構いません。/proc ディレクトリには頻繁に変化する動的なシステム情報が含まれているため、Tripwire はデフォルトでこれらのファイルをスキップします。

  4. データベースの場所を確認することで、データベースが正常に作成されたことを検証しましょう。

    sudo ls -l /var/lib/tripwire/$(hostname).twd

    データベースファイルがサイズとタイムスタンプとともに表示されるはずです。これにより、Tripwire が比較用のベースラインを正常に作成したことが確認できます。

これで、次のステップでファイルを監視する準備ができました。この最初のデータベースはファイルの「既知の正常な」状態を表していることを忘れないでください。そのため、システムがクリーンで安全な状態のときに作成することが重要です。

監視対象のファイルを追加する

このステップでは、ポリシーファイルを編集することで、Tripwire が監視するファイルをカスタマイズします。Tripwire は、現在のファイルを既知の正常なデータベーススナップショットと比較することで動作するため、追跡するファイルを明示的に指定する必要があります。デフォルトでは、Tripwire は多くの重要なシステムファイルを監視しますが、この実験ではプロジェクトディレクトリ内のファイルを追加することに焦点を当てます。これらのファイルは、最も頻繁に操作するファイルです。

特定のファイルの監視を追加するには、以下の手順に従います。

  1. まず、元のポリシーファイルのバックアップを作成します。これは、編集時に誤った操作をした場合の安全策です。

    sudo cp /etc/tripwire/twpol.txt /etc/tripwire/twpol.txt.bak
  2. シンプルなテキストエディタである nano を使用して、ポリシーファイルを編集用に開きます。これはシステム設定ファイルであるため、sudo を使用します。

    sudo nano /etc/tripwire/twpol.txt
  3. ( rulename = "User Binaries", で始まるセクション(約 200 行目)までスクロールします。ここに新しいルールを追加します。次のブロックは、/home/labex/project ディレクトリ内のすべてを監視する「Lab Project Files」という名前の新しいルールを定義しています。

    (
      rulename = "Lab Project Files",
      severity = $(SIG_HI)
      {
        /home/labex/project - > $(SEC_BIN)
      }
    )
  4. Ctrl+O を押してファイルを保存(write Out)し、Enter キーで確認し、Ctrl+X で nano を終了します。

  5. 次に、変更内容で Tripwire のポリシーを更新する必要があります。twadmin コマンドは、テキスト形式のポリシーファイルを Tripwire が使用できるバイナリ形式にコンパイルします。

    sudo twadmin -m P /etc/tripwire/twpol.txt

    ローカルパスフレーズの入力を求められます。これは、Tripwire のインストール時に設定したパスワードです。

  6. 最後に、新しいファイルを含めるようにデータベースを更新する必要があります。これにより、将来の整合性チェックで比較する新しいベースラインスナップショットが作成されます。

    sudo tripwire --update --database /var/lib/tripwire/$(hostname).twd

これで、Tripwire は ~/project ディレクトリ内のすべてのファイルの変更を監視します。これには、ファイルの変更、削除、またはパーミッションの変更が含まれます。現在のデータベーススナップショットと異なるすべての変更が報告されます。

ファイルの整合性をチェックする

このステップでは、データベース作成以降に監視対象のファイルが変更されていないかを確認するための整合性チェックを実行します。これは、不正な変更を検出するのに役立つ Tripwire の核心機能です。重要なファイルが許可なく変更されていないかを常にチェックする警備員のようなものだと考えてください。

始める前に、整合性チェック中に何が起こるかを理解しましょう。

  1. Tripwire は、監視対象として設定されたすべてのファイルをスキャンします。
  2. 各ファイルの現在の状態を、データベースに保存されている元のスナップショットと比較します。
  3. 差分(追加、削除、または変更)はすべてレポートに記録されます。

ファイルの整合性をチェックするには、以下の手順に従います。

  1. まず、Tripwire が監視するプロジェクトディレクトリにテストファイルを作成します。これにより、Tripwire が新しいファイルをどのように検出するかを確認できます。

    touch ~/project/test_file.txt
  2. 次に、整合性チェックコマンドを実行します。Tripwire がすべてのシステムファイルにアクセスするには root 権限が必要なため、sudo を使用します。

    sudo tripwire --check
  3. Tripwire がいくつかのフェーズを経るため、スキャンには数分かかる場合があります。次のような出力が表示されます。

    #### Phase 1: Reading configuration file
    #### Phase 2: Generating file list
    #### Phase 3: Creating file information database
    #### Phase 4: Searching for inconsistencies
    #### Phase 5: Generating report
  4. Tripwire は、検出された変更を示すレポートを生成します。新しいファイルを作成したばかりなので、出力に次のようなエントリが表示され、Tripwire が新しいファイルを検出したことを示します。

    Added:
    "/home/labex/project/test_file.txt"
  5. 完全なレポートを表示するには、Tripwire のレポートディレクトリに保存されている最新のレポートファイルを確認する必要があります。このコマンドは、レポートを時間順に並べ、最新のものを最初に表示します。

    sudo ls -lt /var/lib/tripwire/report/ | head -n 2

    出力から最新のレポートファイル名を確認してください(labex-hostname-YYYYMMDD-HHMMSS.twr のような形式になります)。

整合性チェックは正常に完了しました。Tripwire はすべての監視対象ファイルをスキャンし、変更内容をレポートに記録しました。次のステップでは、レポートを詳細に調べ、その結果をどのように解釈するかを理解します。

整合性レポートを表示する

この最後のステップでは、整合性チェックから生成された Tripwire レポートを調べます。このレポートは、基本的に現在のシステムファイルと以前に作成したベースラインデータベースとの詳細な比較です。このレポートを理解することは、前回のチェック以降にどのファイルが追加、削除、または変更されたかを正確に示すため、非常に重要です。

手順を一歩一歩見ていきましょう。

  1. まず、最新のレポートファイルを見つける必要があります。Tripwire はレポートを特定のディレクトリに保存し、ファイル名にタイムスタンプが含まれています。

    sudo ls -lt /var/lib/tripwire/report/ | head -n 2

    ls -lt コマンドは、変更時刻順(最新のものが最初)にファイルをリストし、head -n 2 は最初の 2 行(ヘッダーと最新のファイル)のみを表示します。your-hostname-YYYYMMDD-HHMMSS.twr のようなファイル名を探してください。

  2. 次に、Tripwire の組み込みレポートビューアを使用して内容を調べます。--report-level 4 オプションを使用すると、最も詳細な表示が得られます。

    sudo twprint --print-report --report-level 4 --twrfile /var/lib/tripwire/report/[REPORT_FILENAME]

    [REPORT_FILENAME] を手順 1 で見つけた実際のファイル名に置き換えることを忘れないでください。

  3. 完全なレポートには、何が変更されたかを理解するのに役立ついくつかの重要なセクションが含まれています。

    • 追加されたファイル:元のベースラインに含まれていなかった新しいファイルです。
    • 削除されたファイル:ベースラインに含まれていたが、現在は存在しないファイルです。
    • 変更されたファイル:内容または属性が変更された既存のファイルです。
    • エラー概要:チェック中に遭遇した問題です。
  4. 詳細をすべて見ることなく、変更の概要をすぐに見たい場合は、レポートをフィルタリングできます。

    sudo twprint --print-report --report-level 4 --twrfile /var/lib/tripwire/report/[REPORT_FILENAME] | grep -A 10 "Report Summary"

    grep -A 10 コマンドは、「Report Summary」行とその後の 10 行のコンテキストを表示します。

  5. 典型的な概要出力は次のようになります。

    Report Summary:
    --------------------------------------------------------------------------
    Added objects:   1
    Removed objects: 0
    Modified objects: 0

    これにより、追加、削除、または変更されたファイルの数が一目でわかります。

  6. レポートの確認が終了したら、ターミナルがページャーを使用している場合は q を押して終了するか、出力が終了するのを待つだけです。

まとめ

この実験では、Debian システム上で Tripwire を使用したファイル整合性監視の実装方法を学びました。このプロセスには、Tripwire のインストール、環境の設定、ファイル整合性の基準となるベースラインデータベースの初期化が含まれていました。

ポリシーファイルの生成、システムのスキャン、Tripwire の変更検出メカニズムの理解などの重要な操作を探索しました。この実験では、初期化中に予想される警告にも対処しながら、効果的な監視フレームワークの構築に焦点を当てました。