RKHunterを使用してUbuntuVPSのルートキットから保護する方法
ステータス:非推奨
この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。
理由:
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.
代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。
序章
コンピュータをインターネットに公開することは、ある意味で危険です。 サーバーがリモートシステムや悪意のあるソフトウェアによって危険にさらされたり攻撃されたりする可能性のある方法はたくさんあります。これは、潜在的な脅威から身を守るための継続的かつ積極的なプロセスです。
潜在的な懸念の1つは、ルートキットです。 ルートキットは、悪意のある侵入者によって密かにインストールされたソフトウェアであり、セキュリティが侵害された後もそのユーザーがサーバーにアクセスし続けることを可能にします。 これは非常に危険な問題です。ユーザーが最初にアクセスを取得するために使用したエントリベクトルが修正された後でも、インストールしたルートキットを使用してサーバーにアクセスし続けることができるためです。
この種の問題からシステムを保護するのに役立つツールの1つは、rkhunterです。 このソフトウェアは、既知のルートキットのデータベースに対してシステムをチェックします。 さらに、他のシステムファイルをチェックして、それらが期待されるプロパティと値と一致していることを確認できます。
このガイドでは、Ubuntu12.04VPSを保護するためにrkhunterをインストールして構成します。
ソースからRKHunterをインストールします
Ubuntuリポジトリにはパッチが適用されていないバグを含む古いバージョンのrkhunterがあるため、プログラムが正しく動作するようにソースからインストールします。
ホームディレクトリに移動し、ファイルをダウンロードします。 この記事の執筆時点では、1.4.0が最新バージョンですが、プロジェクトのホームページにアクセスして、新しいバージョンが利用可能かどうかを確認できます。
cd
wget http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.4.0/rkhunter-1.4.0.tar.gz
ダウンロードが完了したら、ファイルを抽出して、結果のディレクトリに入ります。
tar xzvf rkhunter*
cd rkhunter*
内部には、「files」ディレクトリとインストーラースクリプトが表示されます。 これを使用してプログラムをインストールします。 /usr
ディレクトリにインストールするレイアウトを指定して、デフォルトのパスになるようにします。
sudo ./installer.sh --layout /usr --install
これにより、ソフトウェアと構成ファイルがインストールされます。
これで、rkhunterがインストールされましたが、そのすべての機能を使用するには、まだいくつかのユーティリティが必要です。 これらはUbuntuリポジトリから取得できます。
sudo apt-get update
sudo apt-get install binutils libreadline5 libruby1.8 ruby ruby1.8 ssl-cert unhide.rb mailutils
メールサーバーの設定についていくつか質問があります。 必要に応じてこれを構成できますが、簡潔にするために、Web向けのメールサーバーは構成しません。 この例に従うには、「ローカルのみ」を選択します。
ローカルにインストールする場合は、システムメールに任意の名前を付けることができます。 それ以外の場合は、完全修飾ドメイン名を使用してください。
これで、ソフトウェアがインストールされ、テストと構成の準備が整いました。
最初のテスト実行
構成を開始する前に、デフォルト設定でいくつかのテストを実行して、ソフトウェアがどのように動作するかを理解し、変更の指針となるベースラインを設定します。
最初にすべきことは、rkhunterのバージョンが最新であることを確認することです。 サイトから最新のtarballを入手した場合は、何もする必要はありませんが、とにかく確認することをお勧めします。
sudo rkhunter --versioncheck
[ Rootkit Hunter version 1.4.0 ]
Checking rkhunter version...
This version : 1.4.0
Latest version: 1.4.0
次に、データファイルを更新するために同様のオプションを実行する必要があります。 これらのファイルには、ファイルまたは動作が疑わしいかどうかを判断するためにrkhunterがチェックする情報が含まれています。 これらのファイルを最新の状態に保つことは、システムを正確に評価するために不可欠です。
sudo rkhunter --update
データベースファイルを更新したら、ベースラインファイルのプロパティを設定して、追跡する重要な構成ファイルのいずれかが変更された場合にrkhunterがアラートを送信できるようにします。 現在の値を確認し、既知の適切な値として保存するようにrkhunterに指示する必要があります。
sudo rkhunter --propupd
File created: searched for 167 files, found 136
最後に、最初の実行を実行する準備が整いました。 これにより、いくつかの警告が生成されます。 rkhunterは汎用として構成されており、Ubuntuは一部の場所で予想されるデフォルトとは異なるため、これは予想される動作です。 これらについては後でrkhunterに通知します。
sudo rkhunter -c --enable all --disable none
テストの1つのセクションが実行され、Enterキーを押して続行するように求められます。 進行中に生成された警告を確認できますが、後でログに詳細情報が記録されます。 すべてのテストが実行されるまでEnterキーを押します。
次に、ログを調べて、生成されたすべての警告を確認する必要があります。
sudo nano /var/log/rkhunter.log
ファイルで「警告」という単語を検索します。 ファイルシステムのさまざまな側面によって引き起こされるさまざまな警告が表示されます。 次のセクションでは、無害であることがわかっているものを無視するようにrkhunterを構成します。
passwd
ファイルへの変更など、一部の変更は、aptでダウンロードしたヘルパーユーティリティによって変更されたためにのみ表示されます。 これらのファイルのタイムスタンプは、rkhunterデータベースファイルよりも新しいものです。 それらは次の実行で消えます。
ログをチェックする別の方法は、rkhunterに、すべてのチェックではなく、警告のみを画面に出力させることです。
sudo rkhunter -c --enable all --disable none --rwo
次に、この情報をコピーしてどこかに貼り付け、構成ファイルに変更を実装できるようにします。
既知の適切な値に基づいてRKHunterを構成する
rkhunterがシステムをどのように表示しているかについての情報が得られたので、誤検知を回避するために無視または処理するファイルとアプリケーションを指定できます。
root権限でrkhunter構成ファイルを開くことから始めます。
sudo nano /etc/rkhunter.conf
メール通知を設定する
最初にできることは、rkhunterが警告を発したときに電子メール通知を受信したい場合に、電子メール通知を設定することです。 あなたはここでこれを行うことができます:
MAIL-ON-WARNING =“ your_user @ドメイン .com 」
ローカルメールを設定した場合、rootとしてログインしたときにメールを受信するように設定できます。
MAIL-ON-WARNING="root@localhost"
メールプログラムはインストール時に構成されているため、これが正しく機能するかどうかは、選択内容によって異なります。
関連する構成オプションは、メールを送信するためのプログラムとオプションを指定します。
MAIL_CMD=mail -s "[rkhunter] Warnings found for ${HOST_NAME}"
既知のスクリプトファイルをホワイトリストに登録
次に、システム上の一部のバイナリパッケージがスクリプトに置き換えられたことを通知する警告を修正します。 一部のディストリビューション(Ubuntuを含む)は、対応するバイナリの代わりにスクリプトバージョンのファイルを使用します。
私が受け取った4つの警告は、すべてこの例です。 SCRIPTWHITELIST
パラメーターを設定して、これらがスクリプトファイルであることが期待されていることをrkhunterに通知できます。
SCRIPTWHITELIST="/usr/sbin/adduser"
SCRIPTWHITELIST="/usr/bin/ldd"
SCRIPTWHITELIST="/usr/bin/unhide.rb"
SCRIPTWHITELIST="/bin/which"
これにより、これらのファイルが後続のすべてのチェックで誤検知をトリガーするのを防ぐことができます。 これらのホワイトリストは特定のテストに固有であるため、これらのファイルがバイナリであるとは想定されていないことがわかっていることを示すフラグを立てているだけであることに注意してください。 他の変更でも警告が発生する可能性がありますが、これは私たちが望んでいることです。
/devディレクトリ内のファイルをホワイトリストに登録
/dev
ディレクトリ内の特定のファイルは、rkhunterの警告をトリガーします。 これらはすべて実装の詳細であり、実際には何も問題を示していません。 それらはそこにあるはずであり、ディストリビューションによってサポートされています。
対処する必要のある警告の種類は3つあります。 1つ目は、ディレクトリに「疑わしいファイル」があったという警告です。 構成に次の行を配置することにより、このファイルを具体的に許可します。
ALLOWDEVFILE="/dev/.udev/rules.d/root.rules"
次に対処しなければならない警告は、/dev
に隠しディレクトリがあるということです。 これも予想されます。 これは、前のファイルが含まれていたディレクトリです。
ALLOWHIDDENDIR="/dev/.udev"
最後の警告は隠しファイルに関するものです。 これらは、ユーティリティがパーティションスキームやマウントステータスに関係なくアクセスできるように、このディレクトリに保持される基本的な構成ファイルです。
これらのファイルが存在できるようにするには、次の行を追加します。
ALLOWHIDDENFILE="/dev/.blkid.tab"
ALLOWHIDDENFILE="/dev/.blkid.tab.old"
ALLOWHIDDENFILE="/dev/.initramfs"
ルートSSHログインを許可する
次のステップは、単にアサーションチェックです。 rkhunterを実行すると、構成ファイルのパラメーターがチェックされ、SSHD構成ファイルの値と比較されます。
このオプションは、rootユーザーがSSHを使用してログインできるかどうかを指定します。 多くのセキュリティ慣行では、rootログインを無効にすることを推奨しています。 rootログインを無効にしている場合は、このパラメーターを「no」のままにしておく必要があります。
SSH経由でrootログインが必要な場合は、このパラメーターを「yes」に変更して、rkhunterがこれをチェックし、この設定を有効としてマークできるようにする必要があります。
ALLOW_SSH_ROOT_USER=yes
終了したら、ファイルを保存して閉じます。
構成を確認してください
rkhunterを構成したので、構成を検証し、すべてが期待どおりに機能していることを確認する必要があります。
この最初のステップは、構成ファイル自体が有効であることを確認することです。 テストを実行して、rkhunterが割り当てたすべての値を受け入れるかどうかを確認できます。
sudo rkhunter -C
これで出力が返される場合は、構成を再確認してパラメーターを調整する必要があります。
構成ファイルが正常に機能するようになったら、テストを再度実行して、警告があるかどうかを確認できます。
sudo rkhunter -c --enable all --disable none --rwo
rkhunterの構成自体が変更されているため、これにより1つの警告が生成されます。
Warning: The file properties have changed:
File: /etc/rkhunter.conf
Current hash: fa8ad80a18100e669be507e69d0cbb88348fc07d
Stored hash : f9015108a2f6d8044126351cf16235c55993ff7a
Current inode: 2098189 Stored inode: 2100424
Current size: 37607 Stored size: 37359
Current file modification time: 1388443781 (30-Dec-2013 17:49:41)
Stored file modification time : 1388442019 (30-Dec-2013 17:20:19)
このファイルを変更した後、ファイルのプロパティを再度更新する必要があります。 次のように入力して、今すぐ実行してください。
sudo rkhunter --propupd
終了したら、checkコマンドを再度実行して、エラーが発生していないことを確認できます。
ファイルのプロパティを更新するのを忘れると、それを構成した場合にメール通知を確認するオプションが提供されます。 ローカルメールを設定したので、ルートメールボックスをチェックすることでメッセージにアクセスできます。
sudo mail
2番目の列の番号でアクセスできるメッセージが表示されます。
次のように入力すると、メール画面を終了できます。
quit
リモートメールを設定している場合は、それも確認できます。 スパムフォルダにある可能性があるため、通常の受信トレイで受信していない場合は、そこを確認してください。
チェックを自動化するためのcronジョブの設定
rkhunterを構成し、正しく動作していることを確認したので、システムを自動化することをお勧めします。 侵入に関する最新情報を入手できるように、毎日チェックを実行するようにrkhunterを設定できます。
これは、通常の電子メールアドレスに電子メールを送信して、確認する可能性が高くなる場合に最も役立ちます。 /etc/rkhunter.conf
ファイルのMAIL-ON-WARNING
パラメータをまだ変更していない場合は、通常の電子メールに変更します。
これまで行ってきたように、root権限でrkhunterを実行したいので、rootユーザーのcrontabに追加する必要があります。 これはアップグレードで置き換えられ、変更が消去される可能性があるため、システムのcrontabに追加しないように注意することが重要です。
まず、次のように入力して、rootユーザーがすでにcrontabを持っているかどうかを確認できます。
sudo crontab -l
これでcrontabが返される場合は、間違いがあった場合に備えてファイルをバックアップすることをお勧めします。 次のように入力すると、次のように入力できます。
sudo crontab -l > crontab.bak
その後、次のコマンドを発行して、rootユーザーのcrontabを編集できます。
sudo crontab -e
このコマンドを初めて実行する場合は、使用するエディターを選択するように求められます。 他のエディターを優先しない場合は、nanoを選択するのが安全です。
その後、エディタに移動し、crontabの記述方法を説明するコメントがファイルに事前入力されます。
多くの間隔でコマンドを実行できるcron仕様を作成するための複雑な方法はたくさんあります。 私たちの目的のために、コマンドを実行するために毎日何時にするかを決定する必要があります。 ほとんどのサービスと同様に、通常は夜間に実行するのが最適です。
使用する形式はminutes hours * * * command
です。 時間は24時間形式で記述する必要があります(たとえば、午後3時は15時間)。 使用したいコマンドは/usr/bin/rkhunter --cronjob --update --quiet
です。
したがって、このコマンドを午前4時15分に実行する場合は、ファイルの最後に次のように入力できます。
15 04 * * * /usr/bin/rkhunter --cronjob --update --quiet
–cronjobオプションは、色付きの形式で出力しないように、またインタラクティブなキーを押す必要がないようにrkhunterに指示します。 更新オプションにより、定義が最新になります。 クワイエットオプションは、すべての出力を抑制します。
cronユーティリティは午前4時15分にこのコマンドを実行し、出力がある場合は、rkhunterコマンド自体がユーザーに電子メールを送信して警告します。 問題が見つからなかった場合、メールは受信されません。
結論
rkhunterのインストール、構成、自動化が完了したので、ほとんどの場合、rkhunterが作業を実行するはずです。 電子メールアラートに依存している場合は、それらを定期的にチェックし、生成された警告に対応するようにしてください。
また、コンピューターでソフトウェアを変更すると、rkhunterが次回の実行時に違いを報告する場合があることを覚えておくと役立ちます。 変更を加えた後、少なくともsudo rkhunter --propupd
を実行して、rkhunterを新しいファイルプロパティに更新することをお勧めします。
このソフトウェアは、許可されている既知の適切な値とシステム状態を参照するため、インストール用にほとんどのソフトウェアを構成した直後に、これをインストールして構成することをお勧めします。 ソフトウェアを構成する前にこれを行うと、多くの誤検知が発生しますが、待機時間が長すぎると、侵入が発生し、不良ファイルをホワイトリストに登録しているかどうかがわからなくなる可能性があります。