Ubuntuでルートキット・マルウェアを検出する方法【rkhunter/chkrootkit】

セキュリティ

VPSを借りてサーバーを運用し始めると、「自分のサーバーが乗っ取られていないか不安…」という疑問が出てきます。ルートキット(rootkit)とは、攻撃者がサーバーに侵入した後に自分の存在を隠すために仕込むツールです。気づかないまま放置すると、スパム送信・踏み台攻撃・仮想通貨マイニングなどに悪用されます。

Ubuntuには rkhunter(Rootkit Hunter)と chkrootkit という2つの代表的な検出ツールがあります。本記事では Ubuntu 24.04 LTS で実際にインストールして動かした実行結果をそのまま掲載します。どんな出力が出るのか、警告が出たときの対処法も含めて解説します。

この記事のポイント

  • Ubuntu 24.04 では rkhunter 1.4.6-12(498種のルートキット検知)が apt で入る
  • chkrootkit 0.58b はインストール時に systemd タイマーが自動設定される(Ubuntu 24.04 から)
  • rkhunter --check --skip-keypress --rwo で警告だけ表示できる
  • Docker コンテナ内と実機 VPS では出る警告が異なる——原因を理解して対処する
  • 定期スキャンは /etc/default/rkhunterCRON_DAILY_RUN="yes" に変えるだけ

目次

  1. rkhunter・chkrootkitとは
  2. インストール手順
  3. rkhunterでルートキットをスキャンする
  4. chkrootkitでスキャンする
  5. 自動スキャンの設定
  6. よくある警告と対処法
  7. Ubuntu 22.04 vs 24.04 バージョン比較
  8. まとめ

rkhunter・chkrootkitとは

rkhunter(Rootkit Hunter)はシステムコマンドのハッシュ値・パーミッション・ネットワーク設定などを包括的にチェックするツールです。既知のルートキット498種のシグネチャデータベースを持ち、定期的に更新できます。

chkrootkitはシェルスクリプト中心のシンプルなツールで、lsfindgrep などの基本コマンドがバイナリレベルで改ざんされていないかをひとつひとつ確認します。動作が軽くて理解しやすく、rkhunterと組み合わせて使うのが定番です。

注意

rkhunter/chkrootkit は「感染後の検知」ツールであり、リアルタイム防御ではありません。侵入そのものを防ぐには UFW(ファイアウォール)・SSH キー認証・fail2ban の設定が先です。これらのツールはそれらの補完として定期スキャンに使います。

インストール手順

前提環境

本記事の検証は以下の環境で行いました。

項目 内容
OS Ubuntu 24.04 LTS(noble)
rkhunter 1.4.6-12
chkrootkit 0.58b-1
検証日 2026-06-13

手順1:パッケージを更新してからインストールする

まずパッケージリストを更新します。これを忘れると古いバージョンが入ることがあります。




ubuntu@vps: ~
$ sudo apt update
Fetched 39.6 MB in 4s (9600 kB/s)
Reading package lists… Done

手順2:rkhunterをインストールする




ubuntu@vps: ~
$ sudo apt install -y rkhunter
Reading package lists… Done
The following NEW packages will be installed:
rkhunter unhide unhide.rb ruby postfix net-tools lsof …
Get:53 …/noble/universe arm64 rkhunter all 1.4.6-12 [219 kB]
Unpacking rkhunter (1.4.6-12) …
Setting up rkhunter (1.4.6-12) …
Processing triggers for rkhunter (1.4.6-12) …
File updated: searched for 176 files, found 116
rkhunterインストールログ(ubuntu:24.04 実測)
rkhunterインストールログ(ubuntu:24.04 実測)

インストール後に自動でデータベースが初期化されます(176ファイルを検索、116ファイルを認識)。バージョンを確認しておきましょう。




ubuntu@vps: ~
$ rkhunter –version
Rootkit Hunter 1.4.6
This software was developed by the Rootkit Hunter project team.
$ dpkg -l rkhunter | grep rkhunter
ii rkhunter 1.4.6-12 all rootkit, backdoor, sniffer and exploit scanner

手順3:chkrootkitをインストールする




ubuntu@vps: ~
$ sudo apt install -y chkrootkit
Get:90 …/noble/universe arm64 chkrootkit arm64 0.58b-1 [299 kB]
Setting up chkrootkit (0.58b-1) …
Created symlink /etc/systemd/system/timers.target.wants/chkrootkit.timer
→ /usr/lib/systemd/system/chkrootkit.timer.
$ chkrootkit -V
chkrootkit version 0.58b

Ubuntu 24.04 の chkrootkit 0.58b では、インストール時に systemd タイマーが自動登録されます(Ubuntu 22.04 の 0.55 にはありませんでした)。これは後述する自動スキャンの設定を大幅に簡略化してくれます。

rkhunterでルートキットをスキャンする

手順1:データベースを更新する

スキャン前にルートキット定義データベースを最新にしておきます。




ubuntu@vps: ~
$ sudo rkhunter –update
[ Rootkit Hunter version 1.4.6 ]
Checking rkhunter data files…
Performing data file updates…
Updates completed.

手順2:システムをスキャンする

--skip-keypress で途中の確認を省略し、--rwo(report warnings only)で警告だけ表示します。




ubuntu@vps: ~
$ sudo rkhunter –check –skip-keypress –rwo
[ Rootkit Hunter version 1.4.6 ]
System scan took: 45 seconds
Rootkits checked: 498
Possible rootkits: 0
rkhunter --check 実行中の出力(実機イメージ)
rkhunter –check 実行中の出力(実機イメージ)
rkhunter --check 実行結果(ubuntu:24.04 実測)
rkhunter –check 実行結果(ubuntu:24.04 実測)

正常なサーバーであれば「Possible rootkits: 0」と表示されます。rkhunterは498種のルートキットシグネチャに加えて、システムコマンドのハッシュ整合性・ネットワーク設定・実行中プロセスなど33種のテストカテゴリを実行します。

手順3:ログを確認する




ubuntu@vps: ~
$ sudo cat /var/log/rkhunter.log | grep -i warning | head -20

警告の詳細はログファイルに記録されます。Warning の行だけを抽出して確認すると整理しやすいです。

chkrootkitでスキャンする

手順1:chkrootkitを実行する




ubuntu@vps: ~
$ sudo chkrootkit
Checking `basename’… not infected
Checking `chfn’… not infected
Checking `date’… not infected
Checking `find’… not infected
Checking `grep’… not infected
Checking `ls’… not infected
Checking `login’… not infected
Checking `su’… not infected
Checking `ldsopreload’… not infected
chkrootkit 実行中の出力(実機イメージ)
chkrootkit 実行中の出力(実機イメージ)
chkrootkit 実行結果(ubuntu:24.04 実測)
chkrootkit 実行結果(ubuntu:24.04 実測)

手順2:静寂モードで実行する

-q(quiet)オプションを使うと、「not infected」の行を省略して問題のある行だけ表示されます。スクリプト自動化に向いています。




ubuntu@vps: ~
$ sudo chkrootkit -q
(何も出なければ問題なし)

自動スキャンの設定

rkhunterの自動スキャンを有効にする

rkhunter のデフォルト設定ファイルを確認します。Ubuntu 24.04 では /etc/default/rkhunter が作成されます。




ubuntu@vps: ~
$ cat /etc/default/rkhunter
# Set this to yes to enable rkhunter daily runs
CRON_DAILY_RUN=””
# Set this to yes to enable rkhunter weekly database updates
CRON_DB_UPDATE=””
REPORT_EMAIL=”root”
APT_AUTOGEN=”false”

CRON_DAILY_RUN がデフォルトでは空(無効)になっています。毎日スキャンを有効にするには yes に変更します。




ubuntu@vps: ~
$ sudo sed -i ‘s/CRON_DAILY_RUN=””/CRON_DAILY_RUN=”yes”/’ /etc/default/rkhunter
$ sudo sed -i ‘s/CRON_DB_UPDATE=””/CRON_DB_UPDATE=”yes”/’ /etc/default/rkhunter
$ grep CRON /etc/default/rkhunter
CRON_DAILY_RUN=”yes”
CRON_DB_UPDATE=”yes”

実際にインストールされているcronファイルを確認します。




ubuntu@vps: ~
$ ls /etc/cron.daily/ | grep rkhunter
rkhunter
$ ls /etc/cron.weekly/ | grep rkhunter
rkhunter

rkhunterは /etc/cron.daily/rkhunter(毎日実行)と /etc/cron.weekly/rkhunter(週1回のDB更新)の2つが自動インストールされます。CRON_DAILY_RUN を有効にするだけで定期スキャンが動きます。

chkrootkitのsystemdタイマーを確認する

Ubuntu 24.04 の chkrootkit 0.58b では、インストール時に systemd タイマーが自動登録されます。




ubuntu@vps: ~
$ systemctl status chkrootkit.timer
● chkrootkit.timer – Run chkrootkit
Loaded: loaded (/usr/lib/systemd/system/chkrootkit.timer; enabled)
Active: active (waiting)
Trigger: Mon 2026-06-15 06:00:00 JST

Ubuntu 22.04 の chkrootkit 0.55 では systemd タイマーがなく cron.daily でしたが、0.58b からは systemd タイマーが標準になりました。これはインストール直後から自動的に有効です。

よくある警告と対処法

Ubuntu 24.04 で rkhunter を実行すると、正常なシステムでも以下の警告が出ることがあります。実際に Docker コンテナで検証した出力から実例を示します。

Ubuntu 22.04 vs 24.04 バージョン比較(実測)
Ubuntu 22.04 vs 24.04 バージョン比較(実測)
警告メッセージ 原因 対処法
The kernel modules directory '/lib/modules' is missing カーネルモジュールが未インストール(最小構成サーバー・Docker) 正常。VPS の通常環境では表示されない
No running system logging daemon found syslog / rsyslog が未起動 sudo systemctl start rsyslog で起動
User 'postfix' has been added to the passwd file rkhunter インストール時に postfix が依存で入った 正常。rkhunter --propupd でデータベースを更新すると消える
Invalid WEB_CMD: Relative pathname: "/bin/false" Debian/Ubuntu パッケージ設定の既知の問題 /etc/rkhunter.confWEB_CMD="" に変更
Possible rootkits: 0 正常(問題なし)

WEB_CMD 警告の修正方法

Ubuntu のデフォルト設定では WEB_CMD に問題があります。以下で修正できます:




ubuntu@vps: ~
$ sudo sed -i ‘s|WEB_CMD=”/bin/false”|WEB_CMD=””|’ /etc/rkhunter.conf

データベースを現在のシステム状態にリセットする

パッケージ更新直後など、正常な変更に対して rkhunter が警告を出す場合があります。--propupd で現在の状態を「正常」として登録し直します。




ubuntu@vps: ~
$ sudo rkhunter –propupd
File updated: searched for 176 files, found 116

Ubuntu 22.04 vs 24.04 バージョン比較

Docker の ubuntu:22.04 と ubuntu:24.04 の両方でインストール・実行して比較しました(2026-06-13 実測)。

項目 Ubuntu 22.04 LTS Ubuntu 24.04 LTS
rkhunter 1.4.6-10 1.4.6-12
chkrootkit 0.55-4 0.58b-1
rkhunter 自動実行 cron.daily / cron.weekly cron.daily / cron.weekly
chkrootkit 自動実行 cron.daily systemd タイマー(自動登録)
rkhunter DB初期化 176ファイル検索 176ファイル検索

最大の変化は chkrootkit が 0.58b から systemd タイマー対応になった点です。Ubuntu 22.04 から 24.04 にアップグレードした場合、chkrootkit を再インストールすることでタイマーが有効になります。

まとめ

  • Ubuntu 24.04 では sudo apt install rkhunter chkrootkit だけでインストールできる
  • rkhunter 1.4.6-12 は 498 種のルートキットを検知、33テストカテゴリを実行する
  • chkrootkit 0.58b は Ubuntu 24.04 からインストール時に systemd タイマーが自動登録される
  • 定期スキャンは /etc/default/rkhunterCRON_DAILY_RUN="yes" にするだけ
  • 警告が出ても即座に感染確定ではない——原因を調べて対処することが重要
  • 本格的なサーバー運用には UFW・SSH キー認証・fail2ban との組み合わせが基本
著者アイコン
著者アイコン

ルートキット検出ツールは「保険」だと思ってください。侵入されてから気づくためのものです。まず UFW・SSH 設定を固めてから、週1回程度の定期スキャンを回すのがおすすめです。VPS で本番サーバーを立てるなら fail2ban の設定も併せてやっておくと安心です。

本格的なUbuntu VPSサーバー運用に興味がある方は、VPS選びの比較記事もご覧ください。

コメント

タイトルとURLをコピーしました