インストール - Clam AntiVirus
概要
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/*