Debianでダウンロードしたファイル、メール添付、USBメモリーなどを検査したい場合は、オープンソースのウイルス対策ソフトClamAVを利用できます。本記事では、Debian 13を例に、ClamAVの導入、ウイルス定義ファイルの更新、ファイル・フォルダー・ホーム・外付けドライブのスキャン、結果の見方、検出時の安全な対処まで初心者向けに解説します。
- Debian 13(Trixie)・Debian 12(Bookworm)
- systemdを使用する一般的なデスクトップPC・サーバー
sudoを実行できるユーザー- ウイルス定義ファイルを取得できるインターネット接続
初回は「ClamAVをインストール」「定義ファイルの更新を確認」「削除機能を付けずに対象フォルダーを検査」の3段階で進めます。
APTからスキャナーと定義更新ツールをインストールします。
clamav-freshclamの稼働状態とログを確認します。
clamscanでファイルやフォルダーを検査します。
--removeを付けない
ClamAVは誤検知する可能性があります。最初は検出結果だけを表示し、対象ファイルを確認してから隔離してください。--removeを付けると検出ファイルが自動削除され、正常なファイルでも元に戻せない場合があります。
ClamAVとは
ClamAVは、ファイルやディレクトリーを検査して、ウイルス、トロイの木馬、そのほかのマルウェアを検出するウイルス対策エンジンです。Debianでは用途ごとにパッケージが分かれています。
| パッケージ | 役割 | この記事での扱い |
|---|---|---|
clamav |
clamscanによる手動スキャン |
使用する |
clamav-freshclam |
公式ウイルス定義ファイルの取得・自動更新 | 使用する |
clamav-daemon |
常駐デーモンを利用した繰り返し・高速スキャン | 基本手順では不要 |
clamtk |
ClamAVを画面操作で使うためのフロントエンド | 後半で紹介 |
この記事で使うclamscanは、コマンドを実行した時点で対象を検査するオンデマンド方式です。インストールしただけで、すべてのファイルを常時監視するリアルタイム保護が有効になるわけではありません。
Linuxでも、Webから取得したファイル、メール添付、Windowsと共有するファイル、USBメモリーを確認する用途で利用できます。ただし、ClamAVだけですべての脅威を防げるわけではありません。Debianとアプリの更新、信頼できないファイルを開かない運用、バックアップも併用してください。
スキャン前に確認すること
Debianのバージョンを確認する
cat /etc/os-release
VERSION_CODENAME=trixieならDebian 13、bookwormならDebian 12です。
空き容量を確認する
df -h / /var
定義ファイルの保存先は通常/var/lib/clamavです。空き容量が極端に少ない場合は、先に不要ファイルを整理してください。
APTが正常に使えるか確認する
sudo apt update
DNS、署名、リポジトリなどのエラーが表示される場合は、ClamAVを導入する前にAPTの問題を解消します。
ClamAVをインストールする
次のコマンドで、コマンドラインスキャナーと定義更新ツールをインストールします。
sudo apt install clamav clamav-freshclam
確認を求められたら、インストールされるパッケージを確認してYを入力し、Enterキーを押します。
表示される依存パッケージやバージョンは環境により異なります。
インストール後にバージョンを確認します。
clamscan --version
ClamAVで始まるバージョン情報が表示されれば、スキャナーを実行できます。
ウイルス定義ファイルを更新する
スキャン前には、新しいウイルス定義ファイルを利用できる状態か確認します。Debianのclamav-freshclamパッケージには、定義ファイルを自動更新する仕組みが含まれています。
自動更新サービスの状態を確認する
systemctl is-active clamav-freshclam
activeと表示されれば、更新サービスは稼働中です。詳細は次のコマンドで確認できます。
systemctl status clamav-freshclam --no-pager
sudo journalctl -u clamav-freshclam -n 30 --no-pager
inactiveやfailedの場合は、次のコマンドで有効化して起動します。
sudo systemctl enable --now clamav-freshclam
すぐに更新を確認したい場合
通常は自動更新へ任せて問題ありません。今すぐ再確認したい場合は、サービスを再起動してログを確認します。
sudo systemctl restart clamav-freshclam
sudo journalctl -u clamav-freshclam -n 30 --no-pager
freshclamを対話形式で直接実行する場合は、同じ更新処理が二重に動かないよう、サービスを一時停止します。
sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam
systemctl is-active clamav-freshclam
freshclam.log is locked by another processなどが表示される場合は、多くの場合、自動更新サービスがすでに実行中です。ロックファイルを削除せず、上記のようにサービスの状態を確認してください。
定義ファイルを確認する
clamscan --version
ls -lh /var/lib/clamav/
daily.cvdまたはdaily.cldなどのデータベースファイルが表示されれば、定義ファイルが保存されています。clamscan --versionにはエンジンと定義データベースの情報も表示されます。
ファイルやフォルダーをスキャンする
1つのファイルをスキャンする
clamscan "$HOME/Downloads/example.pdf"
example.pdfは、実際に確認するファイル名へ置き換えてください。パスに空白が含まれる場合があるため、パス全体を"で囲むと安全です。
ダウンロードフォルダーをスキャンする
clamscan --recursive --infected "$HOME/Downloads"
| オプション | 意味 |
|---|---|
--recursive(-r) |
指定フォルダー内のサブフォルダーも再帰的に検査する |
--infected(-i) |
検出されたファイルだけを一覧へ表示する |
--cross-fs=no |
スキャン開始場所とは別のファイルシステムへ移動しない |
--log=ファイル |
スキャン結果をログファイルへ保存する |
ホームフォルダー全体をスキャンする
clamscan --recursive --infected --cross-fs=no "$HOME"
通常、自分のホームフォルダー内はsudoなしで検査できます。ファイル数が多いと完了まで時間がかかり、CPU使用率やストレージへのアクセスが増えます。
結果をログへ保存する
clamscan --recursive --infected --log="$HOME/clamav-scan.log" "$HOME/Downloads"
終了後は次のコマンドでログを確認できます。
less "$HOME/clamav-scan.log"
lessを終了するときはQキーを押します。
USBメモリーや外付けHDDをスキャンする
最初に、デバイスのマウント先を確認します。
lsblk -f
マウント先が/media/USER/USBの場合は、次のように実行します。
clamscan --recursive --infected "/media/USER/USB"
USERとUSBは例です。lsblk -fのMOUNTPOINTS欄に表示された実際のパスへ置き換えてください。パスに空白があっても、全体を"で囲めば1つのパスとして扱われます。
システム全体をスキャンする
ルートファイルシステムを検査する場合は、仮想ファイルシステムを除外して実行します。
sudo clamscan --recursive --infected --cross-fs=no \
--exclude-dir='^/proc($|/)' \
--exclude-dir='^/sys($|/)' \
--exclude-dir='^/dev($|/)' \
--exclude-dir='^/run($|/)' \
/
ファイル数やストレージ性能によっては、数十分から数時間かかることがあります。ノートPCではACアダプターを接続し、スキャン中に強制終了しないでください。
--cross-fs=noを付けると、ルートとは別パーティションの/homeや、マウント済みの外付けドライブは対象外になる場合があります。その場合は、それぞれのマウント先を別のコマンドで検査します。
日常的な確認では、ダウンロードフォルダー、メール添付の保存先、共有フォルダー、USBメモリーなど、外部からファイルが入る場所を優先すると負荷を抑えられます。
スキャン結果の見方
ウイルスが見つからなかった例
数値は一例です。実際の件数と時間は環境により異なります。
Infected files: 0なら、今回の定義と設定ではマルウェアは検出されていません。
ウイルスが検出された例
ファイル名と検出名は説明用の例です。
行末にFOUNDと表示されたファイルが検出対象です。最後のInfected filesには検出件数が表示されます。
終了コードを確認する
スキャン直後に次を実行すると、終了コードを確認できます。
echo $?
| 終了コード | 意味 |
|---|---|
0 |
ウイルスは検出されなかった |
1 |
1件以上のウイルスが検出された |
2 |
読み取り失敗など、何らかのエラーが発生した |
Infected files: 0でもエラーを確認する
権限不足や破損ファイルにより、検査できなかったファイルがある可能性があります。画面上のERRORやPermission denied、終了コード2を見落とさないでください。
ウイルスが検出された場合の対処
- 検出されたファイルを開かず、パスと検出名を記録する
- 必要に応じてネットワーク接続を切る
- 定義ファイルとClamAV本体を更新し、もう一度スキャンする
- 誤検知の可能性を確認してから隔離または削除する
- 同じ入手元のファイルや共有先も確認する
隔離フォルダーを作る
mkdir -p "$HOME/clamav-quarantine"
chmod 700 "$HOME/clamav-quarantine"
検出結果を確認したうえで、対象ファイルを隔離場所へ移動します。
mv -- "$HOME/Downloads/suspicious-file" "$HOME/clamav-quarantine/"
suspicious-fileは、検出された実際のファイル名へ置き換えてください。先頭が-のファイル名でもオプションとして解釈されないよう、mv --を使用しています。
検出時に自動で隔離する場合
動作を理解した後であれば、--moveを使って検出ファイルを隔離先へ移動できます。
clamscan --recursive --infected \
--move="$HOME/clamav-quarantine" \
"$HOME/Downloads"
/usrや/libなどのファイルが検出された場合、削除するとDebianやアプリが起動しなくなるおそれがあります。検出名、ファイルの所属パッケージ、入手元を確認し、誤検知を除外してから対処してください。
ClamAV公式ドキュメントも、誤検知が起こり得るため、安易な--removeの使用を避け、--moveなどを検討するよう案内しています。
画面操作でスキャンする
端末操作を減らしたい場合は、ClamAVのグラフィカルフロントエンドClamTkを利用できます。
sudo apt install clamtk
インストール後、アプリ一覧から「ClamTk」を起動します。画面内のファイルまたはディレクトリーのスキャン機能を選び、対象を指定します。
ClamTkは操作画面を提供するソフトウェアです。検出性能を別に追加するものではなく、ClamAVのエンジンと定義ファイルを利用します。定義の更新状態も確認してからスキャンしてください。
エラーが出る場合の対処法
| 症状・表示 | 主な原因 | 確認・対処 |
|---|---|---|
No supported database files found |
定義ファイルが未取得・破損 | clamav-freshclamの状態とログを確認する |
freshclam.log is locked |
自動更新サービスが実行中 | ロックを削除せず、サービスへ更新を任せるか一時停止して手動更新する |
Permission denied |
対象ファイルの読み取り権限がない | 対象と権限を確認し、システム領域だけ必要に応じてsudoを使う |
| フォルダー内のファイルが少ししか検査されない | --recursiveを付けていない |
clamscan -rで再帰スキャンする |
OUTDATEDと表示される |
ClamAV本体が古い | APTでClamAVを含むDebianの更新を適用する |
| スキャンが非常に遅い | 大量のファイル・圧縮ファイル・低速ドライブ | 対象を分割し、外部ファイルの保存先から優先して検査する |
更新サービスのログを確認する
systemctl status clamav-freshclam --no-pager
sudo journalctl -u clamav-freshclam -n 100 --no-pager
ClamAV本体を更新する
sudo apt update
sudo apt upgrade
重要な更新を受け取れるよう、Debianのセキュリティリポジトリを無効にしないでください。更新後に次を実行し、バージョン情報を再確認します。
clamscan --version
定義ファイルの保存先と空き容量を確認する
ls -lah /var/lib/clamav/
df -h /var
/varの空き容量がない場合、定義ファイルを正常に更新できません。不要なログやパッケージキャッシュなどを確認してください。
よくある質問
Linuxでもウイルススキャンは必要ですか?
すべての環境で常駐スキャンが必須とは限りませんが、ダウンロードファイル、メール添付、USBメモリー、Windowsとの共有ファイルを確認する用途では役立ちます。OSとアプリの更新、アクセス権、バックアップも併用してください。
ClamAVをインストールすれば常時保護されますか?
この記事のclamscanはオンデマンド方式です。コマンドを実行した対象だけを検査します。リアルタイム監視はclamav-daemonやclamonaccを使う別の設定です。
Infected files: 0なら完全に安全ですか?
完全な安全を保証する結果ではありません。最新定義で検出できる既知の脅威が、正常に読み取れた範囲から見つからなかったという意味です。エラーの有無と定義の更新状態も確認してください。
スキャンにsudoは必要ですか?
自分のホームフォルダーやUSBメモリーは通常不要です。自分に読み取り権限がないシステム領域を検査するときだけ、対象を確認したうえでsudoを使用します。
Windows用のファイルも検出できますか?
ClamAVはWindows実行ファイル、Office文書、PDF、各種アーカイブなどにも対応しています。NTFSドライブや共有フォルダーがDebianへマウントされ、読み取り可能であればスキャンできます。
スキャン中にPCを使ってもよいですか?
使用できますが、CPUとストレージの負荷により動作が遅くなることがあります。大容量のスキャンは、作業の少ない時間帯に実行するとよいでしょう。
まとめ
Debian 13では、clamavとclamav-freshclamをAPTから導入すれば、clamscanでウイルススキャンを実行できます。
- スキャン前に
clamav-freshclamの稼働状態を確認する - フォルダーには
--recursiveを付ける - 初回は
--removeを使わず、結果だけを確認する FOUND、Infected files、終了コード、エラーを確認する- 検出ファイルは誤検知を確認してから隔離・削除する
日常的には、外部からファイルが入るダウンロードフォルダー、メール添付の保存先、USBメモリー、共有フォルダーを優先して検査すると、負荷を抑えながら確認できます。
