Tripwireを使用してUbuntu VPSサーバの侵入を検出する方法


紹介する
ネットワーク・サーバを管理する場合、サーバのセキュリティは非常に複雑な問題です.ファイアウォールを構成したり、ログ・ポリシーを設定したり、セキュリティ・サービスを購入したり、アプリケーションをロックしたりすることができますが、侵入を阻止するには十分ではありません.HIDSはあなたのコンピュータのファイルシステムと構成を収集することができて、これらの情報を保存してシステムの現在の運行状態を参考にして判断します.既知の安全な状態と現在の状態の間に変更が発生した場合、安全ではない可能性があります.Linuxの次の流行のHIDSはTripwireです.このソフトウェアは、不正な変更が発生したかどうかを検出するために、多くの異なるファイルシステムデータを追跡することができます.本稿では、Ubuntu 12.04にTripwireをインストールおよび構成する方法について説明します.IDSの特性上、作成サーバの直後にIDSを実行して、ファイルシステムに問題がないと判断できるようにすることが望ましい.
Tripwireのインストール
幸いなことに、TripwireはすでにUbuntuのデフォルトリポジトリにあります.apt-getを使用してTripwireをインストールできます.
sudo apt-get update
sudo apt-get install tripwire

必要なかなりのパケット依存構成を経て実行できます.まず、プッシュ依存のメールアプリケーションを構成します.Eメール通知を構成する場合は、インターネットSiteを選択します.インストール中にパスワードを構成するかどうかを尋ね、これらのプロンプトに対してyesを選択します.プロファイルを再生成するかどうかを尋ね、yesを選択します.ポリシーファイルと同様にyesを選択します.次にsite keyを入力するように要求されます.Tripwireは2つの鍵を使用してプロファイルのセキュリティを確保します.Site keyという鍵はプロファイルのセキュリティを確保するために使用されます.プロファイルが変更されていないことを確認する必要があります.これは、監視システム全体の結果が信頼できるかどうかを直接招きます.同じプロファイルは異なるサーバで使用でき、site keyは異なるサーバで使用できます.Local keyこの鍵は、ユーザーが実行を許可していることを確認するために使用されます.まずsite keyとlocal keyを入力し、強いパスワードを使うことをお勧めします.
データベースの初期化
インストールが完了したら、データベースを初期化する必要があります.ほとんどのセキュリティプログラムのようにtripwireにはデフォルトの構成があります.自分のルールをカスタマイズする必要があるかもしれませんが、デフォルト設定を変更します.まず、インストール時にポリシーを作成することを選択していない場合は、Sudo twadmin –create-polfile /etc/tripwire/twpol/txtで構成時に入力したsite keyを指定して実行する必要があります.これは、指定したディレクトリ(/etc/tripwire)で、純粋なテキストファイルに基づいて暗号化されたポリシーファイルを作成します.Tripwireの実行時にこのファイルがチェックされます.Tripwireのデータベースを初期化してシステムを確認できます.今回は、ポリシーファイルで特に指定したキーのみをチェックします.このポリシーファイルは私たちのシステムのためにカスタマイズされていないため、多くの警告とエラーが表示されます.これらのエラーをプロファイルを調整する際の参考にします.データベースを初期化する基本的な方法は、Sudo tripwire –initです.これにより、データベースファイルが作成され、構成を調整するときに参照しなければならないエラーも作成されます.構成後の結果を保存するには、tripwire構成ディレクトリの下にあるファイルに保存します.checkを実行し、tripwire構成ディレクトリのtest_にファイルリストを格納できます.resultsファイルにあります.sh -c 'tripwire --check | grep Filename > test_results'もし私たちがこれらのファイルを見たら、私たちはこのようにすることができます.
Less /etc/tripwire/test_results
Filename: /etc/rc.boot
Filename: /root/mail
Filename: /root/Mail
Filename: /root/.xsession-errors
. . .

