Linuxサーバーのセキュリティ対策において、ファイアウォールの設定やSSH公開鍵認証の導入は多くの管理者が取り組む。しかし、すでにシステムに侵入されルートキットが埋め込まれた後の状態を検出する仕組みを持っている管理者は少ない。
この記事では、Linuxサーバーのルートキット検出ツール「rkhunter(Rootkit Hunter)」の使い方を解説する。RHEL 9系(Rocky Linux 9含む)とUbuntu 24.04 LTSを想定環境として、インストールから初期設定・スキャン実行・定期自動化・メールアラートの設定まで説明する。
この記事のポイント
・rkhunterはバイナリ改ざん・ルートキット・不審ファイルをまとめてスキャンできる
・最初に--propupdで正常状態を登録してから--checkを実行するのが基本手順
・WARNINGの多くはFalse Positiveで、設定ファイルのホワイトリストで抑制できる
・cronとメール設定を組み合わせれば毎日のスキャン結果を自動通知できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
ルートキットがLinuxサーバーにもたらす被害
ルートキット(rootkit)とは、攻撃者がシステムに侵入した後、その痕跡を隠しながら継続的なアクセス手段を維持するためのツール群を指す。名前の由来は「root権限(root)で設置するツールキット(kit)」だ。一般的なルートキットは次のような動作をする。
・プロセスの隠蔽:psコマンドやtopコマンドの出力を書き換え、マルウェアが動作していても表示しない
・ファイルの隠蔽:lsやfindの出力を改ざんし、バックドアファイルを不可視にする
・ネットワーク接続の隠蔽:外部への不審な通信をssやnetstatの出力から消す
侵入経路はSSHのブルートフォース攻撃、Webアプリケーションの脆弱性悪用、古いソフトウェアの既知脆弱性など多岐にわたる。24時間外部に公開されているLinuxサーバーは常にターゲットになり得る。
rkhunterはこうした攻撃の痕跡を多角的に検出する。具体的には次の項目をチェックする。
・バイナリのハッシュ検証:正常時に登録したハッシュ値と現状を比較し、改ざんを検出する
・ルートキットシグネチャ照合:既知の約500種のルートキットのパターンと照合する
・不審なSUID/SGIDファイルの確認:本来必要のない特権ファイルがないかをチェックする
・隠しファイル・隠しディレクトリの検出:.(ドット)始まりの不審なファイルを発見する
・ネットワークインターフェイスの確認:プロミスキャスモードが有効になっていないかを確認する
rkhunterのインストールと初期セットアップ
1. インストール(RHEL系・Ubuntu系)
RHEL 9/Rocky Linux 9の場合は、まずEPELリポジトリを有効にしてからrkhunterをインストールする。# dnf install epel-release -y # dnf install rkhunter -y
# apt-get update # apt-get install rkhunter -y
# rkhunter --version
Rootkit Hunter version 1.4.6
2. データベースの更新(--update)と正常状態の登録(--propupd)
インストール直後に必ず実行する2つのコマンドがある。まず既知のルートキットシグネチャをオンラインから最新化する。
# rkhunter --update
# rkhunter --propupd
rkhunter --checkでスキャンを実行する
1. スキャンの実行
基本的なスキャンは次のコマンドで実行する。# rkhunter --check
# rkhunter --check --sk --rwo
・--rwo(--report-warnings-only):WARNINGのある行だけを画面に表示
2. スキャン結果の読み方(WARNING・Found・OK)
スキャン結果は3種類のステータスで表示される。・[ OK ]:問題なし
・[ Warning ]:確認が必要な項目。必ずしも侵害を意味しない(False Positiveも多い)
・[ Found ]:既知のルートキットシグネチャに一致。緊急の対応が必要
スキャン終了後に次のようなサマリが表示される。
System checks summary ===================== File properties checks... Files checked: 141 Suspect files: 2 Rootkit checks... Rootkits checked : 492 Possible rootkits: 0 Applications checks... Applications checked: 5 Suspect applications: 0 The system checks took: 1 minute and 23 seconds All results have been written to the log file: /var/log/rkhunter/rkhunter.log One or more warnings have been found while checking the system. Please check the log file (/var/log/rkhunter/rkhunter.log)
# grep Warning /var/log/rkhunter/rkhunter.log
3. False PositiveをWHITELISTで除外する
rkhunterは保守的な設計のため、正常なシステム構成でも多くのWARNINGが出ることがある。運用上は「本物の脅威」と「False Positive(誤検知)」を適切に切り分けることが重要だ。ケース1:パッケージ更新後にバイナリのハッシュが変わった
最も多いパターン。dnf updateやapt upgradeの後に--propupdの再実行を忘れていると、更新されたバイナリが全てWARNINGになる。
# rkhunter --propupd
useradd、adduser等のシステムスクリプトがWARNINGになることがある。/etc/rkhunter.confのSCRIPTWHITELISTに追加する。
# /etc/rkhunter.conf の該当行を編集する SCRIPTWHITELIST=/usr/sbin/adduser SCRIPTWHITELIST=/usr/sbin/useradd
.javaなどのアプリケーションが作成する正規の隠しディレクトリが検出されることがある。ALLOWHIDDENDIRで許可する。
ALLOWHIDDENDIR=/etc/.java
rkhunterの主要設定(/etc/rkhunter.conf)
設定ファイルは/etc/rkhunter.confにある。主要なパラメータを整理する。| パラメータ | 設定内容 |
|---|---|
MAIL-ON-WARNING |
WARNINGが出た時のメール送信先アドレス |
MAIL_CMD |
メール送信コマンドのパス(mailコマンド等) |
SCRIPTWHITELIST |
スクリプトのWARNINGを抑制するホワイトリスト |
ALLOWHIDDENDIR |
隠しディレクトリのWARNINGを抑制する |
ALLOWHIDDENFILE |
隠しファイルのWARNINGを抑制する |
PKGMGR |
パッケージマネージャ(RPMまたはDPKG)の指定 |
ALLOW_SSH_PROT_V1 |
SSH Protocol 1を許可するかの設定(通常は0) |
# /etc/rkhunter.conf の設定例 PKGMGR=RPM # RHEL/Rocky Linux の場合 # PKGMGR=DPKG # Ubuntu の場合
cronで定期スキャンを自動化する
毎日自動でスキャンを行い、WARNINGが出た時だけ通知するように設定する。/etc/cron.dにファイルを作成するのがシンプルだ。# /etc/cron.d/rkhunter として作成する 0 3 * * * root /usr/bin/rkhunter --cronjob --update --quiet
・--update:スキャン前にシグネチャデータベースを自動更新
・--quiet:標準出力を抑制(ログには書き出す)
注意:--cronjobを使う際のメール通知はrkhunter.confのMAIL-ON-WARNING設定に依存する。cronジョブ自体がメールを送る設定と重複しないよう確認しておく。
メールアラートの設定
/etc/rkhunter.confでMAIL-ON-WARNINGとMAIL_CMDを設定する。# 宛先メールアドレスを設定する MAIL-ON-WARNING=admin@example.com # メール送信コマンドを指定する MAIL_CMD=mail -s "[rkhunter] Warning found on ${HOST_NAME}"
メール設定が正しく動作しているかどうかは、--rnもオプションとして付けて実行することで確認できる(--rnはreportのみで実際のスキャンは行わない)。
トラブルシュート|よくあるWarningと対処法
Warning: The following suspicious files and directories were found/tmpや/var/tmpに不審なファイルが作成されている場合に出る。まず/var/log/rkhunter/rkhunter.logで対象ファイルを特定し、正規の運用で作成されたものか調べる。原因不明のファイルであれば障害対応の起点として詳細な調査が必要だ。
Warning: /usr/bin/xxx SHA-1 hash changed
パッケージ更新後に最も多く出るWARNING。`dnf update`や`apt upgrade`の後に--propupdの再実行を忘れていることが原因の大半を占める。パッケージ更新後の--propupd実行を運用手順として明文化しておくことが鉄則だ。
# パッケージ更新後の実行セット # dnf update -y # rkhunter --propupd
SSHが意図的に無効化されているサーバーで出るWARNING。sshd_configが存在しない環境では/etc/rkhunter.confで次の設定を入れて抑制する。
WARN_ON_OS_CHANGE=0
Linuxの正規のデバイス管理ディレクトリが隠しディレクトリとして検出されることがある。ALLOWHIDDENDIRに追加して除外する。
ALLOWHIDDENDIR=/dev/.udev ALLOWHIDDENDIR=/dev/.static
まずFalse Positiveを全てホワイトリストに登録し、既知の正常パターンを除外した上で「残ったWARNING」だけを精査する体制を作ることが実務上の正しいアプローチだ。
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| インストール(RHEL系) | dnf install epel-release rkhunter -y |
| インストール(Ubuntu系) | apt-get install rkhunter -y |
| シグネチャDBの更新 | rkhunter --update |
| 正常状態のバイナリを登録 | rkhunter --propupd |
| 手動スキャン(非対話型) | rkhunter --check --sk --rwo |
| cronからの自動スキャン | rkhunter --cronjob --update --quiet |
| スキャンログの確認 | grep Warning /var/log/rkhunter/rkhunter.log |
Linuxサーバーの運用ではrkhunterのような個別ツールの使い方だけでなく、多層防御の設計思想を体系的に身につけることが重要だ。Linuxサーバー構築のハンズオンセミナーでは、こうしたセキュリティ運用の考え方も含めて実践的に学べる。
>> Linuxサーバー構築セミナーの詳細はこちら
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:Linuxのipsetコマンドで大量IPを効率管理する方法|iptables・firewalldと連携してDDoS対策も
- この記事の属するカテゴリ:セキュリティへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます