准备两台机器做测试

一台检测机 192.168.251.134

一台被测机器 192.168.3.24


在被测机器上

安装clamav 之前还需要安装zlib 要不然安装过程中会报错的.

tar -zxvf  zlib-1.2.3.tar.gz

cd zlib-1.2.3

./configure

make

make install    (zlib 编译安装)

因为我用源码包安装,需要手动创建clamav 用户

groupadd clamav   (创建clamav组

useradd -g clamav clamav (创建clamav用户并加入clamav组)

tar -zxvf clamav-0.95.2.tar.gz  (解压)

cd clamav-0.95.2 (进入目录)

./configure --prefix=/usr/local/clamav

make

make install    (编译并安装 )

到此clamav 的安装完毕下面让clamav 启动起来.

首先创建一个目录.

mkdir /usr/local/clamav/logs      (日志存放目录)

mkdir /usr/local/clamav/updata   (clanav 病毒库目录)

vi /usr/local/clamav/etc/clamd.conf 

可能会有clamd.conf.simple文件 你可以修改这个文件再

cp clamd.conf.simple clamd.conf

这样就可以了


# Example    注释掉这一行.   第8 行

LogFile /usr/local/clamav/logs/clamd.log    删掉前面的注释目录改为logs下面   第14行

PidFile /usr/local/clamav/updata/clamd.pid     删掉前面的注释路径改一下       第57行

DatabaseDirectory /usr/local/clamav/updata      同上                         第65行


vi /usr/local/clamav/etc/freshclam.conf

# Example    注释掉这一行.   第8 行

DatabaseDirectory /usr/local/clamav/updata


UpdateLogFile /usr/local/clamav/logs/freshclam.log


PidFile /usr/local/clamav/updata/freshclam.pid     (忘记写多少行了自己找一下吧.)


下面创建日志文件

touch /usr/local/clamav/logs/freshclam.log

chown clamav:clamav /usr/local/clamav/logs/freshclam.log

touch /usr/local/clamav/logs/clamd.log

chown clamav:clamav /usr/local/clamav/logs/clamd.log

chown clamav:clamav /usr/local/clamav/updata

/usr/local/clamav/bin/freshclam        (升级病毒库)   保证你的LINUX可以正常上网哦.

[p_w_upload=43384]

需要一点时间的.

等了我半个小时终于下载完成了.


在更新的同时可以在检测机器写脚本了192.168.251.134


写之前要注意需要安装pyClamad的环境

http://xael.org/pages/pyclamd-en.html下载源码包

解压安装 python setup.py install


安装后 vim pyclamd.py


#!/usr/bin/python

#-*- coding: utf-8 -*-

import time

import pyclamd

from threading import Thread


class Scan(Thread):

    def __init__ (self,IP,scan_type,file):

        """构造方法,参数初始化"""

        Thread.__init__(self)

        self.IP = IP

        self.scan_type = scan_type

        self.file = file

        self.connstr = ""

        self.scanresult = ""

    def run(self):

        """多进程run方法"""

        try:      

            cd = pyclamd.ClamdNetworkSocket(self.IP,3310)  #创建套接字对象

            if cd.ping():    #探测连通性

                self.connstr = self.IP+"connection[OK]"

                cd.reload()   #重载clamd病毒特征库,建议更新病毒库后做reload()操作

                if self.scan_type == "contscan_file":

                    self.scanresult="{0}\n".format(cd.contscan_file(self.file))

                elif self.scan_type=="multiscan_file":

                    self.scanresult="{0}\n".format(cd.multiscan_file(self.file))

                elif self.scan_type=="scan_file":

                    self.scanresult="{0}\n".format(cd.scan_file(self.file))

                time.sleep(1)

            else:

                self.connstr=self.IP+"ping error,exit"

        except Exception,e:

                self.connstr=self.IP+" "+str(e)

IPs=['192.168.3.24']   #指定扫描主机列表

scantype = "multiscan_file"  #指定扫描模式,支持multiscan_file,contscan_file,scan_file

scanfile = "/tmp"  #指定扫描路径

i=1

threadnum = 2  #指定启动的线程数

scanlist = []  #存储扫描Scan类线程对象列表


for ip in IPs:

    currp = Scan(ip,scantype,scanfile)   #创建扫描Scan类对象,参数(IP,扫描模式,扫描路径)

    scanlist.append(currp)      #追加对象到列表


    if i%threadnum==0 or i==len(IPs):    #当达到指定的线程或IP列表数后启动,退出线程

       for task in scanlist:

           task.start()    #启动线程

       for task in scanlist:

           task.join()   #等待所有子线程退出,并输出扫描结果

           print task.connstr  #打印服务器连接信息

       scanlist = []

    i+=1

-------------------------------------------------------------------------------

完成脚本,别急着直接运行

在192.168.3.24被测服务器上启动服务,并且开放监听端口

先sed -i =e '/^TCPAddr/{s/127.0.0.1/0.0.0.0/;}' /usr/local/etc/clamv/clamv.conf

可能这个已经注释掉,最好还是直接vim进去手动改

/usr/local/clamv/sbin/clamd start 启动

开放端口为3310

lsof -i:3310  检测是否监听

如果监听成功则

在检测服务器上运行脚本,即可