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

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

  最近公司的一个客户被勒索病毒攻击了,可悲的是,客户的文件附件太多而且大,没有做双机热备的功能。当客户发现病毒后,还第一时间格式化了服务器。那叫一个惨!!!!!初步分析导致中毒的原因可能有:

1.内网传播,同一个局域网存在病毒?但是其他的电脑服务器没听说有中毒的情况,估计可能性少点。

2.可能客户自己在服务器打开了某些文件导致中毒。这个就不清楚了,客户不想承担责任,就算有也不会承认的。

3.可能是网站的用户上传了病毒,或者病毒的压缩包。

不论如何,我们的系统给客户的印象还是不太好啊。

然后最近又开始做一个互联网的项目,其中有涉及到面向广大群众上传附件的功能。为了安全我们就开始想安全方案。备份当然最好有。杀毒服务成熟的也很多。比如某60啦,某毒霸啦······

然而,问题来了,客户不想出钱。

公司也不想出钱。那怎么办?

自己研发一个?我觉得可能性不大咯,这个东西,没有高端人才和雄厚的财力支撑,估计比较难研发。

聪明的你应该想到了。找开源方案。最开始我想的是,某60等本地的杀毒软件有没有接口可以调用呢,找了好久,发现用命令倒是可行的。命令确实在本地的文件才好查杀。不好控制啊。

而我想要的却是用户上传的时候就扫描了,实时反馈文件的查杀结果。

接着继续找方案······

好不容易终于发现思科的一个开源的东西。ClamAV,传送门:https://www.clamav.net/

第一眼看到这个网站,就觉得逼格。然后在仔细研究了半天。就上路了。开始搭建自己的云查杀服务器。

文档什么的都有,就是英文的。而且更新也挺快的。最关键是开源的。

今天刚打完代码,代码开源在最后。具体使用文档和搭建服务器过程等我后续有空再写教程。

就看一波效果吧。有兴趣自己下代码研究。

服务器效果图:

代码项目结构:

运行效果:

没用病毒的文件:

 [Fact]
        public async Task ScanBytes_InfectedData_ReturnsExpectedResult()
        {
            var ctx = IntegrationTestContext.CreateDefaultUnitTestContext();
            const string sampleVirusSignature = @"1111111111111";
            IClamAVScannerClient ClamAVScannerClient=ctx.Resolve<IClamAVScannerClient>();
            var bytes = Encoding.UTF8.GetBytes(sampleVirusSignature);
           var result=await ClamAVScannerClient.SendAndScanFileAsync(bytes);
            Assert.Equal(ScanResponseStatus.VirusDetected, result.Status);
            Assert.NotEmpty(result.InfectedFiles);
        }

  

 

 找了几个病毒测试包测试:

 [Fact]
        public async Task ScanFileStream_InfectedData_ReturnsVirusDetectedResult()
        {
            var ctx = IntegrationTestContext.CreateDefaultUnitTestContext();
            string filePath = @"C:UsersdengDesktop.zip";

            IClamAVScannerClient ClamAVScannerClient = ctx.Resolve<IClamAVScannerClient>();
            var result = await ClamAVScannerClient.SendAndScanFileAsync(FileToStream(filePath));

            Assert.Equal(ScanResponseStatus.VirusDetected, result.Status);
            //Assert.NotEmpty(result.InfectedFiles);
        }

  

 

 提供了WebApi,暂时还没完善,后续继续完善WebApi接口。

最终效果:

 

代码已经托管到gitee上面了:https://gitee.com/Jesai/JESAI.ClamAV.NetScanner.git

初步已经可以使用,我已经使用在项目。

目前只有netcore 3.1版本。

类库已经打包上传到Nuget。可以通过nuget管理器搜索 JESAI.ClamAV.NetScannerCore安装使用

或者直接命令 Install-Package JESAI.ClamAV.NetScannerCore

希望大家帮忙点下星星,写代码不容易。鼓励下写代码的动力。

后续等我有空,继续写一些怎么使用的教程和完善下文档。或者找我私下讨论一下。现在还没吃饭···········

原文地址:https://www.cnblogs.com/dengjiahai/p/12437360.html