准备两台机器做测试
一台检测机 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 检测是否监听
如果监听成功则
在检测服务器上运行脚本,即可