Linux MintにClamAVをインストールし設定する

Linux

コンピューターウイルスは利用者数が圧倒的に多い 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がちゃんとテストウイルスを検出できるか確認してみてください。

Download Anti Malware Testfile - EICAR
Download Anti Malware Testfile, What is the eicar test file? Who needs the Anti-Malware Testfile, Download Anti Malware ...

以下の画像の一番左にある「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は本当に貴重な存在だと思います。

参照にさせていただいたサイト様

【Ubuntu 20.04/18.04 LTS Server】ClamAVで定期的にウイルスチェックし、メール通知する
前記事でUbuntu Serverをインストールしたが、念の為、アンチウイルスソフトウェア ClamAV をインストールし、定期的にチェックするようにする。 追記(2020/9/6) Ubuntu 20.04 LTS Serverでも動作す
Ubuntu Desktop 18.04でClamAVによるウィルスチェックを実行する!
Ubuntu 18.04 LTS DesktopでClamAVを使用してウィルスチェックを実行します。Ubuntu等のLinux環境では、現状ではウィルスチェックは不要との見解が多いですが、Windo
Upgrading - ClamAV Documentation
An open source malware detection toolkit and antivirus engine.
Login
Login

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

crontabの書き方や確認、仕組みや落とし穴を理解する
crontabの書き方や確認方法、そもそもの仕組みやcronとの違い、事例別スケジュールの書き方や実行されないときの対処法や慣れないとよくハマる落とし穴やつまづきポイント、サーバ以外での活用術について説明します。

コメント