GNU/Linux >> Linux の 問題 >  >> Linux

Tripwireを使用したLinuxでのセキュリティ監視

すべてのシステム管理者は、システムへの侵入によって時々スリープを失います。自分が担当するサーバーが危険にさらされることを誰も望んでいません。問題は、ログを定期的に確認しても、真に効果的なシステム侵入によって明らかなログが残らないことです。これにより、システムが安全であるかどうかを明確に知ることが困難になります。

SELinuxを強制に設定することに加えて 定期的な侵入テストを実装することで、システムのセキュリティ違反を監視する最良の方法の1つは、システムのセキュリティ違反を監視することです。それが口で言うほど簡単ではないようであれば、Tripwireを試す必要があります。 Tripwireは、システム上の重要なファイルへの変更を監視するファイル整合性監視ツールです。この記事では、Tripwireをネットワークにインストール、セットアップ、および使用する方法について説明します。

Tripwireは、会社であり、オープンソースのコードベースでもあります。 Tripwireからモニタリングを購入するか、GitHubで利用できるようにしたGPLv2コードを使用できます。通常のトレードオフが適用されます。あなたがそれを支払うならば、Tripwireはあなたのためにほとんどの大変な仕事をします、そしてあなたがしなければならないのはレポートに注意を払うことだけです。 Tripwireを自分で実装する場合は、自分でセットアップして構成することができます。

インストール

TripwireをRHELまたはCentOSにインストールするには、Enterprise Linux(EPEL)リポジトリ用の追加パッケージを追加する必要があります。 RHEL 8では、codeready-builderを有効にする必要があります subscription-managerのオプション :

$ sudo repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"

CentOSでは、PowerToolsを有効にする必要があります :

$ sudo dnf config-manager --set-enabled PowerTools

インストールするには:

$ sudo dnf install -y epel-release

EPELがリポジトリリストに追加されたら、Tripwireをインストールします :

$ sudo dnf install -y tripwire

ホスト名の設定

Tripwireを構成する前に、サーバーにホスト名がない場合は、サーバーのホスト名を設定する必要があります。ホスト名はよく混乱するので、ホスト名の設定に関する私の記事を読んで、設定内容を明確にしてください。 CentOS、RHEL、およびFedoraでは、hostnamectlを使用してホスト名を設定できます。 :

$ sudo hostnamectl set-hostname --pretty "Rockhopper tripwire demo machine"
$ sudo hostnamectl set-hostname --static rockhopper

キーの生成

次に、Tripwireの暗号化キーを生成する必要があります。結局のところ、Tripwireのポイントは、攻撃者が自分のトラックをカバーするのを防ぐことであるため、Tripwireデータは強力に暗号化する必要があります。

まず、twadminを使用してローカルキーを作成します ツール:

$ sudo twadmin --generate-keys --local-keyfile /etc/tripwire/$(hostname)-local.key

次に、サイトキーを作成します:

$ sudo twadmin --generate-keys --site-keyfile /etc/tripwire/site.key

どちらの場合も、キーごとにパスフレーズを指定する必要があります。これらのパスフレーズは非公開で安全に保管してください!

Tripwireは、暗号化に2つの異なるキーを使用します。各サーバーに固有のローカルキーと、組織内のすべてのシステムで使用できるサイトキーです。サイトキーは、ITマネージャーが組織の単一のセキュリティポリシーを指示できるため重要な機能です。サイトキーは一元的に更新され、サイトキーで署名されてから、Ansibleまたはscpで配布されます。 すべてのサーバーで使用します。ただし、各サーバー管理者は引き続き一意のローカルキーを持っているため、セキュリティポリシーファイルを変更できなくても、Tripwireにアクセスして更新やレポートを入手できます。

Tripwire構成ファイル

次に、Tripwireの基本構成ファイルを作成する必要があります。構成のデフォルトのほとんどは受け入れ可能であり、何も必要ありません /etc/tripwire/twcfg.txtで提供されている設定ファイルの例に表示されているものとシステムが大幅に異なることがわかっている場合を除き、変更する必要があります。 。デフォルトでは、Tripwireはsendmailを使用します アラートをメールで送信します。ただし、postfixを使用している場合は、変更する必要はありません。postfix sendmailを提供します エイリアス。構成ファイルには、暗号化キーとポリシーファイルの場所も定義されているため、それらが正しいことを確認してください。

構成オプションに満足したら、twadminを使用します 設定テキストを検証し、/etc/tripwire/tw.cfgというファイルに書き出します。 、サイトキーで署名されています。構成ファイルに署名するには、サイトキーへのパスフレーズが必要です。

$ sudo twadmin --create-cfgfile --site-keyfile=/etc/tripwire/site.key /etc/tripwire/twcfg.txt
Please enter your site passphrase:
Wrote configuration file: /etc/tripwire/tw.cfg

ポリシーファイルの構文

ポリシーファイルは、Tripwireのほとんどの作業を行う場所です。 Tripwireポリシーは、監視するファイルと無視するファイル、およびその中間にあるファイルを指定します。両方の極端は等しく重要です。毎日のTripwireレポートが、就業時間中に変更されるすべてのユーザーファイルに対して誤検知を送信する場合、Tripwireレポートを完全に無視することをすぐに学ぶことができます。

TripwireのEPELインストールにバンドルされているサンプルポリシーファイルは、Fedoraワークステーションのフルインストールを中心に構築されています。 Fedora Workstationのフルインストールを実行している場合を除いて、システムに合わせてカスタマイズする必要がありますが、それを読むと、標準のポリシーファイルに何が含まれているかがわかります。 Tripwire表記をデコードするには、twpolicy(4)を確認してください。 マニュアルページ。

