インストール - Clam AntiVirus

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

Clam AntiVirus(Clam AV)は、オープンソースのクロスプラットフォームのウイルス対策ソフトであり、
ウイルスを含む様々な種類の悪意のあるソフトウェアを検出できるツールキットである。

Clam AntiVirusにおける最も一般的な使い方は、メールサーバ上でのサーバサイドメールウイルススキャナである。
また、Clam AntiVirusには、コマンドラインスキャナ、データベースの自動更新機能、アンチウィルスエンジン上で動作するスケーラブルなマルチスレッドデーモン等が含まれている。

メールゲートウェイのスキャンソフトとして広く使用されており、
Clam AntiVirusには、マルチスレッドのスキャナデーモン、オンデマンドのファイルスキャン用のコマンドラインユーティリティ、自動シグネチャアップデートが含まれている。


Clam AntiVirusのインストール

パッケージ管理システムからインストール

以下のコマンドを入力して、Clam AntiVirusをインストールする。

# RHEL
sudo dnf --enablerepo=epel install clamav clamav-update    # Clam AntiVirusをEPELからインストール

# SUSE
sudo zypper install pcre-devel clamav clamav-database clamav-nodb clamz


Clam AntiVirusのインストール完了後、Clam AntiVirusの設定ファイルを以下のように編集する。

sudo sed -i -e "s/^Example/#Example/" /etc/freshclam.conf  # Exampleから始まる行をコメントアウト


RHELの場合、Clam AntiVirusのウイルスデータベースの自動更新を実施しないようにするため、FRESHCLAM_DELAY項目をdisabled-warnに設定する。

sudo vi /etc/sysconfig/freshclam


# /etc/sysconfig/freshclamファイル

FRESHCLAM_DELAY=disabled-warn


ソースコードからインストール

Clam AntiVirusのビルドに必要な依存関係のライブラリをインストールする。

# RHEL
sudo dnf install libcurl-devel libjson-c-devel libmilter1_0 libxml2-devel pcre-devel pcre2-devel libopenssl-devel

# SUSE
sudo zypper install cmake libbz2-devel check-devel libcjson1 cJSON-devel libjson-c-devel libcjson1 libcurl-devel libxml2-devel \
                    python3-pytest ncurses-devel libopenssl-devel pcre-devel pcre2-devel sendmail-devel zlib-devel libmspack-devel \
                    libmilter1_0 systemd-devel valgrind-devel cargo rust-cbindgen


Clam AntiVirusの公式Webサイトにアクセスして、Clam AntiVirusのソースコードをダウンロードする。

ダウンロードしたClam AntiVirusを解凍して、ビルド向けディレクトリを作成する。

tar xf clamav-<バージョン名>.tar.gz

cd clamav-<バージョン名>
mkdir build && cd build


Clam AntiVirusをビルドおよびインストールする。

# ClamAV 1.1.0以降の場合
cmake -DCMAKE_BUILD_TYPE=Release              \
      -DCMAKE_INSTALL_PREFIX=<Clam AntiVirusのインストールディレクトリ> \
      -DENABLE_SHARED_LIB=ON                  \  # 共有オブジェクトファイルを有効にする場合
      -DENABLE_MILTER=OFF                     \  # 電子メールのフィルタリングを行うためのプロトコルおよびAPIを有効にする場合
      -DENABLE_SYSTEMD=ON                     \  # Systemdサービスユニットを有効にする場合
      -DCLAMAV_USER=<Clam AntiVirusのユーザ名>  \  # Clam AntiVirusを実行するユーザ名を変更する場合 (デフォルトは、clamav)
      -DCLAMAV_GROUP=<Clam AntiVirusのグループ> \  # Clam AntiVirusを実行するグループ名を変更する場合 (デフォルトは、clamav)
      ..
cmake --build . --config Release -j $(nproc)
sudo cmake --build . --config Release --target install


# ClamAV 1.0.1以前の場合
../configure --prefix=<Clam AntiVirusのインストールディレクトリ> \
             --disable-clamav                            \
             --with-systemdsystemunitdir=no  # ホームディレクトリにインストールする場合
make -j $(nproc)
sudo make install


※注意 1
-DENABLE_MILTERオプション (Mail Filter) とは、電子メールのフィルタリングを行うためのプロトコルおよびAPIである。
主に、SendmailやPostfix等のメールトランスファーエージェント (MTA) と連携して動作する。
メールの受信処理中にリアルタイムでスキャンやフィルタリングを行うことができる。

このオプションは、メールサーバ管理者やClam AntiVirusをメールシステムと統合したいユーザにとって有効である。
一般的なデスクトップユーザの場合は、このオプションを有効にする必要はない。

