zoukankan      html  css  js  c++  java
  • 开源网站云查杀方案,搭建自己的云杀毒。

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

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

    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

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

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

  • 相关阅读:
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Number Challenge(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 Rotatable Number(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Java实现 蓝桥杯 算法训练 猴子吃包子(暴力)
    Python位运算符
  • 原文地址:https://www.cnblogs.com/dengjiahai/p/12437360.html
Copyright © 2011-2022 走看看