開源網站雲查殺方案,搭建本身的雲殺毒。

  開源網站雲查殺方案,搭建本身的雲殺毒。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

但願你們幫忙點下星星,寫代碼不容易。鼓勵下寫代碼的動力。

後續等我有空,繼續寫一些怎麼使用的教程和完善下文檔。或者找我私下討論一下。如今還沒吃飯···········

相關文章
相關標籤/搜索