※注意 2
-DENABLE_SYSTEMDオプションを有効にする場合、スーパユーザ権限でインストールする必要がある。
これは、/usr/lib/systemd/systemディレクトリにおいて、以下に示すClam AntiVirusのSystemdサービスファイルを作成する必要があるからである。

  • /usr/lib/systemd/system/clamav-dclamonacc.service
  • /usr/lib/systemd/system/clamav-daemon.service
  • /usr/lib/systemd/system/clamav-daemon.socket
  • /usr/lib/systemd/system/clamav-freshclam.service
  • /usr/lib/systemd/system/clamav-freshclam-once.service
  • /usr/lib/systemd/system/clamav-freshclam-once.timer


もし、Clam AntiVirusをホームディレクトリにインストールした場合は、Clam AntiVirusのインストールディレクトリに対して、ユーザ名およびグループ名を一般ユーザに変更してもよい。

sudo chown -R <ユーザ名>:<ユーザのグループ名> <Clam AntiVirusのインストールディレクトリ>


次に、/<Clam AntiVirusのインストールディレクトリ>/etcディレクトリにあるclamd.conf.sampleファイルとfreshclam.conf.sampleファイルを元に、
clamd.confファイルとfreshclam.confファイルを作成する。

cd /<Clam AntiVirusのインストールディレクトリ>/etc

cp clamd.conf.sample \
   clamd.conf

cp freshclam.conf.sample \
   freshclam.conf


最後に、clamd.confファイルとfreshclam.confファイルを、以下に示すように編集する。

sed -i -e "s/^Example/#Example/" /<Clam AntiVirusのインストールディレクトリ>/clamd.conf      # Exampleから始まる行をコメントアウト
sed -i -e "s/^Example/#Example/" /<Clam AntiVirusのインストールディレクトリ>/freshclam.conf  # Exampleから始まる行をコメントアウト


最後に、ビルドディレクトリにあるinstall_manifest.txtファイルを、Clam AntiVirusのインストールディレクトリにコピーする。

cp install_manifest.txt <ClamAVのインストールディレクトリ>


ソースコードからインストールしたClam AntiVirusをアンインストールする場合、上記のinstall_manifest.txtファイルを使用する。

cd <Clam AntiVirusのインストールディレクトリ>

xargs rm < install_manifest.txt
# または
sudo xargs rm < install_manifest.txt



ウイルスのパターンファイルの更新

Clam AntiVirusのウイルスの定義を更新する。

sudo freshclam



ウイルススキャンの実行

動作確認として、ウイルススキャンを実行する。

sudo clamscan --infected --remove --recursive /home

# スキャン結果
----------- SCAN SUMMARY -----------
Known viruses: 3575245
Engine version: 0.98.4
Scanned directories: 2
Scanned files: 3
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 10.369 sec (0 m 10 s)


また、無害ウイルスを使用したウイルススキャンを試すこともできる。
お試しの無害ウィルスをダウンロードする。

sudo curl -O http://www.eicar.org/download/eicar.com


ウイルススキャンを実行する。

sudo clamscan --infected --remove --recursive .

# スキャン結果
./eicar.com: Eicar-Test-Signature FOUND
./eicar.com: Removed.     # 無害ウィルスが検出された
----------- SCAN SUMMARY -----------
Known viruses: 3575245
Engine version: 0.98.4
Scanned directories: 3
Scanned files: 10
Infected files: 1
Data scanned: 0.00 MB
Data read: 256.57 MB (ratio 0.00:1)
Time: 10.307 sec (0 m 10 s)


以下の例では、指定したディレクトリを再帰的にスキャンしている。この時、スキャンするファイルサイズの上限は10[MB]である。

sudo clamscan -r --bell --max-filesize=10M ~/Downloads



ClamTKのインストール

パッケージ管理システムからインストール

# RHEL
sudo dnf install clamtk

# SUSE
sudo zypper install clamtk


ソースコードからインストール

ClamTKを実行するために必要なライブラリをインストールする。

sudo zypper install perl-Cairo perl-Cairo-GObject perl-Encode perl-ExtUtils-Depends perl-ExtUtils-PkgConfig perl-Glib \
                    perl-Glib-Object-Introspection perl-Gtk3 perl-JSON perl-JSON-XS perl-Text-CSV perl-Text-CSV_XS \
                    perl-Types-Serialiser perl-common-sense typelib-1_0-GdkPixdata-2_0


ClamTKのGithubにアクセスして、ClamTKをダウンロードする。
または、Gitコマンドを使用してダウンロードする。

tar xf clamtk-<バージョン>.tar.xz
cd clamtk-<バージョン>
# または
git clone https://github.com/dave-theunsub/clamtk.git clamtk
cd clamtk


もし、ClamAVを任意のディレクトリにインストールしている場合、/<ClamTKのインストールディレクトリ>/libディレクトリにあるソースコードを編集する必要がある。

 # Analysis.pmファイルの848行目あたり
 
 #$fcb->set_filename('/usr/bin/clamtk');  <- コメントアウト
 $fcb->set_filename('/<ClamTKのインストールディレクトリ>/clamtk');


 # Assistant.pmファイルの169行目あたり
 
 '/<ClamAVのインストールディレクトリ>/share/clamav', '/<ClamAVのインストールディレクトリ>/share/clamav',


 # App.pmファイル
 
 # 42行目あたり
 #$path->{ images } = '/usr/share/pixmaps/';  <- コメントアウト
 $path->{ images } = '/<ClamTKのインストールディレクトリ>/images/';
 
 # 94行目あたり
 : ( -e '/<ClamAVのインストールディレクトリ>/bin/freshclam' ) ? '/<ClamAVのインストールディレクトリ>/bin/freshclam'
 
 # 102行目あたり
 : ( -e '/<ClamAVのインストールディレクトリ>/etc/freshclam.conf' ) ? '/<ClamAVのインストールディレクトリ>/etc/freshclam.conf'
 
 # 117行目あたり
 : ( -e '/<ClamAVのインストールディレクトリ>/bin/sigtool' ) ? '/<ClamAVのインストールディレクトリ>/bin/sigtool'
 
 # 127行目あたり
 : ( -e '/<ClamAVのインストールディレクトリ>/bin/clamscan' ) ? '/<ClamAVのインストールディレクトリ>/bin/clamscan'
 
 # 139行目あたり
 : ( -e '/<ClamAVのインストールディレクトリ>/bin/clamdscan' ) ? '/<ClamAVのインストールディレクトリ>/bin/clamdscan'
 
 # 181行目あたり
 /<ClamAVのインストールディレクトリ>/share/clamav
 
 # 237行目あたり
 /<ClamAVのインストールディレクトリ>/share/clamav
 
 # 337行目あたり
 #local $ENV{ 'PATH' } = '/bin:/usr/bin:/usr/local/bin';  <- コメントアウト
 local $ENV{ 'PATH' } = '/bin:/usr/bin:/usr/local/bin:/<ClamAVのインストールディレクトリ>/bin';


/usr/lib/perl5/vendor_perl/<Perlのバージョン>/ClamTkディレクトリを作成して、
ダウンロードしたファイルのlibディレクトリ内にあるファイルを、/usr/lib/perl5/vendor_perl/<Perlのバージョン>/ClamTkディレクトリにコピーする。

# ディレクトリの作成
sudo mkdir -p    /usr/lib/perl5/vendor_perl/<Perlのバージョン>/ClamTk

# ClamTKのソースコードファイルのコピー
sudo cp lib/*.pm /usr/lib/perl5/vendor_perl/<Perlのバージョン>/ClamTk

# 特定のソースコードファイルのパーミッションの変更
sudo chmod go+r  /usr/lib/perl5/vendor_perl/<Perlのバージョン>/ClamTk/App.pm \
                 /usr/lib/perl5/vendor_perl/<Perlのバージョン>/ClamTk/Schedule.pm

※Perlのバージョンが5.26.1の場合
/usr/lib/perl5/vendor_perl/5.26.1/ClamTk


ClamTKのデスクトップエントリファイルを作成する。

vi ~/local/share/applications/ClamTK.desktop


 # ~/local/share/applications/ClamTK.desktopファイル
 
 [Desktop Entry]
 Type=Application
 Name=ClamTk
 GenericName=Virus Scanner
 GenericName[ja]=ウイルススキャナ
 Comment=Scan for threats...
 Comment[ja]=ウィルスをスキャンします..
 TryExec=/<ClamTKのインストールディレクトリ>/clamtk
 Exec=/<ClamTKのインストールディレクトリ>/clamtk %F
 Icon=/<ClamAVのインストールディレクトリ>/images/clamtk.png
 Categories=GTK;GNOME;Utility;
 Keywords=antivirus;virus;malware;scan;scanner;
 Terminal=false
 StartupNotify=true


ClamTKを日本語化する場合

/<ClamTKのインストールディレクトリ>/po/ja.moファイルのファイル名を変更して、/usr/share/locale/ja/LC_MESSAGESディレクトリにコピーする。

sudo cp /<ClamTKのインストールディレクトリ>/po/ja.mo \
        /usr/share/locale/ja/LC_MESSAGES/clamtk.mo



エラー関連

パーミッションエラー

もし、ClamTKの実行時において、Perlファイルのパーミッションでエラーが出力される場合は、グループとその他のユーザに対して読み込み権限を付加する。

sudo chmod go+r /usr/lib/perl5/vendor_perl/ClamTk/*