Linux Malware Detect (LMD) と ClamAV を CentOS 7 にインストールする方法

定義: LMD は共有ホスティング向けに設計された Linux 用マルウェア検出ツールです。ClamAV は複数プラットフォーム対応のオープンソースアンチウイルスエンジンです。
前提条件
- CentOS 7 を実行しているサーバー
- root 権限または同等の権限
重要: 本手順は共有ホスティングやウェブサーバー上でのスキャンを想定しています。プロダクション環境変更前に必ずバックアップを取得してください。
手順 1 - EPEL リポジトリと mailx のインストール
EPEL (Extra Packages for Enterprise Linux) を有効にし、LMD のアラート送信で使う mailx をインストールします。
yum -y install epel-release
CentOS 7 で mail コマンドを使うために mailx をインストールします:
yum -y install mailx
ノート: メール送信にはローカルの MTA(postfix 等)設定または外部 SMTP リレーの設定が必要です。
手順 2 - Linux Malware Detect (LMD) のインストール
LMD は CentOS の標準リポジトリや EPEL に含まれないため、ソースからインストールします。
ダウンロードして展開します:
cd /tmp
wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
tar -xzvf maldetect-current.tar.gz
maldetect ディレクトリに移動してインストーラ ‘install.sh’ を root で実行します:
cd maldetect-1.5
./install.sh
次に maldet コマンドへのシンボリックリンクを /bin/ に作成します:
ln -s /usr/local/maldetect/maldet /bin/maldet
hash -r
重要: インストーラによってはインストール先が /usr/local/maldetect または /usr/local/maldet のいずれかになる場合があります。以下の設定手順では実際に存在するディレクトリを確認してください。
手順 3 - Linux Malware Detect (LMD) の設定
LMD は通常 /usr/local/maldetect/(または /usr/local/maldet/)にインストールされます。該当ディレクトリに移動して設定ファイル conf.maldet を編集します。
cd /usr/local/maldetect/
vim conf.maldet
設定の主なポイント:
- メール通知を有効にする(email_alert 値を 1 に設定)。
email_alert="1"
- 送信先メールアドレスを設定する(email_addr 行に自分のメールアドレスを入力)。
email_addr="[email protected]"
- ClamAV の clamscan バイナリをスキャンエンジンとして使う(scan_clamscan を 1 に)。
scan_clamscan="1"
- スキャン中に検出ファイルを自動で隔離する場合は quarantine_hits を 1 に。
quarantine_hits="1"
- クリーンベースのマルウェア注入対策(quarantine_clean)を有効にする場合は 1 に。
quarantine_clean="1"
保存して終了してください。
ノート: 設定編集後は maldet のマニュアルや conf.maldet 内のコメントを確認してください。自動隔離は false positive(誤検知)による業務影響を招くため、運用ポリシーに沿って設定します。
手順 4 - ClamAV のインストール
LMD で高性能なスキャンを行うために ClamAV を導入します。ClamAV は EPEL リポジトリにあります。
yum -y install clamav clamav-devel
インストール後、ウイルス定義を更新します:
freshclam
注: freshclam はデータベースの自動更新を cron または systemd タイマーで運用すると便利です。ネットワーク環境によってはプロキシ設定が必要です。
手順 5 - LMD と ClamAV のテスト
手動スキャンで動作を確認します。ここではウェブルート /var/www/html/ を例にします。
ウェブルートに移動し、テスト用の EICAR サンプルをダウンロードします(テスト用の安全なサンプルです):
cd /var/www/html
wget http://www.eicar.org/download/eicar.com.txt
wget http://www.eicar.org/download/eicar_com.zip
wget http://www.eicar.org/download/eicarcom2.zip
次に maldet でディレクトリをスキャンします:
maldet -a /var/www/html
出力に ClamAV エンジンの使用、検出件数(malware hits)や隔離が表示されます。スキャン結果のレポートを確認します(SCANID は実行時の出力を参照)。
maldet --report 161008-0524.9466
SCANID = 161008-0524.9466 は maldet コマンド出力から取得します。
メール送信が有効ならば、root のメールボックス等にレポートが届きます。
tail -f /var/mail/root
確認: スキャンレポートが設定した宛先に届いているかを必ず確認してください。
手順 6 - 便利な maldet コマンド集
特定拡張子のみをスキャンする:
maldet -a /var/www/html/*.php
全レポートの一覧を表示する:
maldet -e list
最終更新日から X 日以内に作成/変更されたファイルをスキャンする:
maldet -r /var/www/html/ 5
5 = 過去5日間。
隔離からファイルを復元する:
maldet -s SCANID
ディレクトリの監視を有効にする(ファイル作成/変更をトリガーに自動スキャン):
maldet -m /var/www/html/
監視ログを確認する:
tail -f /usr/local/maldetect/logs/inotify_log
運用上のチェックリスト(役割別)
システム管理者:
- EPEL と ClamAV の自動更新(freshclam の cron/systemd 設定)を有効化する。
- conf.maldet のメールアドレスや隔離ポリシーを監査する。
- 重大な誤検知が起きた場合の復元手順を文書化する。
セキュリティ運用担当:
- スキャンスケジュールを決め、週次/日次を運用基準に落とし込む。
- 検出時の対応フロー(隔離→解析→復元 or 削除)を定義する。
ウェブ運用担当:
- デプロイ前にアプリケーションの整合性チェックを行う。
- 自動隔離を有効にする場合、誤検知によるサービス障害を避ける設定を行う。
簡易 SOP(運用手順)
- daily: freshclam で定義を更新。
- daily/weekly: maldet で主要ウェブルートをスキャン。
- アラート受信時: 潜在感染ファイルを隔離ディレクトリから取得し、サンドボックスで解析。
- 誤検知と判断した場合は maldet -s で復元し、conf.maldet を更新して除外ルールを設定。
- 対策完了後、関係者へ報告しインシデントログを保存。
テストケースと受け入れ基準
- ケース1: EICAR サンプルを /var/www/html に配置して maldet -a で検出され、隔離されること。
- ケース2: freshclam 実行後、ClamAV 定義が更新されエンジンが起動すること。
- ケース3: conf.maldet の email_alert=1 と email_addr に設定した宛先にスキャンレポートが届くこと。
受け入れ基準: 3 ケースすべてが成功し、誤検知が重大なサービス停止を引き起こさないこと。
よくある問題と対処(コツ)
問題: freshclam が更新できない。
- 対処: ネットワーク/プロキシを確認。/etc/freshclam.conf の設定を見直す。
問題: maldet が存在ディレクトリを見つけない。
- 対処: /usr/local/maldetect と /usr/local/maldet のどちらかが存在するか確認し、シンボリックリンクや PATH を修正する。
問題: 自動隔離で誤検知が発生。
- 対処: 自動隔離を無効にして手動確認のワークフローを追加。誤検知パターンを除外リストに追加。
代替アプローチと拡張
- 代替: 商用のアンチウイルス/EDR 製品を導入し、より高度な振る舞い検知や中央管理を導入する。
- 拡張: ClamAV の代わりに複数エンジンを組み合わせる(maldet の設定で複数エンジンを連携可能な場合)。
- 自動化: Ansible など構成管理ツールで上記手順を自動化し、複数ホストへ一貫して展開する。
セキュリティ強化のヒント
- スキャンログとアラートを中央ログ(SIEM)へ送る。
- 隔離ディレクトリへアクセスできるアカウントを限定する。
- 定期的に隔離ファイルのフォレンジック解析を行い、再発防止を実施する。
互換性と移行の注意点
- CentOS 7 は systemd を使いますが、将来的な OS 更新(例: CentOS 8/Stream, AlmaLinux, Rocky Linux)ではパスやパッケージ名が変わる可能性があります。移行時は maldet のインストールパスと clamscan のバイナリ位置を確認してください。
まとめ
- LMD と ClamAV を組み合わせることで、共有ホスティング環境でも実用的なマルウェア検出と隔離を実現できます。
- 自動隔離は便利ですが、誤検知対策と復元手順を必ず用意してください。
- 定期的な定義更新とスキャン、ログの中央集約は運用の基本です。