开源网站云查杀方案,搭建自己的云杀毒

搭建ClamAV服务器

1        前言:

在上一篇我们已经演示了整个方案,传送门《开源网站云查杀方案,搭建自己的云杀毒》:https://www.cnblogs.com/dengjiahai/p/12437360.html#4514940。接着我就写一个文章来演示如何搭建ClamAV服务器,开始之前,我先说说关于陆陆续续收到一些同行的交流对话和疑问的这个问题,发表一些我个人的见解和看法:

  1. 在服务器安装杀软它不香嘛?为甚搞那么复杂?

答:的确,在服务器直接安装杀软也是一种防护方案。我们之所以弄了这个东西,肯定是因为杀软有一些地方满足不了我们的要求。我简单的说说我们能想到的应用情形。如果你看完了,觉得该方案对你有帮助,那么你可以继续往下探讨,如果你觉得毫无意义。那么说明这个东西满足不了你们,可以不用往下看了。

首先,来个简单的例子说明我们应用的情形。我们要做的其实就是类似VirSCAN这个网站的一些功能:传送门:https://www.virscan.org/antivirusvendor/clamav

我们要主要是考虑到一下几个方面,所以做出了这个选择。

²  我们主要是扫描,而不是为了杀毒,简单的说,我们是想从源头上面去防护。而不是等病毒入侵了,我们才去杀毒。你要知道,我们这个方案是不杀毒的,只是扫描病毒。根据clamav的解释,杀毒对于上传附件来说是毫无意义的,因为它既然检查出来病毒,把一些关键的文件杀掉了,剩下的文件应该也不能用了,即使能用,你信得过嘛?

²  我们在实验中发现,部分压缩包病毒下载到服务器,杀软居然不去扫描,手动一扫,病毒就出来了,具体什么原因我也不了解,当然不排除我设置的不对,但是我都安装的时候都是直接默认的。还有就是杀软往往清楚病毒还要重启才能清楚干净,很多时候,你体检电脑完了,杀软是不是提醒你重启电脑?

²  有密码的压缩包应该是没有办法扫描的,但是我们上传附件的时候,我们是在流文件里面用密码打开压缩包,然后去扫描,是不是安全很多。而不是等用户直接在服务器解压到本地才触发杀软。

²  还有就是,杀软无法即使把杀毒情况反馈给用户,我们考虑这个方案的时候,主要是考虑附件上传的情况,如果说我是用户,并且我是无意去攻击的,然后我却发现,我上传了附件之后,系统提示我成功了,好,然后我安心的去干其他事情了,然后服务器才会去杀毒。把文件干掉。这个时侯用户完全不知情啊。我的东西为什么没了呢,你看像很多邮箱上传附件,都会立即查杀,并告知你结果,如果查杀不通过,不会给你发送的。

²  杀软还有一个局限是必须安装在本地服务器,假如服务器压力很大,杀毒扫描据我所知也比较耗费性能,据我以前的旧电脑的体验,特别是内存不是很足的时候,在线看视频,电脑很卡,把杀软推出后,居然快了很多。所以我们就用这个分布式部署的方案,单独一个服务器扫描。

²  ClamAV的®是邮件网关扫描软件的开源标准。

²  高性能,ClamAV包括一个多线程扫描程序守护程序,用于按需文件扫描和自动签名更新的命令行实用程序。

²  ClamAV支持多种文件格式,文件和存档解压缩以及多种签名语言。

²  开源

我们主要是考虑以上情形。工作原理我们主要是

如果看完了上边的,你觉得该方案对你有用,那么你可以继续关注,倘若该方案对你而言毫无意义。那么你可以无需看后面的了。

2        准备工作

ClamAV官网:https://www.clamav.net/

ClamAV文档:https://www.clamav.net/documents/clam-antivirus-user-manual

ClamAV 源码:https://github.com/Cisco-Talos/clamav-devel

目前最新版是0.102.2.我关注过官方,最近一直有更新维护的,而且挺频繁的。

2.1        ClamAV服务器要求

操作系统:我演示使用的是windows 10.(官方支持很多系统Unix / Linux / macOS/ Debian/ Ubuntu/Redhat/CentOS)等,源码是开源的,如果不支持,自行编译。

硬件配置:要求很低,感觉绝大部分电脑都能支持,至于在生产环境,则要根据自己的使用情况具体分配资源。

