千家信息网

clamav扫描工具

发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,准备两台机器做测试一台检测机 192.168.251.134一台被测机器 192.168.3.24在被测机器上安装clamav 之前还需要安装zlib 要不然安装过程中会报错的.tar -zxvf z
千家信息网最后更新 2025年02月08日clamav扫描工具

准备两台机器做测试

一台检测机 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 检测是否监听

如果监听成功则

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

0