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开发_图片截取
    一位台湾软件工程师的心路历程
    WCF Basic(2)服务契约继承
    状态模式(State Pattern)
    .NET Remoting Basic(9)上下文(CallContext)
    访问者模式(Visitor Pattern)
    命令模式(Command Pattern)
    .NET Remoting Basic(10)创建不同宿主的客户端与服务器端
    责任链模式(Chain of Responsibility Pattern)
    消息队列(Message Queuing)
  • 原文地址:https://www.cnblogs.com/dengjiahai/p/12437360.html
Copyright © 2011-2022 走看看