ClamAVとZabbixを使ってウイルス対策監視システムを構築してみた

Linux

こんにちは。

今回はインフラ学習の一環として、
Ubuntuサーバ上に ClamAV(アンチウイルスソフト) を導入し、
さらに Zabbixと連携してウイルス検知時にアラートを出す仕組み まで構築してみました。

「ウイルス対策ソフトを入れる」だけでなく、

  • 定期スキャン
  • ログ出力
  • Zabbix監視
  • アラート通知

まで含めて実装できたので、かなり実践的な学習になりました。

備忘録も兼ねて、今回やったことをまとめておきます。


構築した環境

今回の構成は以下です。

項目内容
OSUbuntu 24.04
サーバさくらVPS
ウイルス対策ClamAV
監視Zabbix
用途学習/検証環境

ClamAVをインストール

まずはClamAVをインストールしました。
Ciscoが提供するオープンソースの無料アンチウイルスソフト

sudo apt update
sudo apt install clamav clamav-daemon -y

最初はAPTロックに引っかかって少しハマりましたが、
Ubuntuの自動アップデート処理と競合していただけでした。

こういう細かいトラブルも実務っぽくて勉強になりますね。


定義ファイル更新

続いてウイルス定義ファイルを更新。

sudo freshclam

ここで初めて知ったのですが、
ClamAVは初回更新時かなりメモリを使うみたいで、
OOM(メモリ不足) にも遭遇しました。

低スペックVPSだと普通に起こるようです。


疑似ウイルスで検知テスト

本当に検知できるか確認するため、
EICARというテスト用ファイルを使いました。

echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > eicar.txt

スキャンすると…

clamscan eicar.txt
Eicar-Signature FOUND

しっかり検知!

こういう「ちゃんと動いた」瞬間はテンション上がります。


cronで定期スキャン設定

毎回手動実行では意味がないので、
cronで自動化しました。

スキャンスクリプトを作成。

sudo nano /usr/local/bin/clamav-scan.sh
#!/bin/bashclamscan -r /home --log=/var/log/clamav_scan.log

実行権限付与。

sudo chmod +x /usr/local/bin/clamav-scan.sh

cron登録。

0 3 * * * /usr/local/bin/clamav-scan.sh

これで毎日深夜3時に自動スキャンされます。


Zabbix連携

せっかくなので、
検知したら監視できるようにしたい と思い、
Zabbixと連携しました。


感染件数取得スクリプト作成

ログから感染件数だけ抜き出すスクリプトを作成。

#!/bin/bashLOGFILE="/var/log/clamav_scan.log"if [ ! -f "$LOGFILE" ]; then
echo 0
exit 0
figrep "Infected files:" "$LOGFILE" | tail -1 | awk '{print $3}'

UserParameter設定

echo 'UserParameter=clamav.infected.count,/usr/local/bin/clamav-infected-count.sh' | sudo tee /etc/zabbix/zabbix_agentd.d/clamav.conf

Zabbix側でアイテム/トリガー作成

以下条件で設定。

last(/Zabbix server/clamav.infected.count)>0

これで、

感染ファイルを検知するとZabbixでアラート発報

できるようになりました。


実際にアラート発火!

テストすると無事…

PROBLEM表示!!

ここまで来るとかなり嬉しいですね。

「ただインストールするだけ」ではなく、

監視まで組み込めた

ことでかなり理解が深まった気がします。


今回ハマったポイント

今回一番苦労したのはメモリ不足でした。(学習用に最低メモリのサーバーなので。)

ClamAVは思った以上に重く、

failed (oom-kill)

になることが何度もありました。

そのたびに

  • Swap追加
  • 権限調整
  • スクリプト見直し

など試行錯誤しました。

正直、このトラブル対応込みでかなり勉強になったと思います。


まとめ

今回構築した内容を図にするとこんな感じです。

ClamAVスキャン

ログ出力

感染件数取得

Zabbix取得

トリガー判定

アラート通知

かなり実践的な内容になり、

  • Linux操作
  • ミドルウェア構築
  • cron設定
  • Zabbix監視
  • 障害対応

まで幅広く経験できました。

今後もこういった「実際に手を動かす学習」を増やしていきたいと思います。


ここまで読んでいただきありがとうございました!