自分のシステムに適したポリシーファイルを構成
tripwireでは監視できないファイルのリストがあり、ポリシーファイルを構成することで削除できます.エディタでroot権限で純粋なテキストファイルを開きます:Sudo nano /etc/tripwire/twpol.txt test_で検索します.resultsのファイルは、あなたが見つけた一致するすべての行を注釈します.「Boot Script」セクションでは、/etc/rcを注釈する必要があります.bootという行は、Ubuntuシステムには存在しないためです.
(
  rulename = "Boot Scripts",
  severity = $(SIG_HI)
)
{
        /etc/init.d             -> $(SEC_BIN) ;
        #/etc/rc.boot            -> $(SEC_BIN) ;
        /etc/rcS.d              -> $(SEC_BIN) ;

多くのファイルは/rootディレクトリの下にあります.これは私のシステムで注釈されるべきで、あなたのシステムにないものはすべて注釈されるべきです.
(
  rulename = "Root config files",
  severity = 100
)
{
        /root -> $(SEC_CRIT) ; # Catch all additions to /root
        #/root/mail -> $(SEC_CONFIG) ;
        #/root/Mail -> $(SEC_CONFIG) ;
        #/root/.xsession-errors -> $(SEC_CONFIG) ;
        #/root/.xauth -> $(SEC_CONFIG) ;
        #/root/.tcshrc -> $(SEC_CONFIG) ;
        #/root/.sawfish -> $(SEC_CONFIG) ;
        #/root/.pinerc -> $(SEC_CONFIG) ;
        #/root/.mc -> $(SEC_CONFIG) ;
        #/root/.gnome_private -> $(SEC_CONFIG) ;
        #/root/.gnome-desktop -> $(SEC_CONFIG) ;
        #/root/.gnome -> $(SEC_CONFIG) ;
        #/root/.esd_auth -> $(SEC_CONFIG) ;
        #/root/.elm -> $(SEC_CONFIG) ;
        #/root/.cshrc -> $(SEC_CONFIG) ;
        /root/.bashrc -> $(SEC_CONFIG) ;
        #/root/.bash_profile -> $(SEC_CONFIG) ;
        #/root/.bash_logout -> $(SEC_CONFIG) ;
        /root/.bash_history -> $(SEC_CONFIG) ;
        #/root/.amandahosts -> $(SEC_CONFIG) ;
        #/root/.addressbook.lu -> $(SEC_CONFIG) ;
        #/root/.addressbook -> $(SEC_CONFIG) ;
        #/root/.Xresources -> $(SEC_CONFIG) ;
        #/root/.Xauthority -> $(SEC_CONFIG) -i ; # Changes Inode number on login
        #/root/.ICEauthority -> $(SEC_CONFIG) ;
}

チェックすべき最後の部分は、/procファイルシステムでエラーが発生したファイル記述子です.これらのファイルは常に変更され、プロファイルから削除しないと、定期的にエラーが発生します.「Devices&Kernel information」では、チェックする/procファイルシステムチェックのリストが表示されます.
(
  rulename = "Devices & Kernel information",
  severity = $(SIG_HI),
)
{
        /dev            -> $(Device) ;
        /proc           -> $(Device) ;
}

しかし、ディレクトリの下の各ファイルをチェックすることは望ましくありません./procの下のすべてのディレクトリ構成にチェックする必要はありません.
{
        /dev                    -> $(Device) ;
        #/proc                  -> $(Device) ;
        /proc/devices           -> $(Device) ;
        /proc/net               -> $(Device) ;
        /proc/tty               -> $(Device) ;
        /proc/sys               -> $(Device) ;
        /proc/cpuinfo           -> $(Device) ;
        /proc/modules           -> $(Device) ;
        /proc/mounts            -> $(Device) ;
        /proc/dma               -> $(Device) ;
        /proc/filesystems       -> $(Device) ;
        /proc/interrupts        -> $(Device) ;
        /proc/ioports           -> $(Device) ;
        /proc/scsi              -> $(Device) ;
        /proc/kcore             -> $(Device) ;
        /proc/self              -> $(Device) ;
        /proc/kmsg              -> $(Device) ;
        /proc/stat              -> $(Device) ;
        /proc/loadavg           -> $(Device) ;
        /proc/uptime            -> $(Device) ;
        /proc/locks             -> $(Device) ;
        /proc/meminfo           -> $(Device) ;
        /proc/misc              -> $(Device) ;
}

私たちがファイルのこの部分にいるとき、私たちも/dev/ptsファイルシステムについて何かをしたいと思っています.Tripwireはデフォルトではこのディレクトリをチェックしません.tripwireもこのディレクトリをチェックするために、明示的に指定できます.
{
        /dev                    -> $(Device) ;
        /dev/pts                -> $(Device) ;
        #/proc                  -> $(Device) ;
        /proc/devices           -> $(Device) ;
        /proc/net               -> $(Device) ;
        /proc/tty               -> $(Device) ;
        . . .

最後に、/var/runと/var/lockの行を注釈し、システムの正常なサービス変更によってタグが生成されないようにします.
(
  rulename = "System boot changes",
  severity = $(SIG_HI)
)
{
        #/var/lock              -> $(SEC_CONFIG) ;
        #/var/run               -> $(SEC_CONFIG) ; # daemon PIDs
        /var/log                -> $(SEC_CONFIG) ;
}

これらの編集が完了したら、ファイルを保存して閉じます.プロファイルが変更されました.tripwireが読み取り可能になるように暗号化されたポリシーファイルを再作成する必要があります.sudo twadmin -m P /etc/tripwire/twpol.txtが作成された後、データベースを再初期化してポリシーを実行する必要があります.sudo tripwire –initの前に警告された警告はもうありません.警告がある場合は/etc/tripwire/twpolを編集します.txtファイルは警告が完全に消えるまで表示されます.
構成の検証
データベースの初期化にエラーがなければ、プロファイルはシステムと一致します.しかし、tripwireにエラーがないかどうかを確認するためにCheckを実行する必要があります.基本的な文法チェック:sudo tripwire --check画面に出力レポートがカスタマイズされているのを見て、システムにエラーがないことを指摘する必要があります.完了すると、構成が正しいと確信できます.私たちはシステムから機密情報を整理しなければなりません.前に作成したtestを削除する必要があります.results:Sudo rm /etc/tripwire/test_resultsもう一つ必要なことは、純粋なテキストのプロファイルを削除することです.私たちはパスワードを暗号化して、安全を確保することができます.単純なテキストファイルを暗号化してからtwadminに渡して実行する必要があります.同様に、暗号化されたバージョンも生成します.私たちはパイプを通じて再び純粋なテキストファイルにすることができます:Sudo sh –c ‘twadmin –print-polfile > /etc/tripwire/twpol.txt’今彼をバックアップ位置に移動して、それを再作成します
sudo mv /etc/tripwire/twpol.txt /etc/tripwire/twpol.txt.bak
sudo sh -c 'twadmin --print-polfile > /etc/tripwire/twpol.txt'

正常に実行されると、純粋なテキストファイルを安全に削除できます.
sudo rm /etc/tripwire/twpol.txt
sudo rm /etc/tripwire/twpol.txt.bak

メールアラートの設定
Tripwireは毎日自動的に実行され、自動的に通知されるように構成されています.実行時にシステムが変更された場合は、データベースをアップグレードする必要があります.私たちはmailコマンドを使用して、私たちの電子メールアドレスに通知を送信します.私たちのシステムにはしばらくインストールされていません.ストレージウェアハウスからダウンロードする必要があります.これはtripwireを通じてシステムがどのような変更をしたかを確認する良い機会を与えます.インストールは次のとおりです.Sudo apt-get install mailutilsインストールが完了しました.レポートを送信できるかどうかをテストしましょう.このレポートは警告と変更を同時に送信します.新しいソフトウェアをインストールするときはtripwireに通知する必要はありません.Sudo tripwire --check | mail –s “Tripwire report for ‘uname –n’” [email protected]すぐにメールボックスにソフトウェアをインストールしたばかりの詳細についてのレポートが届きます.これは、Tripwireがファイルシステムの変更をメールで送信できることを示しています.sudo tripwire --check --interactiveは通常と同じ実行テストですが、最後に画面に出力されるのではなく、デフォルトのエディタでテキストファイルを生成して開きます.このレポートには、各ファイルの変更の詳細がすべて含まれます.実際、私の機械では、報告書は通常2275行ほど長いです.その中の多くの情報はセキュリティ問題の解決に非常に役立ちますが、私たちにとって、私たちはほとんど興味を持っていません.最も重要な部分はすべて上部にあり、いくつかの紹介情報の後、追加または変更を示すチェックボックスが表示されます.これらのチェックボックスは、変更を完了するためにデータベースを更新する必要があることを示します.それぞれのバンドを検索する必要があります×のチェックボックスをオンにして、これらの変更があなたの同意を得たかどうかを確認します.これらの変更を認めない場合は、×削除します.データベースのファイルは更新されません.これにより、tripwireは次回のレポート時にこのタグを報告します.どのファイルを変更する必要があるかを決定したら、このファイルを保存して閉じます.これにより、tripwireがデータベースファイルを更新できるようにlocal keyを入力する必要があります.これらの変更を受け入れてからコマンドを再実行すると、レポートはさらに短くなります.
CronでTripwireを自動化
これらの機能を手動で実行することができ、tripwireが毎朝チェックを実行できるようにタイミングタスクを設定することもできます.システムのタイミングタスクを編集するには、システム更新を含まなくてもよいので、rootのタイミングタスクを使用します.rootにタイミングタスクが存在するかどうかを確認するには、次のコマンドを指定します.sudo crontab -lタイミングタスクが存在する場合は、このタスクをパイプでバックアップする必要があります.sudo sh -c 'crontab -l > crontab.bad'の後、このタイミングタスクを編集できます.sudo crontab -eタイミングタスクを初めて実行する場合は、どのエディタで開くかを尋ねます.慣れたエディタがなければnanoもいい選択です.ファイルを開くと、自動化されたTripwireをカスタマイズできます.tripwireを毎日実行するだけなので、起動時間を設定するだけで十分です.通常、サービスは非繁忙期に実行され、繁忙期に干渉しないようにします.私たちが使用するコマンドフォーマットはmin hour**commandです.このコマンドは、私たちが前にメール送信レポートを構成するのに使用したコマンドです.この時点でrootが実行されるのでsudoを使用する必要はありません.tripwireを毎日午前3:30に実行するために、私たちはこのように書くことができます.
30 3 * * * /usr/sbin/tripwire --check | mail -s "Tripwire report for `uname -n`" [email protected]

必要に応じて調整することができます.
締めくくり
ファイルシステムの変更レポートを送信する自動侵入検出システムがあります.Eメールで送信されたレポートモニタリングで発生した変更を定期的にチェックする必要があります.不審なアクティビティが検出された場合でも、通常の変更が検出された場合でも、Tripwireのデータベースをアップグレードする必要があります.
テキストアドレス