using clamav & php-clamv

clam_av_logo

clamv는 오픈소스로 제공되는 백신프로그램이다. 또한 php-clamv를 이용하면 업로드 되는 파일이 바이러스나 웹쉘, rootkit일 경우 잡아줄수 있는 php 라이브러리이다.

hompage : http://www.clamav.net/

case amazon linux ami

sudo yum install bzip2-devel

case centos :

wget http://download.fedora.redhat.com/pub/epel/5/i386/clamav-db-0.97-12.el5.i386.rpm
wget http://download.fedora.redhat.com/pub/epel/5/i386/clamav-0.97-12.el5.i386.rpm
wget http://download.fedora.redhat.com/pub/epel/5/i386/clamav-devel-0.97-12.el5.i386.rpm
wget http://download.fedora.redhat.com/pub/epel/5/i386/clamd-0.97-12.el5.i386.rpm
rpm -Uvh clamav-db-0.97-12.el5.i386.rpm clamav-0.97-12.el5.i386.rpm clamav-devel-0.97-12.el5.i386.rpm clamd-0.97-12.el5.i386.rpm

referance : http://code.google.com/p/clamav-cron/

clamav-cron를 이용하면 쉽게 cron등록을 할 수 있다. (단 실제 실행해보니 몇가지 권한 문제가 있어서 몇가지 수정했다. 알맞게 이메일등과 메일 제목들을 수정해준다.)

wget http://clamav-cron.googlecode.com/files/clamav-cron-0.6 -O /usr/local/bin/clamav-cron
chmod 755 /usr/local/bin/clamav-cron
vi /usr/local/bin/clamav-cron 

#!/bin/bash
#
# clamav-cron v. 0.6.1 - Copyright © 2009, Stefano Stagnaro & Yupmin
# This is Free Software released under the GNU GPL license version 3

#============================================#
#        User configuration section          #
#============================================#

# Log file name and its path:
CV_LOGFILE="/var/log/clamav-cron.log"

# Notification e-mail sender (could be fake):
CV_MAILFROM="abc@test.com"

# Notification e-mail recipient:
CV_MAILTO="abc@test.com"

# Notification e-mail secondary recipients:
#CV_MAILTO_CC="stefano@abc.com; danilo@abc.com"

# Notification e-mail subject:
CV_SUBJECT="Test.com - ClamAV scan report"

#============================================#

CV_TARGET="$1"
CV_VERSION="0.6"

if [ -e $CV_LOGFILE ]
then
        /bin/rm $CV_LOGFILE
fi
/bin/touch $CV_LOGFILE
/bin/chmod 666 $CV_LOGFILE
/bin/chmod o+w /var/lib/clamav

if [ -z "$1" ]
then
        CV_TARGET="$HOME"
fi

#To be read on stdout (and root mail):
echo -e `basename $0` v. $CV_VERSION - Copyright 2009, Stefano Stagnaro '\n'

#To be read on logfile (sent via sendmail):
echo -e $CV_SUBJECT - $(date) '\n' >> $CV_LOGFILE
echo -e Script: `basename $0` v. $CV_VERSION - Copyright 2009, Stefano Stagnaro  >> $CV_LOGFILE
echo -e Scanned: $CV_TARGET on $HOSTNAME'\n' >> $CV_LOGFILE

/usr/bin/freshclam --log=$CV_LOGFILE --user $USER --verbose

#To be read on stdout (and root mail):
echo -e '------------------------------------\n'

/usr/bin/clamscan --infected --log=$CV_LOGFILE --recursive $CV_TARGET
CLAMSCAN=$?

if [ "$CLAMSCAN" -eq "1" ]
then
        CV_SUBJECT="[VIRUS!] "$CV_SUBJECT
elif [ "$CLAMSCAN" -gt "1" ]
then
        CV_SUBJECT="[ERR] "$CV_SUBJECT
fi

#/bin/mail -s "$CV_SUBJECT" -c $CV_MAILTO_CC $CV_MAILTO -- -f $CV_MAILFROM < $CV_LOGFILE
/bin/mail -s "$CV_SUBJECT" $CV_MAILTO -- -f $CV_MAILFROM < $CV_LOGFILE

cron으로 매일 돌리지 말고, 중요한 부위등을 알맞게 나눠서 돌리면 될듯 하다.

vi /etc/crontab
45 23 * * 6 /usr/local/bin/clamav-cron /home

clamav-php 라이브러리는 다음과 같이 설치한다. 기본 clamav가 깔려있는 clamav database path등에 유의한다.

php-clamav의 경우 centos 5 에 컴파일해서 사용할 경우 아파치 프로세스크가가 5~7배 커지는 것으로 보임. 사용주의 요망.

source : http://php-clamav.sourceforge.net/

wget http://sourceforge.net/projects/php-clamav/files/0.15/php-clamav_0.15.3.tar.gz/download
tar xvfz php-clamav-0.15.3
cd php-clamav-0.15.3
phpize
./configure --with-clamav
make; make install;
vi /etc/clamav.ini

extension=clamav.so
[clamav]
clamav.dbpath="/var/clamav"
clamav.maxreclevel=16
clamav.maxfiles=10000
clamav.maxfilesize=26214400
clamav.maxscansize=104857600
clamav.keeptmp=0
clamav.tmpdir="/var/tmp"

글쓴이

yupmin

Inside Deep Throat.

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.