[PR] 本記事にはプロモーションが含まれています。

rkHunter(rootkit検出ツール)|AlmaLinux 9に入れて、毎日自動でチェックする設定

自宅サーバー構築
➔ 自宅サーバー構築メモの目次はこちら

【2026年5月26日時点の情報です】

rkHunter(Rootkit Hunter)は、サーバーに仕掛けられた不正なプログラム(rootkit)や、lsやpsなどの大事なコマンドが書き換えられていないかを確かめるツールです。

前の記事で入れたTripwireは「ファイルが変わったか」を広く見ますが、rkHunterは「知られている攻撃の痕跡がないか」を専門に調べます。両方を入れておくと、SELinuxやファイアウォールを止めているぶんの安全性を補えます。

1. rkHunterをインストールする

rkHunterもEPELにあります。EPELはTripwireの記事で使えるようにしているので、そのままインストールできます。

Bash
[root@almalinux ~]# dnf -y install epel-release  ※EPEL(入っていれば更新だけされる)

[root@almalinux ~]# dnf -y install rkhunter  ※rkHunterをインストール
(途中省略)
インストール済み:
  rkhunter-1.4.6-17.el9.noarch
完了しました!

2. 定義ファイルを更新して、今の状態を記録する

チェックに使う定義ファイルを最新にしてから、今のコマンドの状態(ハッシュ値)を記録します。この記録と比べて、改ざんを見つけます。

Bash
[root@almalinux ~]# rkhunter --update  ※定義ファイルを最新にする
[ Rootkit Hunter version 1.4.6 ]

Checking rkhunter data files...
  Checking file mirrors.dat                                  [ Updated ]
  Checking file programs_bad.dat                             [ Updated ]
(途中省略)

[root@almalinux ~]# rkhunter --propupd  ※今のコマンドの状態(ハッシュ値)を記録する
[ Rootkit Hunter version 1.4.6 ]
File created: searched for 176 files, found 133

3. 改ざんを検知できるか確かめる

本当に改ざんを見つけられるか、テストしてみます。diffコマンドを一時的に書き換えて、rkHunterでチェックします。

システムのコマンドを書き換えるので、必ず先にコピーを取り、テストが終わったらすぐに元に戻してください。

Bash
[root@almalinux ~]# cp -p /usr/bin/diff /usr/bin/diff_org  ※元のdiffをコピーしておく

[root@almalinux ~]# echo "" >> /usr/bin/diff  ※diffの最後に1行足して、中身を変える

[root@almalinux ~]# rkhunter --check --sk  ※チェックを実行(--sk は途中でEnterキーを押さずに最後まで進めるオプション)
[ Rootkit Hunter version 1.4.6 ]

Checking system commands...
(途中省略)
    /usr/bin/df                                              [ OK ]
    /usr/bin/diff                                            [ Warning ]  ← 改ざんの疑いを検知した
    /usr/bin/dirname                                         [ OK ]
(途中省略)

System checks summary
=====================

File properties checks...
    Files checked: 133
    Suspect files: 1

Rootkit checks...
    Rootkits checked : 496
    Possible rootkits: 0
(途中省略)
One or more warnings have been found while checking the system.
Please check the log file (/var/log/rkhunter/rkhunter.log)

書き換えた diff を、きちんと見つけています。終わったら元に戻し、もう一度チェックして警告が消えることを確かめます。

Bash
[root@almalinux ~]# mv /usr/bin/diff_org /usr/bin/diff  ※元のdiffに戻す
mv: '/usr/bin/diff' を上書きしますか? y

[root@almalinux ~]# rkhunter --propupd  ※記録を更新
[ Rootkit Hunter version 1.4.6 ]
File updated: searched for 176 files, found 133

[root@almalinux ~]# rkhunter --check --sk  ※もう一度チェック
(途中省略)
    /usr/bin/diff                                            [ OK ]  ← 警告が消えた
(途中省略)
No warnings were found while checking the system.

チェックには、私のサーバーで約5分かかりました。結果の詳しい内容は、/var/log/rkhunter/rkhunter.log に残ります。

