コンピューターウイルスは利用者数が圧倒的に多い Windows を標的にすると言われていますが、絶対に Linux を標的にしないとは限りません。そこで今回はオープンソースで開発されているフリーなアンチウイルスソフトである ClamAV (Clam AntiVirus) を導入したいと思います。
環境は Linux Mint 21 MATE Edition 64bit です。
ちなみに、ClamAVは基本的に端末(CUI)からコマンドで操作するソフトですが、ClamTk と呼ばれるGUIフロントエンドも存在するので、端末やコマンド操作が苦手な方はこの ClamTk を使うことをおすすめします。
ClamTkの導入方法については、こちらの記事をご覧ください。
ClamAVのインストール
いつも通りに端末を開き apt からインストールします。
$ sudo apt install clamav clamav-daemon
ClamAVが起動しているか確認します。
$ systemctl list-unit-files | grep clamav
以下のように表示されていたら有効になっています。
clamav-daemon.service enabled
clamav-freshclam.service enabled
ウイルススキャン前にやること
ウイルス定義ファイルの更新でエラーが出ないようにする
何もしないまま sudo freshclam を実行してウイルス定義ファイルを更新すると以下のようにエラーが出てしまいます。
$ sudo freshclam
ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile =
/var/log/clamav/freshclam.log).
ERROR: initialize: libfreshclam init failed.
ERROR: Initialization error!
そこで、以下のコマンドを実行してエラーが出ないようにします。
$ sudo rm /var/log/clamav/freshclam.log
$ sudo touch /var/log/clamav/freshclam.log
$ sudo chown clamav:clamav /var/log/clamav/freshclam.log
次に /etc/logrotate.d/clamav-freshclam を開きます。
$ sudo nano /etc/logrotate.d/clamav-freshclam
「create 640 clamav adm」と書かれている箇所を「create 640 clamav clamav」に書き換えて保存します。
ウイルス定義ファイルの更新と隔離ディレクトリの作成
編集が完了したら、再度ウイルス定義ファイルを更新します。
$ sudo freshclam
最後に、ウイルスを隔離するディレクトリを作成すれば準備は完了です。
$ mkdir ~/detected_virus
Your ClamAV installation is OUTDATED! とエラーが出る場合
ウイルス定義ファイルを更新する際に、以下のようなエラーが表示されてウイルス定義ファイルの更新ができない場合があります。エラーが出なかった方は ウイルス検索を実行する にスキップしてください。
$ sudo freshclam
Fri Dec 2 22:55:01 2022 -> ^Your ClamAV installation is OUTDATED!
Fri Dec 2 22:55:01 2022 -> ^Local version: 0.103.6 Recommended version: 0.103.7
これは、現在インストールされているバージョンが「0.103.6」と古く新しいバージョンである「0.103.7」にしなければならないことを意味します。公式サイトからdebパッケージをダウンロードしてインストールするか、ソースコードから自分でビルドする必要があります。
今回は、debパッケージでインストールする方法をご紹介したいと思います。
ClamAVを新しいバージョンにアップグレードする
まず ClamAVの公式サイト にアクセスします。
11月23日に一番新しいバージョンである1.0.0がリリースされていたので clamav-1.0.0.linux.x86_64.deb を選択しダウンロードします。

Downloadsディレクトリに移動後ClamAVをインストールし、不要になったdebファイルを削除します。
$ cd ~/Downloads
$ sudo dpkg -i clamav-1.0.0.linux.x86_64.deb
$ rm clamav-1.0.0.linux.x86_64.deb
freshclam.conf.sample をコピーし、ファイル名を freshclam.conf にします。
$ sudo cp /usr/local/etc/freshclam.conf.sample /usr/local/etc/freshclam.conf
freshclam.conf を開き、Exampleを #Example に書き換えて保存します。
$ cd ~
$ sudo nano /usr/local/etc/freshclam.conf
Example
// 上記を以下に書き換える
#Example
以下のようにClamAVのバージョンが1.0.0と新しくなっていたら、アップデートは完了です。
$ clamscan --version
ClamAV 1.0.0/26738/Fri Dec 2 20:12:06 2022
ウイルス定義ファイルの更新と隔離ディレクトリの作成
ClamAVのアップデートが完了したら、再度ウイルス定義ファイルを更新します。
$ sudo freshclam
最後に、ウイルスを隔離するディレクトリを作成すれば準備は完了です。
$ mkdir ~/detected_virus
ウイルス検索を実行する
長くなりましたが、これでウイルス検索する準備は整いました。試しにウイルス検索をしてみます。
以下はユーザーディレクトリをウイルス検索し、感染したファイルが見つかった場合、ユーザーディレクトリ以下の detected_virus に隔離するコマンドです。
$ clamscan -r --exclude-dir=$HOME/detected_virus --move=$HOME/detected_virus ~
検索の結果、なんとウイルスが3つも検出されました!!
/home/xerus/.cache/mozilla/firefox/7b9g3eic.default-release/cache2/entries/744861F76CABF5BEAB07EC9A9692A9030CCDAD23 PUA.Win.Exploit.CVE_2012_1461-1
/home/xerus/.cache/mozilla/firefox/7b9g3eic.default-release/cache2/entries/7D16762DE935F2679392B60B967BE733D8B4D435 PUA.Win.Trojan.Xored-1
/home/xerus/.cache/mozilla/firefox/7b9g3eic.default-release/cache2/entries/E3CC73E564F87A32194667DC0DBFB9C29367C057 PUA.Win.Trojan.Xored-1
一つは「PUA.Win.Exploit.CVE_2012_1461-1」と書かれているので「エクスプロイト」と呼ばれるソフトの脆弱性を悪用して攻撃を加えるウイルスのようです。その他2つは「PUA.Win.Trojan.Xored-1」と書かれているので「トロイの木馬」ですね…。当然、これらは速攻で削除しました。
追記: ネットで調べてみると、PUAは Potentially Unwanted Application(潜在的に望ましくないアプリケーション)の略でマルウェアほど危険ではないらしいです。ただ望ましくないものであることに変わりはないので削除したほうが良さそうですね。
テストウイルスファイル (eicar.com) で検出テスト
幸運にもウイルスが検出されなかった方は、以下のサイトから eicar.com という無害なテストウイルスファイルをダウンロードして、ClamAVがちゃんとテストウイルスを検出できるか確認してみてください。
以下の画像の一番左にある「eicar.com」をダウンロードして、ウイルス検索を実行すればOKです。

cronでウイルススキャンを自動化する
いつも端末からウイルススキャンをするのは面倒なので、cronに登録してスキャンを自動化します。
bashファイルの作成
まず適当なテキストエディターを開き、以下の内容をコピペして fullscan.sh という名前で保存します (ファイル名は好きな名前で大丈夫です)。 設定内容は環境やパソコンの性能に合わせて自由に書き換えてください。
ちなみに、以下の設定はいくつかのディレクトリを除き clamscan でシステム全体をスキャンする内容となっているため、少し時間がかかります (自分の環境では30分程度かかりました)。
#!/bin/bash
echo =========================================
date
echo =========================================
clamscan / --recursive --exclude=/usr/local/bin/clamscan --exclude-dir=/boot --exclude-dir=/sys --exclude-dir=/proc --exclude-dir=/dev --exclude-dir=$HOME/detected_virus --move=$HOME/detected_virus
先程作成したbashファイルにあらかじめ権限を与えて、/usr/local/bin に移動させます。
$ chmod +x ~/fullscan.sh
$ sudo mv ~/fullscan.sh /usr/local/bin
どのディレクトリにいても端末で以下のコマンドを実行すれば、ウイルススキャンが始まります。
$ bash fullscan.sh
crontab でbashファイルを実行する頻度や時間を設定
次に以下のコマンドを実行して crontab を開きます。一番最初はエディタの指定が求められるので、好きなものを指定してください。自分はいつも使っている nano にしました。
$ crontab -e
どれくらいの間隔でウイルススキャンをするか設定し保存します。以下の例では、12時間おきに fullscan.sh を実行する設定です。間隔だけでなく、何時何分や何曜日といった細かい指定も可能ですが、ここでは割愛します。
* */12 * * * bash /usr/local/bin/fullscan.sh
最後に、ちゃんと設定できているか確認します。先程の設定した内容が表示されれば完了です。
$ crontab -l
* */12 * * * bash /usr/local/bin/fullscan.sh
freshclam と clamscan のログを確認する
freshclamのログは、/var/log/clamav/freshclam.log に、clamscanのログは /var/log/clamav/clamav.log にありますので「sudo less /var/log/clamav/freshclam.log」 などで確認できます。
感想
マルウェアではないにしてもPUAを検知できたので ClamAV をインストールして良かったです。Linux にもウイルス対策ソフトは必要だと認識させられました。無料で利用できるLinux用のアンチウイルスソフトは数少ないので、ClamAVは非常に有り難いソフトです。
以前は多くの会社がLinux向け無償版ウイルス対策ソフトを公開していましたが、はやり儲からないのか、いつの間にか有償版のみになっているのを見ると、オープンソースかつフリーで有り続けるClamAVは本当に貴重な存在だと思います。
参照にさせていただいたサイト様


cronの設定については、以下の記事が非常に詳しく書かれており、とても参考になります。

コメント
[…] https://sub-log.jp/2022/12/03/linux-mint%e3%81%abclamav%e3%82%92%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%97%e8%a8%ad%e5%ae%9a%e3%81%99%e3%82%8b/ […]