开源网站云查杀方案,搭建本身的云杀毒。

  开源网站云查杀方案,搭建本身的云杀毒。git

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

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

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

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

不论如何,咱们的系统给客户的印象仍是不太好啊。网站

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

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

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

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

聪明的你应该想到了。找开源方案。最开始我想的是,某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:\Users\deng\Desktop\b.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

但愿你们帮忙点下星星,写代码不容易。鼓励下写代码的动力。

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

相关文章
相关标签/搜索