すべてのシステム管理者は、システムへの侵入によって時々スリープを失います。自分が担当するサーバーが危険にさらされることを誰も望んでいません。問題は、ログを定期的に確認しても、真に効果的なシステム侵入によって明らかなログが残らないことです。これにより、システムが安全であるかどうかを明確に知ることが困難になります。
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セキュリティとコンプライアンスのチェックリストを確認してください。 ]