ただの備忘録なんですが。
たとえばユーザーがアップロードできるようなサイトを運営していたとして、そのアップロードされるフォルダだけを頻繁(1時間ごと)にウイルスチェックさせたいということがあります。
手順は以下のとおり、前提としてClam AntiVirusはインストールされているものとします。
※オープンソースのウィルス対策ソフトである Clam AntiVirus をCentOSにインストールする
【やりたいこと(例)】
・/var/www/html/uploads/ フォルダのみを定期チェックしたい
・ウイルスを発見したら(example@example.com)にメール通知したい
1. ウイルスチェックを定期実行させるシェルスクリプトをcron.hourlyに作成する
作成したいシェルの名前を upfilecheck.sh とすると
# vi /etc/cron.hourly/upfilecheck.sh
で開いた画面で以下のものを貼り付ける。
「/var/www/html/uploads」と「example@example.com」の箇所は、各自で変更してください。
#!/bin/bash PATH=/usr/bin:/bin #ウイルスに関するメッセージを入れる変数を作成 CLAMSCANTMP=`mktemp` #clamdscanをアップロードされたファイルフォルダ内のみで実行。 #ウイルスが見つかった場合削除して、メッセージを代入 clamdscan /var/www/html/uploads --remove > $CLAMSCANTMP 2>&1 # $CLAMSCANTMPにウイルス発見された場合にメール通知 [ ! -z "$(grep FOUND$ $CLAMSCANTMP)" ] && \ grep FOUND$ $CLAMSCANTMP | mail -s "Virus Found" example@example.com rm -f $CLAMSCANTMP
2. 作成したシェルスクリプトに実行権限を付与する
# chmod +x /etc/cron.hourly/upfilecheck.sh
3. 作成したスクリプトが問題なく動くかテストする
チェックされるフォルダに移動する
# cd /var/www/uploads
テスト用のウイルスをダウンロードする。
# wget http://www.eicar.org/download/eicar.com.txt
# wget http://www.eicar.org/download/eicarcom2.zip
さきほど作ったシェルスクリプトを実行してみる。
# sh /etc/cron.hourly/upfilecheck.sh
実行して、ダウンロードしたテスト用ウイルスファイルが削除されて、メールの通知が来ていれば成功です。