Clam AntiVirus آنتی ویروسی است تحت GPL. متن باز و آزاد. مهمترین هدف ساخت این آنتی ویروس کنترل نمودن attachment ها و اسکن نمودن آن هاست. بهینه سازی و همچنین به روز رسانی این آنتی ویروس کاملا اتوماتیک است و به هنگام استارت اوبونتو خود به خود لود شده و اجرا می گردد. در واقع همین ویژگی به روز رسانی خودکار بدون محدودیت، مهمترین ویژگی ClamAV است.
برای نصب برنامه کافیست سری به Synaptic زده یا به سایت رسمی آن
http://www.clamav.net رجوع نمایید. به طور کلی نصب برنامه به سان دیگر نرم افزارهاست و از بابت هیچگونه تفاوتی ندارد.
بعد از نصب برنامه - بدون مشاهده Error - شما می توانید از درستی و کاملی نصب مطمئن شوید و در واقع ClamAV را امتحان نمایید. برای تست نصب کافیست کد زیر را در محیط ترمینال وارد نمایید:
#clamscan -r -l scan.txt clamav-0.65
در این حالت آنتی ویروس باید یک ویروس به صورت تست پیدا کند که البته این ویروس واقعی نیست و اصطلاحا test virus نامیده می شود. پس از انجام این مرحله شما می بایست به پیکربندی آنتی ویروس بپردازید. پس دستور زیر را در ترمینال وارد کنید:
#vi /usr/local/etc/clamav.conf
مثال را در فایل clamav.conf وارد کرده و آن را ذخیره کنید.
#clamdscan -l scan.txt clamav-0.65
باید خروجی دریافتی شبیه همان باشد که برای clamscan مشاهده نمودید.
اینک باید آنتی ویروس را به روزرسانی کرد. آنتی ویروس شامل بخشی به نام freshclam است که به هنگام نصب به طور اتوماتیک از کاربر روت به همان کاربری که شما خلق کده اید تغییر می یابد. پس نیاز به یک Log file است تا freshclam بتواند وقایع را در آن ثبت کند. برای ایجاد Log های مذکور دستورات زیر را وارد نمایید:
#touch /var/log/clam-update.log
#chmod 600 /var/log/clamupdate.log
#chown clamav /var/log/clamupdate.log
حالاfreshclam را استارت کنید با:
#freshclam -d -c 6 -l /var/log/clam-update.log
این موجب خواهد شد که داده های مربوط به بروزرسانی انتی ویروس روزانه ۶ مرتبه چک شود. چک نمودن /var/log/clam-update.log file می بایست چیزی شبیه این نتیجه باشد:
-----------------------------------------------------------------------------------------------------
ClamAV update process started at Wed Jan 28 17:49:48 2004
main.cvd is up to date (version: 19, sigs: 19987, f-level: 1, builder: ddm)
daily.cvd updated (version: 111, sigs: 597, f-level: 1, builder: tomek)
Database updated (20584 signatures) from database.clamav.net (81.4.91.185).
-----------------------------------------------------------------------------------------------------
حالا باید freshclam -d -c 6 -l /var/log/clam-update.log را به استارت آپ اضافه کنید. همچنین می توانید cronjob را به گونه ای تنظیم کنید که هر ۶ ساعت یکبار آنتی ویروس را آپدیت کند.
#vi /etc/crontab
0 6 * * * root /usr/local/bin/clamscan
تنظیمات clamd و استفاده با Daemontools:
/etc/clamd.conf را به روش زیر ویرایش کنید:
#vi /etc/clamd.conf
Uncomment "LogSyslog"
Uncomment "StreamSaveToDisk"
Uncomment "MaxThreads" and change value to "30"
Uncomment "User" and change value to "qscand"
Uncomment "Foreground"
Uncomment "ScanMail"
سپس clamav directory را ایجاد کنید:
#mkdir -p /usr/local/clamav/bin
اینک یک startup/shutdown برای clamd بسازید کدهای زیر را کپی پیست کنید:
#vi /usr/local/clamav/bin/clamdctl
#!/bin/sh
# For Red Hat chkconfig
# chkconfig: - 80 30
# description: the ClamAV clamd daemon
PATH=/usr/local/clamav/bin:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin
export PATH
case "$1" in
start)
echo "Starting clamd"
if svok /service/clamd ; then
svc -u /service/clamd
else
echo clamd supervise not running
fi
if [ -d /var/lock/subsys ]; then
touch /var/lock/subsys/clamd
fi
;;
stop)
echo "Stopping clamd..."
echo " clamd"
svc -d /service/clamd
if [ -f /var/lock/subsys/clamd ]; then
rm /var/lock/subsys/clamd
fi
;;
stat)
svstat /service/clamd
svstat /service/clamd/log
;;
restart)
echo "Restarting clamd:"
echo "* Stopping clamd."
svc -d /service/clamd
echo "* Sending clamd SIGTERM and restarting."
svc -t /service/clamd
echo "* Restarting clamd."
svc -u /service/clamd
;;
hup)
echo "Sending HUP signal to clamd."
svc -h /service/clamd
;;
help)
cat <<HELP
stop -- stops clamd service (smtp connections refused, nothing goes out)
start -- starts clamd service (smtp connection accepted, mail can go out)
stat -- displays status of clamd service
restart -- stops and restarts the clamd service
hup -- same as reload
HELP
;;
*)
echo "Usage: $0 {start|stop|stat|restart|hup|help}"
exit 1
;;
esac
exit 0
clamdctl را اجرایی کرده و مسیر آن را تعیین کنید:
#chmod 755 /usr/local/clamav/bin/clamdctl
#chown clamav /usr/local/clamav/bin/clamdctl
#ln -s /usr/local/clamav/bin/clamdctl /usr/local/bin
یک پوشه نظارت کننده برای clamd service بسازید:
#mkdir -p /usr/local/clamav/supervise/clamd/log
اینک باید /usr/local/clamav/supervise/clamd/run file را بسازید یا کدهای زیر را کپی و پیست کنید:
vi /usr/local/clamav/supervise/clamd/run
#!/bin/sh
#
# --------------------------------------------------
# run
#
# Purpose - Start the clamd daemon/service.
#
# Author - Jesse D. Guardiani
# Created - 09/10/03
# Modified - 09/25/03
# --------------------------------------------------
# This script is designed to be run under DJB's
# daemontools package.
#
# ChangeLog
# ---------
#
# 09/25/03 - JDG
# --------------
# - Changed clamd user to qscand in compliance with
# the change to qmail-scanner-1.20rc3
#
# 09/10/03 - JDG
# --------------
# - Created
# --------------------------------------------------
# Copyright (C) 2003 WingNET Internet Services
# Contact: Jesse D. Guardiani (jesse at wingnet dot net)
# --------------------------------------------------
lockfile="/tmp/clamd" # Location of clamd lock file
path_to_clamd="/usr/local/sbin/clamd"
# Location of the clamd binary
BAD_EXIT_CODE=1 # The exit code we use to announce that something bad has happened
# The following pipeline is designed to return the pid of each
# clamd process currently running.
get_clam_pids_pipeline=`ps -ax | grep -E "${path_to_clamd}\$" | grep -v grep | awk '{print $1}'`
# --------------------------------------------------
# Generic helper functions
# --------------------------------------------------
# Basic return code error message function
die_rcode() {
EXIT_CODE=$1
ERROR_MSG=$2
if [ $EXIT_CODE -ne '0' ]; then
echo "$ERROR_MSG" 1>&2
echo "Exiting!" 1>&2
exit "$BAD_EXIT_CODE"
fi
}
# --------------------------------------------------
# Main
# --------------------------------------------------
ps_clamd=""
ps_clamd="$get_clam_pids_pipeline"
if [ -n "$ps_clamd" ]; then
pid_count="0"
for pid in $ps_clamd
do
pid_count=`expr $pid_count + 1`
done
die_rcode $BAD_EXIT_CODE "Error: $pid_count clamd process(es) already running!"
fi
if [ -e "$lockfile" ]; then
rm "$lockfile"
exit_code="$?"
die_rcode $exit_code "Error: 'rm $lockfile' call failed."
fi
exec /usr/local/bin/setuidgid qscand $path_to_clamd
# --
# END /usr/local/clamav/supervise/clamd/run file.
# --
Create the /usr/local/clamav/supervise/clamd/log/run file:
#vi /usr/local/clamav/supervise/clamd/log/run
#!/bin/sh
exec /usr/local/bin/setuidgid qscand /usr/local/bin/multilog t /var/log/clamd
فایل Run را بسازید:
#chmod 755 /usr/local/clamav/supervise/clamd/run
#chmod 755 /usr/local/clamav/supervise/clamd/log/run
حالا log را تنظیم کنید:
#mkdir -p /var/log/clamd
chown qscand /var/log/clamd
در آخر هم نظارتگر را به /service لینک دهید:
#ln -s /usr/local/clamav/supervise/clamd /service
clamd به طور اتوماتیک و بلافاصله شروع به کار خواهد کرد اگر نمی خواهید چنین شود کد زیر را واردکنید:
#clamdctl stop
و بر عکس اسن مورد چنین است:
#clamdctl start
------------------------------------
CalmAV با حداکثر توان آماده به کار است. امیدوارم مفید واقع شود.