
rkhunterでLinuxサーバの改ざん兆候を確認する
こんにちは。運用チームのFです。
Linuxサーバを公開して運用していると、ファイアウォールやWAFなど
「外部からの攻撃をどう防ぐか」に目が行きがちです。
もちろん、外部からの攻撃を防ぐ対策は非常に重要です。
しかし、サーバ運用ではそれに加えて、「もし侵入された場合に、どのように気づくか」
という視点も欠かせません。
そこで今回は、Linuxサーバ上の改ざん兆候や不審な変更を確認できるツール
rkhunterを使って、検証用サーバ上でどのような確認ができるのかを試してみました。
rkhunterとは
rkhunter は、Rootkit Hunter の略で、Linuxサーバ上に rootkit や不審な変更がないかを確認するためのツールです。
rootkitとは
rootkitとは、攻撃者がサーバへ侵入した後に、侵入の痕跡を隠したり、継続的にアクセスできるようにしたりするために使用されるツール群のことです。
例えば、ps や ls などのコマンド結果を改ざんして、不審なプロセスやファイルを見えにくくしたり、
管理者に気づかれないようバックドアを残したりするケースがあります。
rkhunterでは、rootkitに関連する既知のパターンや、重要なシステムコマンドの改ざん、不審なファイル、隠しファイル、待ち受けポートなどを確認できます。
ただし、rkhunterを導入すればサーバが安全になるわけではありません。
サーバ内部に不審な変更がないかを確認するためのチェックツールとして利用します。
rkhunterで確認できること
rkhunterでは、主に以下のような項目を確認できます。
- 重要なシステムコマンドの改ざん兆候
- rootkitに関連する既知パターン
- 不審なファイル
- 隠しファイル
- 一部のシステム設定
- 不審な待ち受けポート
一方で、サーバ上のすべてのファイルを完全に監視するわけではありません。
Webコンテンツ領域の改ざん監視や、プロセスの挙動検知、複数ログの相関分析などは、別の仕組みと組み合わせて考える必要があります。
検証環境
今回は、以下の個人検証環境で実施しました。
OS:AlmaLinux 9
rkhunterをインストール
まず、EPELリポジトリを有効化します。
# dnf install epel-release
# dnf makecache
次に、rkhunterをインストールします。
# dnf install rkhunter
インストール後、バージョンを確認します。
# rkhunter --version
続いて、rkhunterのデータを更新します。
# rkhunter --update
初回導入時は、現在のファイル状態を基準値として登録します。
# rkhunter --propupd
–propupd
rkhunter --propupd は、システム上の重要なファイルのハッシュ値などを、
「現在の正常な状態」として記録するコマンドです。
警告が出ている状態や、不審な変更が疑われる状態で実行すると、
不正な状態を正常な状態として登録してしまう可能性があります。
そのため、初回導入時やOSパッケージのアップデート後など、
変更内容に問題がないことを確認したうえで実行することが重要です。
チェックを実行
手動でチェックを実行する場合は、以下のコマンドを使用します。
# rkhunter --check
実行すると、以下のようにチェックが進んでいきます。
/usr/sbin/adduser [ OK ]
/usr/sbin/chroot [ OK ]
/usr/sbin/depmod [ OK ]
/usr/sbin/fsck [ OK ]
問題がない項目は [ OK ] と表示されます。
警告がある場合は [ Warning ] と表示されます。
ログを確認
rkhunterの実行結果はログにも出力されます。
環境によって出力先が異なる場合がありますが、
AlmaLinuxやRHEL系のパッケージでは、以下のようなパスを確認します。
/var/log/rkhunter/rkhunter.log
ログの中から警告を探す場合は、以下のように確認できます。
# grep -i "warning" /var/log/rkhunter/rkhunter.log
よく出る警告と見方
rkhunterで警告が出たからといって、すぐに侵害されたと判断する必要はありません。
例えば、以下のような作業を行った後は、警告が出ることがあります。
- OSパッケージのアップデート
- ユーザ追加
- グループ追加
- 設定ファイルの変更
- 管理用ツールの追加 など
このような場合は、まず直近で正当な作業が行われていないかを確認します。
しかしながら、以下のような警告は追加調査が必要です。
- 見覚えのない隠しファイル
- 不審なディレクトリ
- 想定していない待ち受けポート
- 基本コマンドの改ざん疑い など
特に、/dev/shm などに作成された不審なファイルや、
見覚えのない隠しファイルは注意して確認した方がよいです。
隠しファイルの検知を確認してみる
今回は、検証環境で /dev/shm 配下に隠しファイルを作成し、
rkhunterでどのように検知されるか確認します。
# vi /dev/shm/.rkhunter_test.php
# vi /dev/shm/.rkhunter_test
その後、rkhunterのチェックを実施します。
ログを確認したところ、以下のような警告が出力されていました。
[20:24:23] Checking for hidden files and directories [ Warning ]
[20:24:23] Warning: Hidden file found: /dev/shm/.rkhunter_test.php: PHP script, ASCII text
[20:24:23] Warning: Hidden file found: /dev/shm/.rkhunter_test: ASCII text
実際にサーバ上で確認すると、作成した隠しファイルが存在していることが分かります。
[root@rkhunter-test ~]# ll -a /dev/shm/
total 8
drwxrwxrwt 2 root root 80 Apr 30 20:21 .
drwxr-xr-x 19 root root 3160 Apr 29 13:19 ..
-rw-r--r-- 1 root root 9 Apr 30 20:14 .rkhunter_test
-rw-r--r-- 1 root root 403 Apr 30 20:21 .rkhunter_test.php
[root@rkhunter-test ~]#
このような警告が出た場合は、必要に応じて更新日時、所有者、作成経緯、
直近のログなどを確認します。
不審なファイルを見つけた場合、まずは影響範囲や作成された経緯を確認後、
削除することが重要です。
定期実行と通知
rkhunterは手動で実行するだけでなく、cronなどを使って定期実行することもできます。
定期的にチェックすることで、日々の運用の中で不審な変更に気づきやすくなります。
例えば、運用では以下のような点を考える必要があります。
- いつチェックを実行するか
- 警告が出た場合に誰へ通知するか
- 検知時に誰が一次確認するか
弊社では、rkhunterの警告を検知した際、よく出る警告については自動でお客様へ通知を行い、
隠しファイルなど調査が必要な警告については、
サーバ内の確認を行ったうえで報告を実施しております。
※MSPアシストをご契約いただいているサーバが対象です。
セキュリティ対策について
rkhunterは便利なツールですが、これだけでセキュリティ対策が完結するわけではありません。
主な理由は以下の3つです。
- 未知の攻撃や新しい手法には限界があること
- Webアプリケーションへの攻撃は別の領域になること
- サーバ全体の挙動や複数ログの分析までは難しいこと
rkhunterは、既知のrootkitや典型的な不審ポイントの確認には役立ちますが、
すべての攻撃を検知できるわけではありません。
SQLインジェクションなど、Webリクエストの内容を見て判断する攻撃は、
WAFのような仕組みで確認・防御する領域になります。
そのため、rkhunterは単体で使うのではなく、WAFなどと組み合わせて考えることが重要です。
お客様の環境やご要望に合わせて、必要なセキュリティ対策をご提案させていただきます。
まとめ
今回は、Linuxサーバの改ざん兆候を確認するツールとして、rkhunterを試してみました。
rkhunterを使うことで、重要コマンドの改ざん兆候、不審なファイル、
rootkitに関連する既知パターンなどを確認できます。
ただし、rkhunterは万能なセキュリティ対策ではありません。
セキュリティ対策にはそれぞれの役割があります。
サーバのセキュリティ対策では、外部からの攻撃を防ぐだけでなく、
侵入後や改ざん後の兆候に気づくための仕組みも重要であり、
rkhunterは、その第一歩として導入しやすいツールだと感じました。
セキュリティ対策やMSPアシストについても、
お客様環境に合わせてご提案できますので、お気軽にご相談ください。
最後までお読みいただき、ありがとうございました。





