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/rkhunterでCRON_DAILY_RUN="yes"に変えるだけ
目次
- rkhunter・chkrootkitとは
- インストール手順
- rkhunterでルートキットをスキャンする
- chkrootkitでスキャンする
- 自動スキャンの設定
- よくある警告と対処法
- Ubuntu 22.04 vs 24.04 バージョン比較
- まとめ
rkhunter・chkrootkitとは
rkhunter(Rootkit Hunter)はシステムコマンドのハッシュ値・パーミッション・ネットワーク設定などを包括的にチェックするツールです。既知のルートキット498種のシグネチャデータベースを持ち、定期的に更新できます。
chkrootkitはシェルスクリプト中心のシンプルなツールで、ls・find・grep などの基本コマンドがバイナリレベルで改ざんされていないかをひとつひとつ確認します。動作が軽くて理解しやすく、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:パッケージを更新してからインストールする
まずパッケージリストを更新します。これを忘れると古いバージョンが入ることがあります。
Fetched 39.6 MB in 4s (9600 kB/s)
Reading package lists… Done
手順2: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

インストール後に自動でデータベースが初期化されます(176ファイルを検索、116ファイルを認識)。バージョンを確認しておきましょう。
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をインストールする
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:データベースを更新する
スキャン前にルートキット定義データベースを最新にしておきます。
[ Rootkit Hunter version 1.4.6 ]
Checking rkhunter data files…
Performing data file updates…
Updates completed.
手順2:システムをスキャンする
--skip-keypress で途中の確認を省略し、--rwo(report warnings only)で警告だけ表示します。
[ Rootkit Hunter version 1.4.6 ]
System scan took: 45 seconds
Rootkits checked: 498
Possible rootkits: 0


正常なサーバーであれば「Possible rootkits: 0」と表示されます。rkhunterは498種のルートキットシグネチャに加えて、システムコマンドのハッシュ整合性・ネットワーク設定・実行中プロセスなど33種のテストカテゴリを実行します。
手順3:ログを確認する
警告の詳細はログファイルに記録されます。Warning の行だけを抽出して確認すると整理しやすいです。
chkrootkitでスキャンする
手順1: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


手順2:静寂モードで実行する
-q(quiet)オプションを使うと、「not infected」の行を省略して問題のある行だけ表示されます。スクリプト自動化に向いています。
(何も出なければ問題なし)
自動スキャンの設定
rkhunterの自動スキャンを有効にする
rkhunter のデフォルト設定ファイルを確認します。Ubuntu 24.04 では /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 に変更します。
$ 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ファイルを確認します。
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 タイマーが自動登録されます。
● 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 コンテナで検証した出力から実例を示します。

| 警告メッセージ | 原因 | 対処法 |
|---|---|---|
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.conf の WEB_CMD="" に変更 |
Possible rootkits: 0 |
– | 正常(問題なし) |
WEB_CMD 警告の修正方法
Ubuntu のデフォルト設定では WEB_CMD に問題があります。以下で修正できます:
データベースを現在のシステム状態にリセットする
パッケージ更新直後など、正常な変更に対して 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/rkhunterでCRON_DAILY_RUN="yes"にするだけ - 警告が出ても即座に感染確定ではない——原因を調べて対処することが重要
- 本格的なサーバー運用には UFW・SSH キー認証・fail2ban との組み合わせが基本
本格的なUbuntu VPSサーバー運用に興味がある方は、VPS選びの比較記事もご覧ください。



コメント