开源网站云查杀方案,搭建自己的云杀毒。
最近公司的一個客戶被勒索病毒攻擊了,可悲的是,客戶的文件附件太多而且大,沒有做雙機(jī)熱備的功能。當(dāng)客戶發(fā)現(xiàn)病毒后,還第一時間格式化了服務(wù)器。那叫一個慘!!!!!初步分析導(dǎo)致中毒的原因可能有:
1.內(nèi)網(wǎng)傳播,同一個局域網(wǎng)存在病毒?但是其他的電腦服務(wù)器沒聽說有中毒的情況,估計可能性少點(diǎn)。
2.可能客戶自己在服務(wù)器打開了某些文件導(dǎo)致中毒。這個就不清楚了,客戶不想承擔(dān)責(zé)任,就算有也不會承認(rèn)的。
3.可能是網(wǎng)站的用戶上傳了病毒,或者病毒的壓縮包。
不論如何,我們的系統(tǒng)給客戶的印象還是不太好啊。
然后最近又開始做一個互聯(lián)網(wǎng)的項(xiàng)目,其中有涉及到面向廣大群眾上傳附件的功能。為了安全我們就開始想安全方案。備份當(dāng)然最好有。殺毒服務(wù)成熟的也很多。比如某60啦,某毒霸啦······
然而,問題來了,客戶不想出錢。
公司也不想出錢。那怎么辦?
自己研發(fā)一個?我覺得可能性不大咯,這個東西,沒有高端人才和雄厚的財力支撐,估計比較難研發(fā)。
聰明的你應(yīng)該想到了。找開源方案。最開始我想的是,某60等本地的殺毒軟件有沒有接口可以調(diào)用呢,找了好久,發(fā)現(xiàn)用命令倒是可行的。命令確實(shí)在本地的文件才好查殺。不好控制啊。
而我想要的卻是用戶上傳的時候就掃描了,實(shí)時反饋文件的查殺結(jié)果。
接著繼續(xù)找方案······
好不容易終于發(fā)現(xiàn)思科的一個開源的東西。ClamAV,傳送門:https://www.clamav.net/
?
第一眼看到這個網(wǎng)站,就覺得逼格。然后在仔細(xì)研究了半天。就上路了。開始搭建自己的云查殺服務(wù)器。
文檔什么的都有,就是英文的。而且更新也挺快的。最關(guān)鍵是開源的。
?今天剛打完代碼,代碼開源在最后。具體使用文檔和搭建服務(wù)器過程等我后續(xù)有空再寫教程。
就看一波效果吧。有興趣自己下代碼研究。
服務(wù)器效果圖:
?代碼項(xiàng)目結(jié)構(gòu):
運(yùn)行效果:
沒用病毒的文件:
[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,暫時還沒完善,后續(xù)繼續(xù)完善WebApi接口。
??
? 最終效果:?
?
?
??
代碼已經(jīng)托管到gitee上面了:https://gitee.com/Jesai/JESAI.ClamAV.NetScanner.git
初步已經(jīng)可以使用,我已經(jīng)使用在項(xiàng)目。
目前只有netcore 3.1版本。
類庫已經(jīng)打包上傳到Nuget。可以通過nuget管理器搜索?JESAI.ClamAV.NetScannerCore安裝使用
或者直接命令?Install-Package?JESAI.ClamAV.NetScannerCore
希望大家?guī)兔c(diǎn)下星星,寫代碼不容易。鼓勵下寫代碼的動力。
總結(jié)
以上是生活随笔為你收集整理的开源网站云查杀方案,搭建自己的云杀毒。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一文读懂 Copyleft 开源许可证
- 下一篇: 五分钟了解数据库事务隔离