環境は、Ubuntu 20.04.3 amd64。
Clamavを久々に動かしてみた。ぐぐって、いろいろ設定したがはまりどころ満載。
あんまし、他のWebで書かれていなかった内容を書く。安心してほしい、確実に動く。(動かない理由がわかっているので)
キーワードは、「焦らず、ちゃんと待つ」だった。
想定としては、「aptでインストール、シグネチャーアップデート、スキャン」で楽勝だと思っていたが全く動かず。
以下、流れ
1. インストール
apt install -y clamav clamav-daemon
2. シグネーチャアップデート
clamav-freshclamを止めないと手動で更新できないので、一度止める
systemctl stop clamav-freshclam
第1の罠
/etc/clamav/freshclam.confがリードオンリーなので、パーミッションを変えてから/etc/clamav/freshclam.confを編集。
NotifyClamdの行をコメントアウト
コメントアウトをしないと、clamdのソケットを見に行ってしまう。インストール直後だと、ソケットはできていないのでエラーが表示されてしまう。さらに肝心のclamdは、シグネチャーファイルがないので立ち上がっていないという状態。
手動アップデート
freshclam
3. clamd.confの編集
余計なフォルダをスキャンしないように以下を/etc/clamav/clamd.confに追記
ExcludePath ^/proc
ExcludePath ^/sys
ExcludePath ^/run
ExcludePath ^/dev
ExcludePath ^/snap
Clamav daemonを再起動
systemctl stop clamav-daemon.service
systemctl start clamav-daemon.service
4. Scan開始
第2の罠
/var/run/clamav/clamd.ctlが作成されるまでスキャンが実行できない。このファイルが作成されるまで、自分の環境だと2、3分かかる。
Webには、ソケットファイルをtouchコマンドで作れとか書いてあるけど、それではだめ。ソケットファイルはtouchコマンドでは作成できない。
それに、時間が経てばちゃんと自動で作られる。
第3の罠
clamavユーザが覗けるところしかスキャンできない。sudoでやってもダメ。–fdpass オプションが必要
clamdscan –fdpass SCANPATH
という感じだった。コピペでサクッとやろうとするとまず失敗する。特に第2の罠に気が付くまですごく時間がかかった。
たまにスキャンが成功するので、再度同じ通りにやるとまず成功しない。
これらを踏まえてスクリプトを作ったりしたが、第2の罠のためのソケット生成確認のロジックを入れることで、「aptでインストール、シグネチャーアップデート、スキャン」が実現する。
これ、どこにも書いてねぇ。まさしく、「どこに書いてあったんですか?」ネタ。そう、ここに書いてあるw
解決まで丸2日かかった。グーグル先生に頼りっぱなしは良くないと改めて感じる。