4. 毎日自動でチェックする

rkHunterをインストールすると、毎日自動でチェックする設定(cron)も一緒に登録されます。

Bash
[root@almalinux ~]# ls -l /etc/cron.daily/rkhunter
-rwxr-xr-x. 1 root root 1749  6月 20  2022 /etc/cron.daily/rkhunter

チェックの結果は、/etc/sysconfig/rkhunter の MAILTO に書かれた宛先(初期設定は root)にメールで届きます。root宛てのメールは初期設定の記事でGmailに転送しているので、警告があればスマホで気づけます。

Bash
[root@almalinux ~]# grep MAILTO /etc/sysconfig/rkhunter  ※通知先を確認
MAILTO=root@localhost

5. 自動アップデートでの誤検知を減らす

自動アップデート(dnf-automatic)でパッケージが更新されると、コマンドの中身が変わるので、rkHunterは「改ざんの疑い」として警告を出します。正しい更新なのに警告が続くと、本当の異常を見落としやすくなるので、次の対策をしておきます。

  • パッケージの情報と照らし合わせる:
    /etc/rkhunter.conf で PKGMGR=RPM を設定すると、dnfで更新されたコマンドは、パッケージの情報と照らし合わせて確かめるようになり、警告が減ります。
  • 更新のあとに記録し直す:
    dnf の自動更新が終わったあとに、rkhunter --propupd を自動で動かして記録し直します(下の2つ目の設定)。PKGMGR=RPM なので、パッケージの記録の値で記録されます。手で dnf を使ったあとも、rkhunter --propupd を動かします。
  • SSH の設定と合わせる:
    SSH で root のログインを止めているなら(PermitRootLogin no)、/etc/rkhunter.conf の ALLOW_SSH_ROOT_USER も no にします。合っていないと、毎日警告が出ます。
Bash
[root@almalinux ~]# vi /etc/rkhunter.conf
PKGMGR=RPM  ※この行を追加(または # を外す)

[root@almalinux ~]# rkhunter --propupd  ※記録を作り直す

SSH の設定に合わせる行と、自動更新のあとに記録し直す設定です(2026年11月に足しました)。

[root@almalinux ~]# vi /etc/rkhunter.conf
ALLOW_SSH_ROOT_USER=no  ※unset を no に(SSH の PermitRootLogin no に合わせる)

[root@almalinux ~]# mkdir -p /etc/systemd/system/dnf-automatic-install.service.d
[root@almalinux ~]# vi /etc/systemd/system/dnf-automatic-install.service.d/rkhunter-propupd.conf
[Service]
ExecStartPost=/usr/bin/rkhunter --propupd --nocolors --quiet

[root@almalinux ~]# systemctl daemon-reload
[root@almalinux ~]# rkhunter --propupd  ※今の状態で記録し直す
  • ALLOW_SSH_ROOT_USER=no:
    rkhunter に「SSH は root のログインを許していない」と教える。SSH の実際の設定と合わせる
  • /etc/systemd/system/dnf-automatic-install.service.d/:
    自動更新のサービスに、設定を足すためのフォルダ
  • ExecStartPost=/usr/bin/rkhunter --propupd --nocolors --quiet:
    自動更新のサービスが終わったあとに、rkhunter の記録を取り直す。--quiet は画面に何も出さない
  • systemctl daemon-reload:
    足した設定を読み直させる

(2026年11月追記)この記事を書いたときは「まだ警告は来たことがない」と思っていましたが、実際には、入れてから記録を一度も取り直していなかったため、dnf の更新のたびに警告が増え、毎朝メールが届いていました。原因の確かめ方と直し方は「rkhunter のメールが毎朝来ていた記事」にまとめています。

まとめ

rkHunterを入れて、rootkitやコマンドの改ざんを毎日自動でチェックし、結果をメールで受け取れるようにしました。Tripwireと合わせて、ファイルの変更と攻撃の痕跡の両方を見張れるようになります。

次は、ウイルス対策ソフトのClam AntiVirusを入れます。手順はClam AntiVirusの記事で紹介しています。

コメント