3        安装服务

官方文档应该自己看一遍,有个整体了解。

第一步,我们先去官网下载安装包或者压缩包。如果是下载安装包,则界面安装的方式安装。如果是压缩包,则解压到响应的目录即可。我演示的是使用ClamAV Windows Installer进行安装。首先下载安装包,下载地址: http : //www.clamav.net/downloads/production/ClamAV-0.102.1.exe。可能网络比较慢,如果网络太慢可能需要跳板下载。我公司的测试网络还是可以的。

右键单击ClamAV-0.102.1.exe并选择以管理员身份运行,切记要用管理员身份,否则可能安装失败,或者运行不正常。您可能会收到“ Windows保护您的PC”的警告消息。选择更多信息,然后选择总是允许。

选择I accept the agreement并单击Next。

Next再点击一次。如果您删除了以前安装的ClamAV,则可能会收到提示“文件夹...已存在...”。如果这样做,请选择Yes。点击Install。就开始安装。

到此,ClamAV服务器就安装完成了。

4        配置

首先我们要把conf_examples文件夹里面的clamd.conf.sample和freshclam.conf.sample两个文件复制到根目录外面,并用记事本或者文本编辑工具打开配置文件。

首先看clamd.conf文件

找到Example 这一行。把它注释掉。否则运行会报错。

