ClamAVをデーモンで動かす(ClamAV-Daemon)

UbuntuにアンチウイルスソフトClamAV-Daemonを導入する

「ClamAV-Daemonを使った高速スキャン」の使い方を記載しています。

デーモンを使った高速でのウイルススキャンは、デーモンを使わないClamAVでのスキャンと変わらず難しい操作ではありませんが、仕組みが煩雑に感じてしまったため、ClamAVとは別ページで使い方をまとめてみました。ClamAVの使い方はこちらのページをお読みください。

目次

ClamAV-Daemonをインストール

「端末」を起動する

Dock(ドック)内の「Dock内の「アプリを表示」アイコンアプリを表示」アイコンをクリックし、アプリ一覧の中から「端末」を選び「クリック」します。または、[Ctrl]+[Alt]+[T]で「端末」を開きます。

端末アプリ

パッケージリストの情報を更新

clamav-daemonをインストールする前にパッケージリスト情報を更新します。端末に以下を入力して[Enter]を押します。

sudo apt update

※パスワードを求められたら「パスワードを入力」して[Enter]キーを押す

パスワードを入力しても「✱印」などのタイピングの履歴は出ません。パスワードを入力後[Enter]を押せば入力できます。

インストール済みのパッケージを更新

新しいパッケージをアップグレードします。端末に以下を入力して[Enter]を押します。

sudo apt upgrade

※続行しますか?[Y/n]と聞かれるので、[y]キーを押す

yはyes、nはnoです。

ClamAV-Daemonをインストール

はじめに確認です。ClamAVのインストールはお済みですか

ClamAVをインストールしていない場合は、ClamAVのインストールを済ませてから以下のコードを実行するか、下の「2:」のコードでClamAVとClamAV-Daemonを同時にインストールしてください。

1:すでにclamavをインストール済みで、追加でclamav-daemonだけをインストールする場合は、以下を入力して[Enter]を押します。

sudo apt install clamav-daemon

clamav-daemonだけをインストールします。

2:clamavをまだインストールしていない場合は、clamavとclamav-daemonを同時にインストールする場合は、以下を入力して[Enter]を押します。

sudo apt install clamav clamav-daemon

clamavとclamav-daemonを同時にインストールします。

「2」のコードで同時にインストールした場合は、ClamAVのページで初期設定を済ませてください

これでClamAVデーモンのインストールが完了しました。インストールが完了しても、アプリ一覧にClamAVデーモンは現れません

ClamAV-Daemonの稼働状況を確認

実際にウイルススキャンを実施する前にClamAVデーモンが正常に稼働しているかを確認します。

「端末」で、以下を入力します。

systemctl status clamav-daemon

※(状況が出力され続けてしまうので)下のような情報が表示されたら[Ctrl]+[C]キーを同時に押し出力を止めてください。また、画面の幅によっては情報が見切れてしまうことがあるので、その場合は、マウスドラッグで画面の横幅を広げると見切れずに行末まで確認できます。

確認する箇所と内容の説明をします。「clamav-daemon」が正常に稼働していることを確認してください

 説明 
  • 丸印はユニットの状態を表し、緑の丸印はアクティブな状態を表します。塗りのない丸印「○」の場合は、ウイルス定義ファイルの自動更新が停止したままになっているのでsystemctl start再稼働させてください(前項参照)
  • Loadedの行「loaded」はユニットがメモリにロードされている状態を示し、(括弧)内はユニットファイルのパスと有効化状態が表示されています。serviceとpresetが enabled(有効)になっていればOKです。disable(無効)の場合はsystemctl enableで自動起動を有効にしてください(次項参照)。
  • Activeの行:サービスが開始されているかの状態を表しています。 active(running)ならOKです。「inactive (dead)」と表示されている場合は、ウイルス定義ファイルの自動更新が停止したままになっているのでsystemctl start再稼働させます(前項参照)

service:disabledの場合

上記のように、service:disabledとなっていた場合は、以下を実行して自動更新を有効にします。

