ClamScanOnAccessの設定

clamdもavavisd-newも動いたので、次はClamavScanOnAccessが動く様にしよう。

clamd.confのOn-Accessの部分に集中しているのでこれを弄るよ。

自分の環境用に書き加えるのは、スキャンしたいpath

このくらい?
OnAccessExtraScanningの意味はよく判っていない。でも動いているからヨシ!
OnAccessIncludePathはClamavScanScheduley様だと勝手に思っている。

で動かしてみるとerror code 2と出る。
ここでGeminiさんから提案がでます。

ラッパーの中身、非常に興味深いですね!MacPortsらしい「力技」で監視を実現しています。
error code 2 の正体が判明しました。このラッパーは、clamd(デーモン)が動いているかどうかで、使うコマンドを切り替えています。
1. 犯人は clamdscan か clamscan か?
ラッパーの最後の数行に注目です:
pgrep -u root clamd が成功(clamd が動いている)なら → clamdscan を実行。
失敗なら → clamscan を実行。
今のあなたの環境では clamd が動いているはずなので、clamdscan が呼ばれています。しかし、ここで –fdpass というオプションが使われています。これが Catalina のセキュリティ(あるいは権限設定)と喧嘩して error code 2 を吐いている可能性が極めて高いです。
2. なぜ error code 2 なのか(推測)
–fdpass の問題: これは「ファイル記述子を渡す」機能ですが、監視対象が /Users/user/Downloads などにある場合、root で動くラッパーから _clamav で動く clamd への受け渡しが TCC(フルディスクアクセス)に阻まれて失敗し、コケている可能性があります。
データベースパスの欠落: clamscan(下側)が呼ばれた場合、引数に –database=/opt/local/share/clamav が無いため、デフォルトパスを探しに行って「データベースが見つからない(code 2)」となっています。
3. 修正案(ここを書き換えてみましょう)
ラッパー(ClamavScanOnAccess.wrapper)をエディタで開き、以下の 2点 を修正してみてください。
修正箇所 A(clamdscan 側):
–fdpass を外し、さらに念のため –stream を足します。

と言うことでwrapperの書き換えを行うことにする。
clamdscanで検索すると良いよ。
2行目の中程にある–fdpassを書き換えます。

すると動く様になりました。

そして、この二つを生きにしたら、動かなくなった。

ログを見たらこんな感じ。

なのでlaunchctl unload ClamavScanOnAccess.plistで一度止めて。
ClamavScanOnAccess.wrapperを直接駆動してエラーを吐かせる。(Geminiさんに教わった)
frontendで動くのでその場でメッセージが見られるよ。

shell scriptだったのね、wrapperって。初めて気が付いたわ。
wrapperの出したエラーの内容はこう。

因みに、Geminiさんはこうおっしゃった。

ラッパー・スクリプト(wrapper)の中で egrep を使って clamd.conf から設定を抜き出している部分がありますが、そこが 「FollowDirectorySymlinks yes(または no)」 という形式をうまく処理できず、不完全な引数(例:–follow-dir-symlinks= だけになって後ろの yes/no が消えている状態)を clamscan に渡してしまっています。

と言うことで、先の二つのSymlinksをコメントアウトすることにしました。
shell scriptを直すのって怖いじゃない?

さてScanOnAccessを再起動。
続けて、eicar_com.zipを移動してみます。

ただ問題が一点あります。
先程のwrapperの結果で、エラーが2回出ていましたが、今回は、

となりました。上記はログに書かれています。
多分2回(もしくは二つのScanOnAccess)が動いています。

疑問を抱き聞くと、Geminiさんの回答は、

1. なぜ2回(あるいはそれ以上)動くのか
fswatch は「ファイルが作成された」「属性が変わった」「移動してきた」といったイベントをすべて拾います。
1回目のスキャン: ファイルが置かれた瞬間に開始 → ウイルス発見! → /opt/Quarantine/ へ移動(成功)。
2回目のスキャン: fswatch が「ファイルが移動(消滅)した」というイベントも拾ってしまい、再び clamscan を起動 → しかし、ファイルは既に隔離済みで元の場所には無い → No such file or directory (エラー)。
つまり、1回目が成功してファイルが消えたから、2回目が空振りしているだけなので、実用上の問題はありません!

ほうほう、じゃぁ放っとこう。
これでCamavScanOnAccessも起動しました。

最後はClamacScanScheduleですが、週一辺だけ動くのでログ見てから考えます。
基本設定はScanOnAccessと一緒だろうから、動くでしょう。
きっと……。

Geminiさん、ありがとう。
今日は終わるね。また宜しく!
のあと、

さて次回は次の三つです。
これからの拡張の「ネタ」として、いくつか面白そうな方向性を置いておきますね。
「視覚化」の追求:
せっかくログが取れているので、一日のスパム撃退数やウイルス検知数をグラフにする(Mailgraphなど)と、要塞が戦っている姿が見えて愛着がわきます。
「防御の自動化」の強化:
Fail2Ban などを使って、しつこくパスワードアタックを仕掛けてくるIPをファイアウォールで自動的に遮断する仕組み。今の構成に加えると、さらにログが綺麗になります。
「利便性」の向上:
例えば、溜まった隔離ファイルをWebブラウザから確認・救出できる管理画面など。
何はともあれ、まずはこの安定した「平和な時間」をゆっくり楽しんでください。
新しいスレッドで「にわ管」さんの次なる野望を聞けるのを、楽しみに待っています。こちらこそ、ありがとうございました!
次はどのような機能の追加に興味がありますか?それとも一旦バックアップ体制を整えますか?

いやぁ、これは興味深い所突いてくる。
流石だわ、Geminiさん。(笑)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)