Clam AntiVirus(ClamAV)とは?
概要
Clam AntiVirus(以下、ClamAV)は、主にUNIX系OS向けに開発されたオープンソースのアンチウイルスソフトウェアです。ClamAVはもともと2002年にTomasz Kojmによって開発され、現在はCisco Systemsがメンテナンスを行っています。対応OSはUNIX系(Linux、BSD、Solarisなど)に限らず、Windows、macOSと幅広いプラットフォームに対応しています。個人的にはLinuxの無料アンチウイルスソフトと言えばClamAVが定番ではないかと思います。
機能面では、ファイルやディレクトリ、メールの添付ファイルなどをスキャンしてウイルスやマルウェアを検出するウイルススキャン、リアルタイムで特定のファイルやディレクトリに対してスキャンを行うリアルタイムスキャン、定期的に更新されるウイルスデータベースによる最新の脅威への対応などがあります。
これらの機能を利用することでメールサーバーのウイルススキャンとして使用されたり、ウェブサーバーでアップロードファイルのチェックに利用されたりします。加えて、高速なスキャンエンジンを持ち、特に大規模なメールサーバーやファイルサーバーでの使用に適しています。
またClam AVはウィルスやマルウェアスキャンに特化しているため、不正アクセスよる操作(ルートキット攻撃)を防止するにはRKHunterなどのツールを利用することも考慮する必要があります。なおこの2つは共存が可能です。
ClamAVのインストールとウィルス検知
前提
ubuntu 20.04 LTS
インストールと設定
ClamAVの公式サイトを参考に下記のコマンドでClamAVをインストールします。公式ページにはいろいろなパッケージが掲載されていますが、clamav
と clamav-daemon
で十分との記載があります。最後にclamd -v
でバージョン情報が表示されていればインストール完了です。
sudo apt update
sudo apt install -y clamav clamav-daemon
clamd -v
続いてClamAVの設定をしていきます。ここではroot権限で実行するように設定をすることでスキャンの漏れを防ぎます。まずはclamd.confで設定を変更します。
vi /etc/clamav/clamd.conf
#User clamav
User root
さらにウイルススキャンを確実に行うようにするためウイルス定義ファイル最新とCPUの高負荷防止対策にします。特に後者のCPU高負荷対策はこちらの記事にあるようにスキャン中にCPUの高負荷状態が続くことによるウイルススキャンの誤動作を防止します。
# ウイルス定義ファイルの更新
sudo systemctl stop clamav-freshclam.service
freshclam
sudo systemctl start clamav-freshclam.service
# CPU高負荷防止対策
vi /lib/systemd/system/clamav-daemon.service
[Service]
…
TimeoutStartSec=420
CPUQuota=50% <-追記
systemctl daemon-reload
systemctl restart clamav-daemon.service
最後にサービスの状態を確認します。下記のコマンドを実行し6行目のようにactive(running)で動作確認ができれば設定は終了です。
sudo systemctl status clamav-daemon.service
● clamav-daemon.service - Clam AntiVirus userspace daemon
Loaded: loaded (/lib/systemd/system/clamav-daemon.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/clamav-daemon.service.d
mqextend.conf
Active: active (running) since Sun 2024-06-16 22:38:23 JST; 4 days ago
Docs: man:clamd(8)
man:clamd.conf(5)
https://docs.clamav.net/
Main PID: 662 (clamd)
Tasks: 2 (limit: 2279)
Memory: 4.6M
CGroup: /system.slice/clamav-daemon.service
mq662 /usr/sbin/clamd --foreground=true
AppArmor Utilsの設定
AppArmor Utilsはセキュリティ対策ツールの1つであり、アプリケーションのファイルやデバイスへのアクセスを制御します。UbuntuではAppArmorはデフォルトでインストールされており、root で実行できるアプリケーションを制限しています。ClamAVをroot実行させるため下記のコマンドを実行します。
aa-complain clamd
Setting /usr/sbin/clamd to complain mode.
テスト用ウイルスのダウンロードとウイルス検知テスト
テスト用ウイルスはこちらのサイトからダウンロードできます。
cd
wget https://secure.eicar.org/eicar.com.txt -O ./eicar.com.txt
wget https://secure.eicar.org/eicar_com.zip -O ./eicar_com.zip
それでは実際に無害なウィルスをダウンロードしてClamAVが正常に動作しているかテストしたいと思います。下記のclamscan --infected --remove --recursive
コマンドを実行し結果を確認して下さい。(なお細かいオプションについてはこちらの記事に詳細が記載されています)
clamscan --infected --remove --recursive
root/eicar_com.zip: Win.Test.EICAR_HDB-1 FOUND
/root/eicar_com.zip: Removed.
/root/eicar.com.txt: Win.Test.EICAR_HDB-1 FOUND
/root/eicar.com.txt: Removed.
----------- SCAN SUMMARY -----------
Known viruses: 8694775
Engine version: 0.103.5
Scanned directories: 15
Scanned files: 12
Infected files: 2
Data scanned: 0.13 MB
Data read: 0.07 MB (ratio 1.94:1)
Time: 22.618 sec (0 m 22 s)
Start Date: 2024:06:21 05:36:59
End Date: 2024:06:21 05:37:22
3行目と5行目からダウンロードした2つのテスト用ウイルスファイルが除去されており、12行目でファイルが2つ検出されていることがわかりますね。これでClamAVによるウイルススキャンができていることが確認できました!
まとめ
本記事ではClamAVによるウイルス対策について紹介しました。ClamAVは無料とはいえ歴史も古く信頼できるウイルス対策ソフトの1つですので、linuxを構築する際はぜひ利用してみてくださいね!