サーバーで定期的にウィルスチェックを行う

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

ウェブサーバーを運営していると、ウィルス対策が求められることも多いが、そのためにわざわざコンソールを触ってウィルスチェックを行うのはあまりにも効率が悪いので、自動的にウィルスチェックを行うようにした方が良い。その上でしばしば使われるのがClamAVである。とはいえ、メインメモリの容量の小さいインスタンスでは、ClamAVをデーモンとして使うとメモリが枯渇するので、今回は非デーモン形式の方法で記載を行いたい。

今回、私が行った方法は以下の通りである。

  • ウィルススキャンソフトはClamAVを使用。
  • 一連の記録を/var/log/clamscanに保存
  • メッセージ送信(今回はAmazon SNSを使う)を想定していたので、スキャン結果をSNSに通知した。

まず、以下の対応を行う。

その後、以下のスクリプトを「/etc/cron.daily/clamscan.cron」などのパスで作成する(root権限必須)。

#!/bin/sh
LOG_TEMP=/tmp/clamscan.log
LOG_OUTPUT=/var/log/clamscan.log
TOPIC_ARN=(送信先のトピックのARNをここに指定する)
SCAN_PATH=(ここにスキャンする対象のパスを指定する)

echo "ClamAV result for $(hostname)" > $LOG_TEMP
echo "Begin date: $(date)" >> $LOG_TEMP
freshclam --user=root --log=$LOG_TEMP > /dev/null 2>&1
clamscan --recursive --log=$LOG_TEMP $SCAN_PATH > /dev/null 2>&1

aws sns publish --topic-arn $TOPIC_ARN --message "$(cat $LOG_TEMP)"

cat $LOG_TEMP >> $LOG_OUTPUT

rm $LOG_TEMP

スクリプトを作成したら、以下のコマンドでパーミッションを変更する。

sudo chmod 700 /etc/cron.daily/clamscan.cron

上記の対応が完了したら、問題なく動くことを確認するため、以下のコマンドで走らせる。

sudo /etc/cron.daily/clamscan.cron

上記のコマンドでエラーが表示されず問題なく動いたら、対応完了である。

タイトルとURLをコピーしました