Ubuntuで利用できるアンチウイルスソフトウェアといえば、一番有名なのがClamAVでしょう。本連載でも第429回で紹介しましたが、もう10年も前の記事になります。そこで今回はUbuntu 24.
Ubuntuのアンチウイルス事情
繰り返し語られて来ましたが、いわゆる
とはいえWebサーバーやファイルサーバー本体はLinuxでも、アクセスするクライアントの多くは
Linuxではファイルシステムアクセスに割り込んだ処理が難しく、Windowsのようなオンアクセススキャンはできない……と、2000年代前半くらいからLinuxデスクトップを使っていた方は思うかもしれません。ですが現在のLinuxカーネルには、fanotifyと呼ばれる機能が実装されています。fanotifyはファイルシステムへのアクセスを監視し、プロセスのファイルアクセスを許可/ブロックできる機能です。ClamAVにはclamonaccというオンアクセススキャン機能があり、これはまさにfanotifyによって実装されています。
ClamAVのインストール
それではClamAVをインストールしましょう。
$ sudo apt install -U -y clamav clamav-daemon
インストールはこれだけです。非常に簡単ですね。
シグネチャのアップデート
ClamAVがウイルスやマルウェアを検出する際に利用するのが
ClamAVでは、freshclamコマンドを使ってシグネチャを更新します。freshclamには大きく2通りの使い方があります。
- freshclamコマンドを直接実行する
- freshclamをデーモンとしてシステムに常駐させる
ただし、通常はfreshclamを常駐させる必要はないでしょう。というのも、シグネチャはそれほど高頻度にアップデートされるわけではありません。そしてfreshclamデーモンは特別な指定がない限り、1日あたり12回シグネチャの更新をチェックします。ですがその程度の頻度であれば、わざわざデーモンを常駐させてリソースを割くよりも、Cronやsystemd.
Ubuntuのfreshclamコマンドは、clamav-freshclamパッケージで提供されています。そしてこのパッケージにはsystemdのユニットファイルとして、freshclamをデーモンとして起動する
前述の通り常駐するデーモンは不要でしょうから、初回のアップデートが完了したらサービスを止めてしまいましょう。
$ sudo systemctl stop clamav-freshclam
その上で、もしfreshclamを定期的に自動実行したい場合は、systemd.
$ sudo systemctl enable --now clamav-freshclam-once.timer
clamdの設定
ClamAVのオンアクセススキャンには、clamonaccコマンドと、バックエンドであるclamdデーモンが必要です。まずはデーモン側を設定しましょう。
設定ファイルである
User clamav
↓
User root
またファイルの末尾に以下を追加してください。これは
OnAccessExcludeUID 0
OnAccessExcludeUname root
OnAccessIncludePath /home
OnAccessPrevention yes
OnAccessExtraScanning yes
clamdを再起動します。
$ sudo systemctl restart clamav-daemon.service
オンアクセススキャンの動作を試す
「clamav-clamonacc」
$ sudo systemctl enable --now clamav-clamonacc.service
安全なウイルスのテストファイルであるEICARを使って、動作を確認してみましょう。ホームディレクトリに
$ echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > ~/eicar.txt
このファイルをcatで読み込んでみましょう。
$ cat eicar.txt
このように、オンアクセススキャンによって、リアルタイムにファイルアクセスがブロックされました。
なおclamd.