接着找到以下几行,把前面的注释(#)去掉

#LogFile "C:\Program Files\ClamAV\clamd.log"

#PidFile "C:\Program Files\ClamAV\clamd.pid"

配置数据库,我这里是默认路径,如果你需要更高数据库路径自行设置对应的盘符目录。后面需要把病毒库放在这里。

#DatabaseDirectory "C:\Program Files\ClamAV\database"

设置服务器端口,默认3310端口

#TCPSocket 3310

设置监听地址,可以设置多个地址。支持IPv6

#TCPAddr 127.0.0.1

这些是必须的配置,更多其他配置请自己根据配置文件的说明,按需开启。

接着配置freshclam.conf,这个主要是对病毒库的更新。

#注销Example 一行

#DatabaseDirectory "C:\Program Files\ClamAV\database"

#UpdateLogFile "C:\Program Files\ClamAV\freshclam.log"

#DatabaseMirror database.clamav.net

#PidFile "C:\Program Files\ClamAV\freshclam.pid"

病毒库地址,如果自己搭建镜像,则可以使用自己的镜像。

#DatabaseCustomURL http://myserver.example.com/mysigs.ndb

其他配置请自己按需开启。注意最好能及时的更新病毒库,否则新型病毒无法扫描出来。

5        使用

5.1    安装病毒库

在服务安装目录下面按ctrl +鼠标右键,在此处打开命令窗口,主要要用管理员打开,如果你打开的不是管理员身份,可以通过windows键,查找cmd,然后右键->管理员身份运行。进入到服务安装目录,执行 freshclam.exe.等待安装完成。

安装完成打开database文件夹。会看到三个病毒库。

如果你的服务器网络不通,可以自己搭建镜像,亦或自己手动下载病毒库。地址:https://www.clamav.net/downloads#collapseCVD

下载完成放到database里面去。

病毒库默认12小时更新一次,如果需要更改,自行更改配置文件。

5.2    使用服务

Clamscan

扫描指定位置的文件。如下是扫描了一个a.zip 文件。发现了一个病毒

有太多选项无法在此处列出所有选项。因此,我们将仅介绍一些常见且更有趣的内容:

--log=FILE -将扫描报告保存到FILE

--database=FILE/DIR -从FILE加载病毒数据库或从DIR加载所有受支持的db文件

--official-db-only[=yes/no(*)] -仅加载官方签名

--max-filesize=#n -大于此大小的文件将被跳过并认为是干净的

--max-scansize=#n -每个容器文件要扫描的最大数据量

--leave-temps[=yes/no(*)]-不要删除临时文件

--file-list=FILE -从FILE扫描文件

--quiet -仅输出错误消息

--bell -检测病毒的声音

--cross-fs[=yes(*)/no] -扫描其他文件系统上的文件和目录

--move=DIRECTORY -将受感染的文件移至目录

--copy=DIRECTORY -将受感染的文件复制到目录中

--bytecode-timeout=N -设置字节码超时(以毫秒为单位)

--heuristic-alerts[=yes(*)/no] -切换启发式警报

--alert-encrypted[=yes/no(*)] -提醒加密的档案和文件

--nocerts -在PE文件中禁用Authenticode证书链验证

--disable-cache -禁用对扫描文件的哈希和进行缓存和缓存检查

Clamdscan

需要启动clamd服务,扫描速度快;
若不使用-r 参数指定路径,默认递归扫描子目录;

定时杀毒

#定制任务计划,凌晨3:00开始更新病毒库,3:30开始杀毒,扫描/home目录以及子目录文件,将扫描出来的病毒文件直接删除,并保存杀毒日志

签名测试与管理

许多工具可用于测试和管理签名。值得注意的是以下内容:

clambc -专门用于测试字节码

sigtool -用于一般签名测试和分析

freshclam -用于将签名数据库集更新为最新版本

还有更多的更能就不一一列举,如果我都全部列举了,那么跟翻译官方文档有什么区别。而且不是我们本文的关键。

如果上面的用法你都不会,那么没关系,我们都可以不用,但是,下面的用法一定要会,因为直接决定我们的方案成功与否

clamd是一个多线程守护程序,它使用libclamav扫描文件中的病毒。可以通过修改将扫描行为完全配置为适合大多数需求clamd.conf。

由于clamd需要一个病毒库运行,我们建议运行之前设置的ClamAV的官方签名clamd使用freshclam。

该守护程序通过侦听在中指定的套接字上的命令来工作clamd.conf。Unix本地套接字和TCP套接字都支持侦听。

重要说明: clamd当前不保护或认证通过TCP套接字的通信,这意味着它将接受来自任何来源的任何以下所有命令。因此,我们强烈建议您在设置clamd实例时遵循最佳联网实践。即不要将您的TCP套接字暴露给Internet。

这是clamd套接字接受的命令的快速列表。

PING

VERSION

RELOAD

SHUTDOWN

SCAN 文件/目录

RAWSCAN 文件/目录

CONTSCAN 文件/目录

MULTISCAN 文件/目录

ALLMATCHSCAN 文件/目录

INSTREAM

FILDES

STATS

IDSESSION, END

与大多数ClamAV工具一样,您可以通过调用以下命令来查找有关这些工具的更多信息:

上面一段是直接翻译官方的,是不是看的蒙?看不懂也没关系。你只要会一句命令就行了。

Clamd

在服务根目录用管理员打开cmd,输入Clamd.exe或者Clamd

如图所示就是已经成功启动服务了,然后就可以去我们的代码调试了。通过WebAPI,我们可以看到ClamAV 的版本。这就说明方案也使用成功了。然后你就可以愉快的实现自己的云杀毒业务了。

6       
常见问题排查

  • 启动服务失败?防火墙是不是禁止端口?
  • 启动服务失败?是否用管理员安装?
  • 扫描病毒文件总是提示没有病毒?可能改病毒没有录入,也有可能你没有拉病毒库?
  • 启动服务失败?配置文件是否配置好?
  • 程序连接不上杀毒服务器?IP和端口是否一致?

代码已经开源,代码托管到Gitee。传送门:https://gitee.com/Jesai/JESAI.ClamAV.NetScanner.git

开源网站云查杀方案,搭建自己的云杀毒-搭建ClamAV服务器的更多相关文章

  1. 护卫神·云查杀系统V4.0-安全检测部分

    感谢使用护卫神·云查杀系统,该软件专门查杀网页木马,完全免费,欢迎大家使用.    护卫神·云查杀系统 下载地址:http://down.huweishen.com/free/HwsKill.zip ...

  2. 【华为云实战开发】8.如何快速搭建C#网站并实现持续集成?【华为云技术分享】

    1 概述 1.1 文章目的 本文通过一个实例介绍如何使用软件开发服务DevCloud完成一个C#Web项目的开发. 1.2 项目详情 1. 项目名称:超级冷笑话网站 2. 项目简介:一个Web网站,包 ...

  3. 白嫖永久免费云服务器教程,永久免费虚拟主机、永久免费云数据库、搭建FTP服务器、服务器安装Linux / windows操作系统、服务器部署网站、宝塔一键部署多网站、独立ip、永久国内高速云服务器

    一.准备工作 1. 注册账号 声明:切记不可用服务器做违法的事情 申请地址:https://www.sanfengyun.com/ 图文教程地址:https://www.cnblogs.com/zwn ...

  4. API接口访问频次限制 / 网站恶意爬虫限制 / 网站恶意访问限制 方案

    API接口访问频次限制 / 网站恶意爬虫限制 / 网站恶意访问限制 方案 采用多级拦截,后置拦截的方式体系化解决 1 分层拦截 1.1 第一层 商业web应用防火墙(WAF) 直接用商业服务 传统的F ...

  5. linux下使用URLOS搭建nextcloud私有云盘系统

    Nextcloud是一个免费专业的私有云存储网盘开源项目,可以让你简单快速地在个人/公司电脑.服务器甚至是树莓派等设备上架设一套属于自己或团队专属的云同步网盘,从而实现跨平台跨设备文件同步.共享.版本 ...

  6. Kube-OVN:大型银行技术团队推荐的金融级云原生网络方案

    近日,由TWT社区主办的2021容器云职业技能大赛团队赛的冠军作品:<适用于大中型银行的云原生技术体系建设方案>中,Kube-OVN成为银行技术团队推荐的金融级云原生网络最佳实践.本文部分 ...

  7. 使用OwnCloud搭建自己的云盘

    使用OwnCloud搭建自己的云盘 1.用途 ownCloud是一款开源的私有云框架,可以通过它实现个人网盘的功能,ownCloud提供了各个平台的文件同步客户端,因此搭建好ownCloud之后即可使 ...

  8. Windows 8 64位系统 在VS2010 32位软件上 搭建 PCL点云库 开发环境

    Windows 8 64位系统 在VS2010 32位软件上 搭建 PCL点云库 开发环境 下载PCL For windows 软件包 到这个网站下载PCL-All-In-One Installer: ...

  9. CentOS7下一键小白搭建seafile pro云盘

    搭建前准备工作 vps或者云服务器,个人搭建使用建议腾讯云,公司搭建使用建议阿里云. 没有服务器的小伙伴可以下面链接进入看下,腾讯云的配置带宽会比阿里云的好点. 阿里云新人优惠服务器 腾讯云云上特惠 ...

随机推荐

  1. poj 2342树形dp板子题1

    http://poj.org/problem?id=2342 #include<iostream> #include<cstdio> #include<cstring&g ...

  2. F5 BIG-IP之二 LTM实验一

  3. python函数参数理解

    1.位置参数 函数调用时,参数赋值按照位置顺序依次赋值. e.g. def function(x): 3 return x * x 5 print function(2) 输出结果: 4 def fu ...

  4. JavaScript设计模式一:工厂模式和构造器模式

    转自:http://segmentfault.com/a/1190000002525792 什么是模式 前阵子准备期末考试,挺累也挺忙的,实在闲不得空来更新文章,今天和大家说说javascript中的 ...

  5. mysql数据库常用命令入门

    查询所有数据库 show databases; 创建数据库 create database mytest001 default character set utf8; 查看数据库的默认字符集 show ...

  6. php--ip的处理

    1.获取ip /**获取请求ip**/ function _get_request_ip(){ //strcasecmp 比较两个字符,不区分大小写.返回0,>0,<0. if(geten ...

  7. java实现树的一般操作

    https://www.cnblogs.com/dawnyxl/p/9047437.html 树是数据结构中最基本的结构,今天的博客更新一下树的基本操作: 树的节点结构: package tree; ...

  8. SpringBoot + JPA + mariadb

    SpringBoot + JPA + MariaDB 源码:https://github.com/ldl326308/LiveGreen-SpringBoot.git JPA持久层方法名命名规则:

  9. Drools 7.15.0 docker容器方式部署

    关于drools的相关介绍就不再赘述了,关于drools网上的资料都很少,或者都有些老了,最近折腾了一下,记录下安装部署的过程,希望能节省下大家的时间. 一.快速部署 1.拉取基础镜像,命令如下: d ...

  10. 数位dp对于状态描述与发现的一些感悟

    今天刷的数位dp 第一题看了题解以后知道了数位dp的基本板子,写数位dp的方式(运用记忆化递归的方法)已经基本固定. 那么接下来的难点主要还是对于题目描述的问题,如何抽象成dp中的状态.就今天刷的题来 ...