sudo systemctl enable clamav-daemon

すると以下のように、enabled(有効)になります。

これで、ウイルススキャンをする準備が整いました。

ウイルススキャンを実施する

ウイルススキャンは、端末を使って実施します。

「端末「端末」アプリアイコン」に以下の書式のように打ち込んで[Enter]キーを押すと、直ちにウイルススキャンが始まります。

ClamAVのclamscanコマンドでは、「ウイルスデータペースを読み込んでからウイルススキャンが開始」されますが、デーモンを使うと、ウイルスデータベースはすでに読み込んでいる状態で待機しているので、直ちに開始され、結果、高速スキャンが可能になりまます。

ウイルスは、clamscan同様、自動的に削除や隔離されません。ウイルスが検出された時は、ユーザーが確認の上で実施します。

書式

基本の書式は以下です。[括弧]内は指定するデータに置き換え、入力後[Enter]キーを押します。

clamdscan --fdpass [options] [file/derectory]

※ [options]はclamdscanのオプション、[file/derectory]は、調べたいパスを指定するという意味です。

補足

--fdpassはオプションのひとつですが、このオプションをつけないとデーモンスキャンが実行されません。

–fdpassを記述せずに、clamdscanを実行すると以下のエラーが表示されます。

※「ファイルパスチェックの失敗:許可が拒否されました。エラー」とエラーメッセージが表示され、スキャンが終了します。

その他オプションの説明は後項を参照してください

以下、具体例です。

ホームディレクトリをスキャン

ホームディレクトリをスキャンする

clamdscan --fdpass /home

システム全体をスキャン

clamdscan --fdpass /

※システム全体をスキャンするためのパスは/です。

[外付けの]USBをスキャン

clamdscan --fdpass /media/ユーザーネーム/ファイルネーム

※USBのパスは/media/ユーザーネーム/ファイルネームです。USB以外でも、CD-ROMやダウンロードフォルダなど絶対パスを指定してスキャンすることができます。

絶対パスがわからないときは、こちらの記事を参考にすると簡単に調べることができます。

オプション

clamscanのオプションで使用できるいくつかのオプションを抽出して記載します。clamscanとは指定できるオプションは異なるため注意してください。

ヘルプを表示:--helpまたは-h※オプション一覧を見ることもできます。

バージョン番号を表示:--versionまたは-V ※「V」は大文字

スキャンの詳細を表示:--verboseまたは-v※「v」は小文字

ファイルを開き、ファイル記述子をclamdに渡す:--fdpass ※clamdscan時に必須

エラーメッセージのみを表示:--quiet

スキャンレポートをファイルに保存:--log=FILEまたは -l FILE ※FILEにはファイル名とパスを記述(ログについてはこちらの記事で説明しています)

感染したファイルのみ表示:--infectedまたは -i(スキャン途中の詳細表示はなくなります)

感染したファイルをディレクトリに移動する(隔離):--move=DIRECTORYのパス

感染したファイルを削除する:--remove[=yes/no(*)] ※非推奨。感染したファイルは誤検知やシステムに影響を及ぼすなどの理由により、このオプションを使用して直接削除するのは要注意とされています

補足:-r オプション は使えません

clamscanで使用した「サブディレクトリを再帰的にスキャン(--recursive[=yes/no(*)]または -r )オプション」は、サポートされていません。以下のような警告メッセージが表示され、-rオプションは無視されてスキャンが始まります。

※(訳)警告:サポートされていないオプションを無視します –recursive (-r)

スキャン結果の見方

スキャンが完了すると、下のようなスキャン結果が表示されます。clamscanのスキャン結果の表示と多少異なりますが、見方は同じです。「Infected files」の数字でウイルス検出を確認します。

—SCAN SUMMARY—の説明
  • Infected filesはウイルスが見つかったときにファイルの数を表示します。「1」以上の数値が出力されていた場合、「ウイルスが検出された」となります
  • —SCAN SUMMARY—は、スキャンの結果のみ表示します。ウイルスが発見されてもウイルスのパスは表示されません(パスを表示したり、隔離する場合はオプションで指定します)

以上で、ClamAV-Daemonのインストールとスキャン方法の説明は終わりです。

ClamAV-Daemonとは

ここからはClamAV-Damonについて簡単に説明します。

ClamAV-Damonは、高速スキャンや即時スキャンをするためにClamAVをデーモン化したシステムです。ウイルスデータベースを常に読み込んだ状態でバックグラウンドでスキャンを待機しています。clamdscanコマンドが実行されるとすぐにスキャンが開始される仕組みです。

ClamAV-Damonは、設定をカスタマイズすることも可能です。clamd.confという名称のファイルでclamdの挙動を変更したり、追加したりします。

clamav-daemonとは

clamav-daemonは、aptパッケージの名称です。インストールやアンインストールはこのaptパッケージの名称で行います(インストールの説明は前項参照)。clamavと混同しないように注意

clamav-daemonはコマンドではありません。端末で「clamav-daemon」と打ち込んでも、「コマンドが見つかりません」と返されます

clamdscanとは

clamdscanは、デーモンを使ってウイルススキャンをするコマンドです。デーモンにコマンドが送信されるとスキャンが開始され、スキャンが完了するとスキャンレポートが生成されます。clamdscanコマンドを実行するには、ClamAV-Daemonが稼働している必要があります。(ウイルススキャンの説明は前項参照、デーモンの稼働状況の確認は前項参照

  • 使えるオプションを調べるにはclamdscan -hまたはclamdscan --help(オプションの説明は前項参照
  • マニュアルを読みたいときはman clamdscanマニュアル閲覧を終了するには[q]キーを押します

clamd.confとは

clamd.confは、ClamAV-Damonの設定ファイルです。clamdの挙動を設定・変更することができます。(通常は、変更せずそのままでOKです)

  • clamd.confファイルの場所は、/etc/clamav/clamd.conf です。
  • マニュアルを読みたいときはman clamd.confマニュアル閲覧を終了するには[q]キーを押します
  • コマンドではないのでclamd.conf -hは使用できません。

clamd.confはコマンドではありません。端末で「clamd.conf」と打ち込んでも、「コマンドが見つかりません」と返されます

活用・応用編

デーモンを使用すると、高速スキャンだけでなく、即時スキャンを使うことができるようになります。オンアクセススキャンとも呼びます。

オンアクセススキャン(即時スキャン)

clamd.confファイルの設定内容を変更したり、権限を変更したり、他のパッケージを使用したりすると即時スキャンができるようになります。例えば、ファイルを開こうとしたその瞬間にウイルススキャンを実行するなど、常にウイルス監視状態にすることができます。

  • (このページの説明だけでは)使えないコマンドです。
  • 使えるオプションを調べるにはclamonacc -hまたはclamonacc --help(オプションの説明は前項参照
  • マニュアルを読みたいときはman clamonaccマニュアル閲覧を終了するには[q]キーを押します

オンアクセススキャンは、権限を変更するなど高度な設定が必要なので、当ページでは説明をしていません。

ClamAVとClamAV-Daemon、どっち?

ClamAVをデーモン化すると高速スキャンが可能になったり、オンアクセススキャンができたりと便利なシステムですが、デーモン化することでバックグラウンドで常にメモリを消費しているため、場合によってはPCが重くなったりすることもあるようです。

デーモン稼働中のメモリ消費は約500MBです。常に500MBほどのメモリが使われています。

「定期的にスキャンをする」だけが目的なら、ClamAV-Damonを使わなくてもウイルススキャンという目的は果たせます。デーモンを使用せずclamscanコマンドでスキャンすれば、メモリの使用はスキャン実施中のときだけです。

clamscanコマンドでウイルススキャンをするときだけ約500MBほどのウイルスデータベースを読み込んでスキャンします。スキャンが終了するとメモリは開放されます。

上記のような理由から、デーモンを使ってウイルススキャンをするかどうかを改めて考察してみるのもよいのではないでしょうか。目的によって、デーモンを使う、使わないを決める考え方の一例を挙げてみます。

  • オンアクセススキャン(即時スキャン)をしたいなら、デーモン使用
  • メールファイルを即時監視したいなら、デーモン使用
  • できるだけ高速でウイルススキャンをしたいなら、デーモン使用
  • 手動でウイルススキャンするだけなら、デーモンなし
  • PCのメモリ使用量を節約したいなら、デーモンなし
  • いつもclamscanコマンドでウイルススキャンをおこなっているなら、デーモンなし

今後、「デーモンを使わないスキャン」でウイルス対策をしようと決めた場合、デーモンシステムで常に使われている500MBほどのメモリをどうするか?を考える必要があります。

ClamAV-Damonをインストール後、自動的にactive(稼働中)になっている500MBほどのメモリをどうしますか?

  • デーモンはそのまま稼働させておく➡何もせずこのままでOK
  • 今、デーモンは使わないが、いつか使うかもしれないから今だけ稼働を止めたい➡以下の「ClamAV-Damonを止めるには」を参照してください
  • デーモンは使わないので、アンインストールしたい➡以下の「アンインストール」を参照してください

ClamAV-Daemonを止めるには?

デーモンを止める処理をおこなう方法を説明しています。止めるのはclamav-daemonです。同じデーモンでもclamav-freshclamは止めてはいけません。注意してください。(自己責任でお願いします)

以下は、筆者が実際に「ClamAV-Damonを止めてみた」記録です。この他にも方法はあるかもしれません。

sudo systemctl disable clamav-daemon

実行すると、いくつかの処理が実行され、最後に以下のようなメッセージが出ました

「clamav-daemon.serviceは無効化しましたが、そのトリガーユニットはまだアクティブです:clamav-daemon.socket」とのことなので、まずは以下を実行。

sudo systemctl stop clamav-daemon

「clamav-daemon.serviceを停止していますが、トリガーユニットはまだアクティブです:clamav-daemon.socket」とのことなので、次に以下を実行。

sudo systemctl stop clamav-daemon.socket

警告メッセージなども出現せず処理が終了しました。最後に以下を実行し、現在の状況を確認して終了です。

systemctl status clamav-daemon

※LoadedがLoadedのまま、presetもenabledなのが気になりますが、とりあえずデーモンは止まっているようです(clamdscanは実行できません)

ユーザーネーム@PCネーム:~$  clamdscan

を実行すると、「clamdに接続できませんでした」とエラー表示が出ます。

clamav-daemonをアンインストールするには?

今後もデーモンを使用する予定がない場合には、デーモンだけをアンインストールしても良いのではないでしょうか。

sudo apt remove clamav-daemon

※関係ファイルを「残す」とか「残さない」などアンインストールするには注意が必要です。いきなり上のコマンドを実行する前に、何をアンインストールするのか?何がアンインストールされるのかを確認してから行うことをおすすめします。アンインストールは、自己責任でおこなってください。

aptパッケージのアンインストールについて、詳しくはこちらに記録してます。

参考資料

ClamAV公式ドキュメント:https://docs.clamav.net
ClamAV公式ドキュメント:https://docs.clamav.net/manual/Usage/Scanning.html#clamdscan
ClamAV公式ドキュメント:https://docs.clamav.net/faq/faq-uninstall.html

clamavでウイルススキャン:https://joenoji325.com/clamav/
Clamav その2:https://joenoji325.com/clamav2/

【徹底解説】Ubuntu22.04にClamAVをインストール・設定する方法!:https://bytes-box.com/install-clamav/

Clam Anti Virus(ClamAV)インストールと設定:https://www.fumibu.com/use_clam-anti-virus_debian-package/

ClamAVによる定期ウイルススキャンの設定:https://inaba-serverdesign.jp/blog/20170913/clamav_scan_virus_install.html

よかったらシェアしてね!
目次