ウェブサイト検索

Ubuntu VPSでRootkitから守るためにRKHunterを使用する方法


ステータス: 廃止された

この記事では、もはやサポートされていないUbuntuのバージョンについて説明しています。現在、Ubuntu 12.04を実行しているサーバーを運営している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

  • Ubuntu 14.04にアップグレードします。
  • Ubuntu 14.04からUbuntu 16.04へのアップグレード
  • サーバーデータをサポートされているバージョンに移行する

理由: Ubuntu 12.04は2017年4月28日にサポートが終了(EOL)し、もはやセキュリティパッチやアップデートを受けることはありません。このガイドはもはや維持されていません。

代わりに見る: このガイドは参考としてまだ役立つかもしれませんが、他のUbuntuリリースでは機能しない可能性があります。もし可能であれば、使用しているUbuntuのバージョンに対して書かれたガイドを使用することを強くお勧めします。ページの上部にある検索機能を使って、より新しいバージョンを見つけることができます。

紹介

コンピュータをインターネットにさらすことは、いくつかの点でリスクがあります。サーバーがリモートシステムや悪意のあるソフトウェアによって侵害されたり攻撃されたりする方法は数多くあり、潜在的な脅威から自分自身を守るためには継続的で積極的なプロセスが必要です。

1つの潜在的な懸念はルートキットです。ルートキットは、悪意のある侵入者によって秘密裏にインストールされるソフトウェアで、セキュリティが侵害された後もそのユーザーがサーバーに継続的にアクセスできるようにします。これは非常に危険な問題です。なぜなら、最初にアクセスを得るために使用した侵入ベクターが修正された後でも、彼らがインストールしたルートキットを使用してサーバーに入ることができるからです。

これらの問題からあなたのシステムを保護するのに役立つツールの一つがrkhunterです。このソフトウェアは、既知のルートキットのデータベースに対してあなたのシステムをチェックします。また、他のシステムファイルもチェックし、期待されるプロパティと値に一致していることを確認できます。

このガイドでは、私たちのUbuntu 12.04 VPSを保護するために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つ実行し、その後続行するにはエンターを押すように求められます。進行中に作成された警告を確認できますが、後でログに詳細情報が記録されます。すべてのテストが実行されるまでエンターを押してください。

さあ、ログを確認して、生成されたすべての警告をチェックしましょう:

sudo nano /var/log/rkhunter.log

ファイル内で「Warning」という単語を検索してください。さまざまなファイルシステムの側面によって引き起こされるいくつかの異なる警告が表示されます。次のセクションでは、無害であることがわかっている警告は無視するようにrkhunterを設定します。

いくつかの変更、例えば passwd ファイルへの変更は、aptでダウンロードしたヘルパーユーティリティによって変更されたため、のみ表示されています。これらのファイルのタイムスタンプは、rkhunterデータベースファイルよりも新しいです。次回の実行時には消えます。

ログをチェックする別の方法は、rkhunterにすべてのチェックではなく、警告のみを画面に表示させることです。

sudo rkhunter -c --enable all --disable none --rwo

次に、この情報をどこかにコピーして貼り付けることで、設定ファイルに変更を実装できます。

既知の良好な値に基づいてRKHunterを構成する

rkhunterが私たちのシステムをどのように見ているかについて情報が得られたので、誤検出を避けるために無視するファイルやアプリケーション、または異なる扱いをするように指示できます。

最初に、ルート特権でrkhunter設定ファイルを開きます:

sudo nano /etc/rkhunter.conf

メール通知を設定する

最初にできることは、rkhunterが警告を出したときにそれを受け取るためにメール通知を設定することです。ここでできます:

 MAIL-ON-WARNING=“<span class=“highlight ”>your_user@domain.com</span> ” </pre>

ローカルメールを設定すると、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つあります。最初の警告は、ディレクトリに「不審なファイル」があるというものでした。このファイルを特に許可するために、設定にこの行を追加します:

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設定ファイルの値と比較します。

このオプションは、ルートユーザーがSSHを使用してログインできるかどうかを指定します。多くのセキュリティプラクティスでは、ルートログインを無効にすることが推奨されています。ルートログインを無効にしている場合は、このパラメータを「いいえ」のままにしておくべきです。

SSHでルートログインが必要な場合は、このパラメータを「はい」に変更する必要があります。そうすれば、rkhunterがこれをチェックでき、この設定が有効であるとマークされます。

ALLOW_SSH_ROOT_USER=yes

作業が完了したら、ファイルを保存して閉じてください。

設定を確認してください

rkhunterを設定したので、設定を検証し、すべてが期待通りに動作しているか確認する必要があります。

この最初のステップは、設定ファイル自体が有効であることを確認することです。あなたが割り当てたすべての値をrkhunterが受け入れるかを見るためにテストを実行できます:

sudo rkhunter -C

これが何らかの出力を返す場合は、パラメータを調整するために設定を再確認する必要があります。

設定ファイルが正常に動作するようになったら、再度テストを実行して警告がないか確認できます。

sudo rkhunter -c --enable all --disable none --rwo

これにより1つの警告が表示されるはずです。なぜなら、私たちのrkhunterの設定自体が変更されたからです。

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

完了したら、再度チェックコマンドを実行して、エラーが発生していないことを確認できます。

ファイルのプロパティを更新するのを忘れると、設定した場合にメール通知を確認するオプションが与えられます。ローカルメールを設定したので、ルートメールボックスを確認することでメッセージにアクセスできます:

sudo mail

2列目の番号からアクセスできるメッセージが表示されるはずです。

メール画面から退出するには、次のように入力してください:

quit

リモートメールを設定すれば、それも確認できます。通常の受信箱に届いていない場合は、迷惑メールフォルダを見てください。

チェックを自動化するためにCronジョブを設定する

rkhunterを設定し、それが正しく動作していることを確認したので、システムを自動化するのは良いアイデアかもしれません。侵入に関する最新の情報を得るために、rkhunterを毎日チェックするように設定することができます。

これは、あなたがそれを通常のメールアドレスにメール送信できれば非常に便利ですので、あなたがそれを確認する可能性が高くなります。まだ行っていない場合は、/etc/rkhunter.confファイルのMAIL-ON-WARNINGパラメータをあなたの通常のメールに変更してください。

私たちは、これまで通り、root権限でrkhunterを実行したいので、rootユーザーのcrontabに追加する必要があります。システムのcrontabに追加しないことを忘れないことが重要です。なぜなら、アップグレードで置き換えられる可能性があり、変更が消えてしまうからです。

まず、ルートユーザーがすでにcrontabを持っているかどうかを確認するために、次のように入力します:

sudo crontab -l

これがcrontabを返す場合、間違いを犯す可能性があるため、ファイルをバックアップすることが最善です。これを実行するには、次のように入力します:

sudo crontab -l > crontab.bak

その後、次のコマンドを発行してルートユーザーのcrontabを編集できます:

sudo crontab -e

これがこのコマンドを実行するのが初めての場合、使用したいエディタを選ぶように求められます。特に希望がなければ、nanoが安全な選択です。

その後、あなたはエディタに入れられ、ファイルにはcrontabの書き方を説明するいくつかのコメントが事前に入力された状態になります。

コマンドを多くの間隔で実行できるcron仕様を書く複雑な方法がたくさんあります。私たちの目的のために、毎日コマンドを実行する時間を決めなければなりません。ほとんどのサービスと同様に、夜間に実行するのが通常は最適です。

使用するフォーマットは分 時 * * * コマンドです。時は24時間形式で記述する必要があります(例えば、午後3時の場合は15)。使用したいコマンドは/usr/bin/rkhunter --cronjob --update --quietです。

したがって、午前4時15分にこのコマンドを実行したい場合は、ファイルの一番下に次のように入力できます:

15 04 * * * /usr/bin/rkhunter --cronjob --update --quiet

--cronjobオプションは、rkhunterにカラー形式で出力せず、対話的なキー操作を要求しないよう指示します。updateオプションは、定義が最新であることを保証します。quietオプションは、すべての出力を抑制します。

cronユーティリティはこのコマンドを午前4時15分に実行し、出力があれば、rkhunterコマンド自体が私たちのユーザーに警告のためにメールを送信します。問題が見つからなかった場合、メールは受信されません。

結論

rkhunterをインストールし、設定し、自動化したので、ほとんどの作業は自動で行われるはずです。メール通知に依存している場合は、定期的にチェックし、発生した警告に対処してください。

コンピュータでソフトウェアの変更を行ったときに、次回の実行時にrkhunterが違いを報告することがあることを覚えておくことも役立ちます。変更を行った後は、少なくともsudo rkhunter --propupdを実行して、rkhunterを新しいファイルプロパティに更新することをお勧めします。

このソフトウェアは、あなたが許可した既知の良好な値やシステム状態を参照しているため、インストールが完了してほとんどのソフトウェアの設定を行った後に直接インストールおよび設定するのが最善です。ソフトウェアの設定前に行うと、多くの誤検知が発生し、逆に待ちすぎると侵入が発生し、不正なファイルをホワイトリストに登録しているかどうかわからなくなる可能性があります。

ジャスティン・エリングウッドによる

関連記事: