インストール - 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.0.1以前の場合 ../configure --prefix=<Clam AntiVirusのインストールディレクトリ> \ --disable-clamav --with-systemdsystemunitdir=no # ホームディレクトリにインストールする場合 make -j $(nproc) sudo make install # ClamAV 1.1.0以降の場合 cmake -DCMAKE_INSTALL_PREFIX=<Clam AntiVirusのインストールディレクトリ> \ -DCMAKE_BUILD_TYPE=Release -DENABLE_SHARED_LIB=ON -DENABLE_MILTER=OFF -DENABLE_SYSTEMD=ON .. cmake --build . --config Release -j $(nproc) sudo cmake --build . --config Release --target install
スーパユーザ権限でインストールする理由は、/usr/lib/systemd/systemディレクトリにおいて、以下に示すClamAVの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のインストールディレクトリに対して、以下のコマンドを実行する。
sudo chown -R <ユーザ名>:<ユーザのグループ名> <Clam AntiVirusのインストールディレクトリ>
次に、/<Clam AntiVirusのインストールディレクトリ>/etcディレクトリにあるclamd.conf.sampleファイルとfreshclam.conf.sampleファイルを元に、
clamd.confファイルとfreshclam.confファイルを作成する。
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/*