ポリシーファイルは複雑になる可能性があり、Sassのように考えると役立つ場合があります。 またはMakefile 構成ファイルより。 variablesを作成できます 、またはいくつかのデフォルトのものを使用し、rules 、さらにはconditionals Tripwireが個々のディレクトリとファイルをどのように扱うかを管理するため。

たとえば、ReadOnly 変数は、読み取り専用を意図したファイルのルールを定義します。このコンテキストでは、「読み取り専用」は、ファイルのアクセス許可がr--に設定されていることを意味するものではありません。 (つまり、400 )。ただし、Tripwireの初期化時から日次レポート、または日常のレポートへの変更は通常予想されません。

ルールは、セミコロン(;)で終わる行として構成されます。 )および矢印で区切られます(-> )。このコードブロックは、Tripwire実行可能ファイルをReadOnlyに設定します :

/sbin/siggen    ->   $(ReadOnly);
/sbin/tripwire  ->   $(ReadOnly);
/sbin/twadmin   ->   $(ReadOnly);
/sbin/twprint   ->   $(ReadOnly);

Fedoraのサンプルファイルは、変数を使用してほとんどのルールを定義しています。例:

SEC_BIN = $(ReadOnly) ;  # Binaries that should not change

したがって、Tripwireバイナリを監視するためのエントリは次のとおりです。

/sbin/siggen    ->   $(SEC_BIN);
/sbin/tripwire  ->   $(SEC_BIN);
/sbin/twadmin   ->   $(SEC_BIN);
/sbin/twprint   ->   $(SEC_BIN);

2つの例はまったく同じ目的を果たし、実装はまったく異なります。

サンプルポリシーファイルを開始点として使用し、システムを監視するためのポリシーを作成します。

ポリシーファイルの生成

テスト専用に、この行をTripwireデータファイルに追加します。 セクション:

/etc/tripwire/secrets -> $(SEC_CRIT); # proof of concept

クリティカルを作成する secretsという名前のテストファイル :

$ sudo touch /etc/tripwire/secrets

twadminを使用してポリシーファイルを生成します :

$ sudo twadmin --create-polfile \
--site-keyfile=/etc/tripwire/site.key \
/etc/tripwire/twpol.txt

プロンプトが表示されたら、サイトキーのパスフレーズを入力します。

これにより、署名および暗号化されたファイル/etc/tripwire/tw.polが作成されます。 。

Tripwireの初期化

キーが生成され、構成セットが設定され、ポリシーファイルが配置されたら、Tripwireを初期化できます。

$ sudo tripwire --init

ローカルを入力してください プロンプトが表示されたらキーパスフレーズ。

警告が表示された場合は、それらを注意深く読み、ポリシーファイルの誤ったエントリを修正してください。ポリシーファイルを最初に試行する場合、特に既存のポリシーファイルに基づいている場合は、システムに実際には存在しないファイルを参照することは珍しくありません。これに対処するには、不足しているファイルをインストールするか、/etc/tripwire/twpol.txtからそれらのファイルへの参照を削除します。 マスターファイル。

変更が必要な場合は、ポリシーファイルを再生成して更新してから、データベースを再初期化します。

$ sudo twadmin --create-polfile \
--site-keyfile=/etc/tripwire/site.key \
/etc/tripwire/twpol.txt
$ sudo tripwire --init

良い出発点に到達するまでこれを行う必要があります。正常な開始データベースを取得したら、データベースを再初期化するのではなく、代わりにtripwireを使用してください。 システムの整合性をチェックし、オプションで、許容可能な差異を--interactiveでオーバーライドするコマンド オプション:

$ sudo tripwire --check --interactive

レポートの表示

TripwireのEPELインストールは、cronを作成します Tripwireレポートを実行し、レポートをrootに電子メールで送信するジョブ 。手動レポートを実行することもできます:

$ sudo tripwire --check

このコマンドは、レポートファイルを/var/lib/tripwire/reportsに保存します。 (または構成ファイルで設定した場所)。このファイルを表示するには、twprintを使用します コマンド:

$ sudo twprint --print-report --report-level 1 \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-163425.twr

エラーのあるレポートを表示するには、secretsを変更します ファイルをテストしてレポートを実行します:

$ sudo echo 1 > /etc/tripwire/secrets
$ sudo tripwire --check

次に、レポートを表示します:

$ sudo twprint --print-report --report-level 1 \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-164413.twr
Added: "/var/lib/tripwire/rockhopper.twd.bak
Modified: "/etc/tripwire/secrets"

テストファイルの変更に満足している場合は、Tripwireのデータベースを更新できます。

$ sudo tripwire --update \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-164413.twr

システムを保護する

Tripwireは、非常に正確で非常に慎重なセキュリティモニターです。侵入者の兆候がないかログを解析するのに苦労するのをやめ、Tripwireを機能させます。 Tripwireを使用すると、システムで何かが変更されたときに、それについて知ることができ、それに応じて対処することができます。

[セキュリティについてもっと知りたいですか? ITセキュリティとコンプライアンスのチェックリストを確認してください。 ]


Linux
  1. エンタープライズLinuxでのセキュリティ監査の存続

  2. Linuxのセキュリティ:fail2banでシステムを保護する

  3. Linuxのセキュリティとユーザビリティのバランス

  1. Linuxでパスフレーズを使用してファイルを暗号化および復号化する

  2. LynisでLinuxセキュリティをスキャンする

  3. Linuxのセキュリティ:ブール値を使用したSELinuxポリシーの操作

  1. Linuxサーバーのセキュリティを開始するための5つのヒント

  2. LinuxでSSHを使い始める

  3. Osqueryを使用してLinuxサーバーのセキュリティを監視する方法