Linuxの要塞化:ClamAVとRkhunterによる実践ガイド

Security tutorial - IT technology blog
Security tutorial - IT technology blog

コアを保護する:なぜスキャンが重要なのか

多くの管理者は、SSHの要塞化ファイアウォールの調整に何時間も費やします。しかし、悪意のあるファイルが実際にディスク上に置かれた場合に何が起こるかについては、見落とされがちです。Webの脆弱性を介してアップロードされたPHPシェルであれ、軽微な侵入後に残された隠れたルートキットであれ、ファイルシステム上に存在する脅威を見つけ出す手段が必要です。私は以前、数ヶ月間にわたって毎日10GBのスパムを送信し続けていたサーバーを監査したことがあります。その管理者は、基本的なファイル整合性チェックを怠っていたため、事態に全く気づいていませんでした。

このような事態を防ぐために、私は業界標準として信頼されている2つのツール、ClamAVRkhunterを利用しています。これらは目的が異なりますが、組み合わせることで、あらゆるLinuxディストリビューションにおいて強力な防御層を形成します。

アプローチの比較:シグネチャ vs. 整合性

コマンドを実行する前に、これらのツールがどのように機能するかを理解する必要があります。これらは異なる役割を担っており、一方だけを使用すると防御に隙が生じます。

ClamAV:マルウェアハンター

ClamAVは伝統的なアンチウイルスエンジンです。800万件を超える既知のマルウェアシグネチャの巨大なデータベースと照らし合わせてファイルをスキャンします。ユーザーのアップロードファイル、メールの添付ファイル、Webディレクトリのスキャンに最適です。ただし、特定の悪意のあるバージョンがまだインデックス化されていない場合、/bin/lsのような変更されたシステムバイナリを見逃す可能性があります。

Rkhunter:システムオーディター

Rkhunter(Rootkit Hunter)は、フォレンジック監査ツールです。攻撃者の存在を隠すために設計された「ルートキット」を探します。既知の正常なハッシュ値とシステムバイナリを照合し、隠しディレクトリを検索し、31337のような不審なポートをチェックします。ユーザーのホームフォルダ内にあるランダムなウイルスを見つけることよりも、OSの「整合性」を優先します。

トレードオフ

ClamAV

  • メリット: オープンソースで毎日更新され、一般的なWebシェルに対して非常に効果的です。
  • デメリット: リソース消費が激しい。1GB RAM程度の低スペックなVPSでフルスキャンを行うと、CPU使用率が90%に達し、Out-Of-Memory (OOM) エラーを引き起こす可能性があります。

Rkhunter

  • メリット: 非常に軽量。アンチウイルスソフトが見逃すような巧妙なバックドアを検出し、システム設定の不備を指摘します。
  • デメリット: 誤検知(偽陽性)が発生しやすい。パッケージを更新するたびにファイルのハッシュ値が変わるため、ベースラインを更新するまでRkhunterはそれらを不審なものとしてフラグを立てます。

推奨されるセットアップ戦略

手動で散発的にチェックするのではなく、ハイブリッドアプローチを推奨します。私はClamAVを毎晩Webディレクトリをスキャンするように設定しています。同時に、Rkhunterを毎朝システムチェックを実行し、レポートをメールで送信するようにしています。これにより、誰かがシステムツールを改ざんしたり、シェルをアップロードしたりした場合、24時間以内にそれを察知できます。

新しいサーバーを構築する際、まず管理アカウントのセキュリティを確保します。私は toolcraft.app/ja/tools/security/password-generator のパスワードジェネレーターを使用して、32文字の文字列を作成します。これは完全にブラウザ内で動作するため、データがネットワークに流れることはありません。アクセスがロックダウンされたら、すぐにスキャナーの導入に移ります。

実装:ClamAVのインストール

ここではUbuntu/Debianの構文を使用しますが、dnfを使用するRHELベースのシステムでも論理は同じです。

1. パッケージのインストール

sudo apt update
sudo apt install clamav clamav-daemon -y

2. シグネチャデータベースの更新

スキャンを行う前に、最新の定義ファイルが必要です。freshclamツールがこれを処理します。サービスが既にバックグラウンドで実行されている場合は、手動更新を実行するために一時的に停止する必要があります。

sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam

3. 手動スキャンの実行

Webルートをスキャンし、感染したファイルのみを表示するには、次のコマンドを使用します。

clamscan -r -i /var/www/html

-rフラグは再帰的なスキャンを有効にします。-iフラグは非常に便利で、「OK」メッセージを抑制して実際の脅威のみを表示します。

実装:Rkhunterのインストール

Rkhunterは、正常なシステムがどのような状態であるかを認識させるための「トレーニング」が少し必要です。

1. Rkhunterのインストール

sudo apt install rkhunter -y

2. ベースラインプロファイルの作成

クリーンなシステムで、現在のファイルプロパティのスナップショットを取得する必要があります。これが将来のすべてのチェックにおける「信頼できる情報源(source of truth)」となります。

sudo rkhunter --propupd

3. システムチェックの実行

チェックを実行し、対話的なプロンプトをスキップするには、--skフラグを使用します。

sudo rkhunter --check --sk

/var/log/rkhunter.logにあるログを確認してください。警告が表示されても慌てないでください。多くのLinuxディストリビューションは、Rkhunterの検知に触れるような方法でバイナリをカスタマイズしています。あなたの仕事は、それらを調査し、正当なものであることを確認することです。

セキュリティワークフローの自動化

手動スキャンは忘れがちです。/etc/cron.daily/security-scanに日次Cronジョブスクリプトを作成して、これを自動化します。

#!/bin/bash
# ClamAV定義のサイレントアップデート
/usr/bin/freshclam --quiet

# Webディレクトリのスキャンと結果의 ログ出力
/usr/bin/clamscan -r -i /var/www/html > /var/log/clamav/daily_scan.log

# Rkhunterのチェックと更新を実行
/usr/bin/rkhunter --versioncheck --quiet
/usr/bin/rkhunter --update --quiet
/usr/bin/rkhunter --check --sk --quiet

スクリプトを実行可能にするのを忘れないでください。

sudo chmod +x /etc/cron.daily/security-scan

アップデートへの対応

よくある悩みは、apt upgradeを実行した後に発生します。アップデート中にファイルプロパティが変更されるため、Rkhunterが/bin/bash/bin/lsにフラグを立てる可能性が高いです。これは正常な動作です。システムを更新するたびに、sudo rkhunter --propupdを実行してベースラインを更新し、警告を停止させてください。

最後に

セキュリティは「一度設定すれば終わり」というタスクではありません。ClamAVとRkhunterは、エクスプロイトをリアルタイムで阻止するものではありませんが、事後に侵害を察知するために必要な可視性を提供します。これらのツールを強力なパスワードや定期的なアップデートと組み合わせることは、エンタープライズ規模の予算をかけずに環境を健全に保つための最も実用的な方法です。

Share: