2023年5月13日土曜日

ClamAV OnAccess スキャナと戯れる

まったく予定の無かったGWの空き時間の多くを埋めてくれたClamAVですが、「よっしゃこれでいこ」と思ってGWを終えた途端に問題発覚。てゆーか、ぜんぜん上手に設定できてなかった…。

ということで、GW明けも空き時間をClamAVと戯れておるワケですが、とりあえずバッチ一括検査処理の方は「なんとかこれで良いやろ」という感じに設定できたのですが、問題は OnAccess スキャナの方。こいつがぜんぜんダメ。

一番の問題は、Clamonaccから検疫処理を依頼されたclamdが途方もなく膨大な量のWARNINGログを吐き出すこと。1〜2分ほどの間に60万行以上も記録され、且つ、LogSyslog disabled と設定しているにもかかわらずSyslogにも同じ量が記録されてしまうこと。

発生するのは/home下ですが、記録されたファイルを見てますと、アプリ等の処理で一時的に生成してすぐ消えるようなファイルが対象になってしまうようです。その為、そういうログが出る度に、ログを点検してファイル名を確認して、パス名の共通性を見出してからclamd.confにExcludePathを正規表現で追記する、ということを「運用で」繰り返す必要に迫られました。

OnAccessExcludePath(--exclude-list=)は正規表現に対応しておらず柔軟性に欠けること、OnAccessスキャンだけではなくバッチ一括検査の時にも同様問題が起こる可能性があること、からclamd.confのExcludePathを修正してその都度clamav-daemonを再起動する、ということをやってます。(めんどくせー)

現状で、clamd.confのExcludePathは以下のように育ってますw

ExcludePath ^/dev/ ExcludePath ^/proc/ ExcludePath ^/sys/ ExcludePath ^/run/ ExcludePath ^/snap/ ExcludePath ^/media/ ExcludePath ^/var/lock/ ExcludePath ^/var/log/ ExcludePath ^/var/run/ ExcludePath ^/var/clamav/tmp/ ExcludePath ^/swapfile$ ExcludePath ^/.*lost\+found/ ExcludePath ^/root/quarantine/ ExcludePath ^/root/\.lesshsQ$ ExcludePath ^/timeshift/ ExcludePath ^/home/.+\.lesshsQ$ ExcludePath ^/home/.+\.tmp$ ExcludePath ^/home/.+\.txt$ ExcludePath ^/home/.+\.log$ ExcludePath ^/home/.+\.lock$ ExcludePath ^/home/.+\.sqlite-wal$ ExcludePath ^/home/.+\.db-journal$ ExcludePath ^/home/.+\.sqlite-journal$ ExcludePath ^/home/.+\.store_new$ ExcludePath ^/home/.+\.vbox-tmp$ ExcludePath ^/home/.+\.xml-tmp$ ExcludePath ^/home/.+\.js$ ExcludePath ^/home/.+\.json$ ExcludePath ^/home/.+temp-index$ ExcludePath ^/home/.+/\.temp.+$ ExcludePath ^/home/.+/\{.+\}\.final$ ExcludePath ^/home/.+.[a-zA-Z0-9]{6}$ ExcludePath ^/home/.+/[0-9]+\.ldb$ ExcludePath ^/home/.+/\.cache/.+/cache2/entries/[A-Z0-9]+$ ExcludePath ^/home/.+/\.cache/.+scr--[0-9]+\.png$ ExcludePath ^/home/.+/Downloads/.+\.crdownload$ ExcludePath ^/home/.+/\.config/google-chrome/Profile\ [1-9]+/ ExcludePath ^/home/.+/\.thunderbird/.+/virtualFolders-[0-9]+\.dat$ ExcludePath ^/home/.+/\.mozilla/firefox/.+/usage-journal$ ExcludePath ^/home/.+/\.mozilla/firefox/.+/newtab$ ExcludePath ^/home/.+/\.cache/mozilla/firefox/.+-\.vlpset$

まったくバカらしい話で、「OnAccessスキャンなんて使うもんじゃない」なんて意見も見られるワケで、ほんとにそういう感じで、つまらん運用作業に手間取られるぐらいなら .cache .local .config 辺りをClamonaccの監視対象から除外してしまうのが「賢いやり方」のようにも思いますし、一時はそのように設定していました。

ただ、そうしてしまうと「何の為にOnAccessスキャンなんて動かしてるの?」ということになって「Clamonaccなんて止めちゃえ」ということになってしまいます。現状まだそこまで諦めをつけられていないので、「つまらん運用作業」を繰り返してるしだい。(バカですよね…)

使うアプリが増えたら除外条件に影響するでしょう。使ってるアプリが機能修正されても影響することもあるでしょう。そういうのにどう対応していくのが良いのか…。とにかく、ClamAVのアップデートで膨大なログを吐き出すのが止まってくれたらありがたいのですが…。Syslogが無用に肥大するのが痛すぎ。

ということで、今のところ ClamAV OnAccessスキャナ には過度の期待は持てず、徐々に機能が良くなっていくのを眺めながら運用支障の無い範囲で自分なりの良い使い方を見出すしか方法が無いようです。

【後刻追記】
ExcludePathのコード内容ですが、この日記を書いてるシリから変更せざるをえない状況が何度か発生して、とりあえず最新内容に置き換えました。

【2023/05/25追記】
心底バカらしくなって OnAccessスキャナを使うのを止めました。ログの爆発を制御しきれませんわ。こんなのに付き合ってられん…。てことで、それに合わせて clamd.conf の内容をシンプルにして、1日1回バッチ一括検査する運用でいくことにしました。そう決めたら気が楽になった…。


0 件のコメント: