[شرح] تركيب Clam AntiVirus مضاد الفيروسات !

ENG MUHAMED

[ADMIN]
طاقم الإدارة
25 فبراير 2008
10,079
43
48
support-ar.net
السلام عليكم ورحمة الله وبركاته

برنامج clamav هو مضاد فيروسات يستخدم علي Linux



لتركيب البرنامج علي السيرفر
اتبع الأوامر التالية
كود:
wget -c http://kent.dl.sourceforge.net/sourceforge/clamav/clamav-0.93.3.tar.gz
كود:
tar −xvzf clamav-0.93.3.tar.gz
cd clamav−0.93 #groupadd clamav
useradd clamav −g clamav −c "Clam AntiVirus" −s /nonexistent .
/configure
make
make install
cd ..
نقوم بالتعديل علي /etc/crontab لعمل تحديث كل 12 ساعه للـ Clam عن طريق الامر التالي :



كود:
pico /etc/crontab
اضف في نهايته هذا السطر :



كود:
[LEFT]   0 12 * * * root /usr/local/bin/clamscan  
    [/LEFT]
لتنفيذ التحديث استخدم الاوامر التاليه :



كود:
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
لاعداد البرنامج اتبع الخطوات التاليه :



كود:
pico /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"

نفذ امر انشاء الملف التالي :



كود:
mkdir -p /usr/local/clamav/bin
ونقوم بعمل سكربت صغير لتشغيل و اغلاق البرنامج :



كود:
pico /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

نقوم بأضافه التصريحات التاليه :



كود:
chmod 755 /usr/local/clamav/bin/clamdctl
كود:
chown clamav /usr/local/clamav/bin/clamdctl
كود:
ln -s /usr/local/clamav/bin/clamdctl /usr/local/bin
انشأ المجلد التالي :



كود:
mkdir -p /usr/local/clamav/supervise/clamd/log
حرر الملف :



كود:
pico /usr/local/clamav/supervise/clamd/run
قم بأضافه التالي في الملف :

كود:
[COLOR=#000000][COLOR=#ff8000]#!/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)
# --------------------------------------------------

[/COLOR][COLOR=#0000bb]lockfile[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"/tmp/clamd"   [/COLOR][COLOR=#ff8000]# Location of clamd lock file
[/COLOR][COLOR=#0000bb]path_to_clamd[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"/usr/local/sbin/clamd"
                        [/COLOR][COLOR=#ff8000]# Location of the clamd binary
[/COLOR][COLOR=#0000bb]BAD_EXIT_CODE[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000bb]1         [/COLOR][COLOR=#ff8000]# 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.
[/COLOR][COLOR=#0000bb]get_clam_pids_pipeline[/COLOR][COLOR=#007700]=`[/COLOR][COLOR=#0000bb]ps -ax | grep -E "[/COLOR][COLOR=#007700]${[/COLOR][COLOR=#0000bb]path_to_clamd[/COLOR][COLOR=#007700]}[/COLOR][COLOR=#0000bb]\$" | grep -v grep | awk '{print $1}'[/COLOR][COLOR=#007700]`


[/COLOR][COLOR=#ff8000]# --------------------------------------------------
# Generic helper functions
# --------------------------------------------------

# Basic return code error message function
[/COLOR][COLOR=#0000bb]die_rcode[/COLOR][COLOR=#007700]() {
    [/COLOR][COLOR=#0000bb]EXIT_CODE[/COLOR][COLOR=#007700]=$[/COLOR][COLOR=#0000bb]1
    ERROR_MSG[/COLOR][COLOR=#007700]=$[/COLOR][COLOR=#0000bb]2

    [/COLOR][COLOR=#007700]if [ [/COLOR][COLOR=#0000bb]$EXIT_CODE [/COLOR][COLOR=#007700]-[/COLOR][COLOR=#0000bb]ne [/COLOR][COLOR=#dd0000]'0' [/COLOR][COLOR=#007700]]; [/COLOR][COLOR=#0000bb]then
        [/COLOR][COLOR=#007700]echo [/COLOR][COLOR=#dd0000]"$ERROR_MSG" [/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700]>&[/COLOR][COLOR=#0000bb]2
        [/COLOR][COLOR=#007700]echo [/COLOR][COLOR=#dd0000]"Exiting!" [/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700]>&[/COLOR][COLOR=#0000bb]2
        [/COLOR][COLOR=#007700]exit [/COLOR][COLOR=#dd0000]"$BAD_EXIT_CODE"
    [/COLOR][COLOR=#0000bb]fi
[/COLOR][COLOR=#007700]}


[/COLOR][COLOR=#ff8000]# --------------------------------------------------
# Main
# --------------------------------------------------

[/COLOR][COLOR=#0000bb]ps_clamd[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]""
[/COLOR][COLOR=#0000bb]ps_clamd[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"$get_clam_pids_pipeline"

[/COLOR][COLOR=#007700]if [ -[/COLOR][COLOR=#0000bb]n [/COLOR][COLOR=#dd0000]"$ps_clamd" [/COLOR][COLOR=#007700]]; [/COLOR][COLOR=#0000bb]then
    pid_count[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"0"
    [/COLOR][COLOR=#007700]for [/COLOR][COLOR=#0000bb]pid in $ps_clamd
    [/COLOR][COLOR=#007700]do
        [/COLOR][COLOR=#0000bb]pid_count[/COLOR][COLOR=#007700]=`[/COLOR][COLOR=#0000bb]expr $pid_count + 1[/COLOR][COLOR=#007700]`
    [/COLOR][COLOR=#0000bb]done
    
    die_rcode $BAD_EXIT_CODE [/COLOR][COLOR=#dd0000]"Error: $pid_count clamd process(es) already running!"

[/COLOR][COLOR=#0000bb]fi

[/COLOR][COLOR=#007700]if [ -[/COLOR][COLOR=#0000bb]e [/COLOR][COLOR=#dd0000]"$lockfile" [/COLOR][COLOR=#007700]]; [/COLOR][COLOR=#0000bb]then
    rm [/COLOR][COLOR=#dd0000]"$lockfile"
    [/COLOR][COLOR=#0000bb]exit_code[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#dd0000]"$?"
    [/COLOR][COLOR=#0000bb]die_rcode $exit_code [/COLOR][COLOR=#dd0000]"Error: 'rm $lockfile' call failed."
[/COLOR][COLOR=#0000bb]fi

exec [/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]usr[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]local[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]bin[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]setuidgid qscand $path_to_clamd

[/COLOR][COLOR=#ff8000]# --
# END /usr/local/clamav/supervise/clamd/run file.
# --

[/COLOR][COLOR=#0000bb]Create the [/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]usr[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]local[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]clamav[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]supervise[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]clamd[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]log[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]run file[/COLOR][COLOR=#007700]:

[/COLOR][COLOR=#ff8000]#vi /usr/local/clamav/supervise/clamd/log/run

#!/bin/sh
[/COLOR][COLOR=#0000bb]exec [/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]usr[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]local[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]bin[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]setuidgid qscand [/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]usr[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]local[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]bin[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]multilog t [/COLOR][COLOR=#007700]/var/[/COLOR][COLOR=#0000bb]log[/COLOR][COLOR=#007700]/[/COLOR][COLOR=#0000bb]clamd  [/COLOR][/COLOR]
قم بعمل التصريحات التاليه :



كود:
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
نقوم بأضافه supervise فى service



كود:
ln -s /usr/local/clamav/supervise/clamd /service
لايقاف البرنامج عن طريق الامر التالي :



كود:
clamdctl stop
لتشغيل البرنامج عن طريق الامر التالي :



كود:
clamdctl start
اذا اصبت فمن الله و ان اخطأت فمن نفسي و من الشيطان ...


الشرح للأخ ابو فارس هنا