セキュリティ · 1 min read · Sep 22, 2025

Debianでの毎日のシステムスキャンとメール通知のためのClamavの設定

今日はClamAVアンチウイルスソフトウェアと、それを使用してサーバーやデスクトップを保護する方法を見ていきます。ウイルスが検出された場合に、すべてのシステム、ウェブサイト、およびメールファイルを毎日スキャンし、メールで通知するようにClamAVを設定する方法を示します。ClamAVを知らない方のために、ClamAVはすべてのLinuxディストリビューションで利用可能なオープンソースのアンチウイルスソフトウェアソリューションです。このガイドの要件の1つは、サーバーにすでに動作しているメールサービスがあることです。

このチュートリアルはDebianシステムで正常に動作しますが、Ubuntuシステムでも互換性があります。

インストールと設定

まず、Clamavとメール通知を送信するためのツールをインストールするコマンドを実行します。

apt-get update && apt-get install clamav clamav-freshclam heirloom-mailx

ウイルス定義が更新されることを確認するために、次のコマンドを実行します:

service ClamAV-freshclam start

デフォルトでは、ClamAVは毎時新しいウイルス定義をチェックします。このパラメータを変更したい場合は、/etc/clamav/freshclam.confファイルを編集できます。

nano /etc/clamav/freshclam.conf

次の行を変更します:

# Check for new database 24 times a day
Checks 24

# Check for new database 1 times a day
Checks 1

に変更します。この場合、チェックは1日に1回のみ行われます。私は1日に24回のままにすることをお勧めします。

ウイルス定義の手動更新を行うには、次のコマンドを実行できます:

freshclam -v

通知を有効にし、スキャンをスケジュールする

次のスクリプトでは、変数DIRTOSCANを変更して、スキャンしたいディレクトリを指定します。

ファイル/root/clamscan_daily.shを作成します。

nano /root/clamscan_daily.sh

次のコードを貼り付けます:

#!/bin/bash
LOGFILE="/var/log/clamav/clamav-"$(date +'%Y-%m-%d')".log";
EMAIL_MSG="ログファイルを添付しています。";
EMAIL_FROM="[email protected]";
EMAIL_TO="[email protected]";
DIRTOSCAN="/var/www /var/vmail";

for S in ${DIRTOSCAN}; do
 DIRSIZE=$(du -sh "$S" 2>/dev/null | cut -f1);

 echo ""$S"ディレクトリの毎日のスキャンを開始します。
 スキャンするデータ量は"$DIRSIZE"です。";

 clamscan -ri "$S" >> "$LOGFILE";

 # "感染した行"の値を取得
 MALWARE=$(tail "$LOGFILE"|grep Infected|cut -d" " -f3);

 # 値がゼロでない場合、ログファイルを添付してメールを送信
 if [ "$MALWARE" -ne "0" ];then
 # heirloom-mailxを使用
 echo "$EMAIL_MSG"|mail -a "$LOGFILE" -s "マルウェアが見つかりました" -r "$EMAIL_FROM" "$EMAIL_TO";
 fi 
done

exit 0

変数EMAIL_FROMとEMAIL_TOを変更して、希望するメールアドレスを反映させ、変数DIRTOSCANでスキャンするディレクトリのリストを変更できます。

ファイルを( ctrl+o )で保存し、次のように権限を変更します:

chmod 0755 /root/clamscan_daily.sh

次に、/etc/cron.daily/ディレクトリにシンボリックリンクを作成して、スクリプトの毎日の実行を有効にします:

ln /root/clamscan_daily.sh /etc/cron.daily/clamscan_daily

これで、メールファイルやウェブサイトにウイルスやマルウェアがある場合、1日に1回メール通知を受け取ることができるようになります。ClamAVは、PHPファイルの内容もスキャンし、マルウェアやその他の潜在的に悪意のあるコンテンツの存在を確認します。

スクリプトのテスト

この設定では、ClamAVは見つかったウイルスに対して何のアクションも行わず、報告のみを行います。したがって、心配しないでください。何も削除されたり変更されたりすることはありません。スクリプトをテストするには、次のコマンドを実行します:

/root/clamscan_daily.sh

コマンドが終了した後、2つの可能な状態があります:

  • Clamavがウイルスを見つけた場合:この場合、添付されたログとともに受信トレイにメールが届きます。

  • Clamavが何も見つけなかった、または何かがうまくいかなかった場合。この場合、ログの内容を確認する必要があります。ログを確認するには、/var/log/clamav/を確認してください。

どのように読むべきかを知るために、小さなログの例を添付します:

Starting a daily scan of /var/www directory. Amount of data to be scanned is 36G.
Mon Jun 15 13:17:14 CEST 2015

----------- SCAN SUMMARY -----------
Known viruses: 3841819
Engine version: 0.98.4
Scanned directories: 47944
Scanned files: 316827
Infected files: 0
Data scanned: 17386.77 MB
Data read: 34921.59 MB (ratio 0.50:1)
Time: 1432.747 sec (23 m 52 s)
Mon Jun 15 13:41:06 CEST 2015
------------------------------------------------------
------------------------------------------------------
Starting a daily scan of /var/vmail directory. Amount of data to be scanned is 7.0G.
Mon Jun 15 13:41:27 CEST 2015
/var/vmail/domain.tld/info/Maildir/.Cestino/cur/1386677288.M361286P15524.domain.tld,W=2675,S=2627:2,S: Heuristics.Phishing.Email.SpoofedDomain FOUND
/var/vmail/domain.tld/info/Maildir/.Cestino/cur/1371451873.M697795P19793.domain.tld,W=5421,S=5353:2,S: Heuristics.Phishing.Email.SpoofedDomain FOUND
/var/vmail/domain.tld/info/Maildir/.Cestino/cur/1390203133.M981287P17350.domain.tld,W=3223,S=3157:2,S: Heuristics.Phishing.Email.SpoofedDomain FOUND
/var/vmail/domain.tld/info/Maildir/.Cestino/cur/1386677288.M361285P15524.domain.tld,W=2270,S=2227:2,S: Heuristics.Phishing.Email.SpoofedDomain FOUND

この場合、ClamAVは[email protected]でフィッシングメールを見つけたため、この場合もメールが届きます。

以上です!

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。