開源網站雲查殺方案,搭建自己的雲殺毒 -搭建ClamAV服務器


開源網站雲查殺方案,搭建自己的雲殺毒

搭建ClamAV服務器

1        前言:

在上一篇我們已經演示了整個方案,傳送門《開源網站雲查殺方案,搭建自己的雲殺毒》:https://www.cnblogs.com/dengjiahai/p/12437360.html#4514940。接着我就寫一個文章來演示如何搭建ClamAV服務器,開始之前,我先說說關於陸陸續續收到一些同行的交流對話和疑問的這個問題,發表一些我個人的見解和看法:

 

  1. 在服務器安裝殺軟它不香嘛?為甚搞那么復雜?

答:的確,在服務器直接安裝殺軟也是一種防護方案。我們之所以弄了這個東西,肯定是因為殺軟有一些地方滿足不了我們的要求。我簡單的說說我們能想到的應用情形。如果你看完了,覺得該方案對你有幫助,那么你可以繼續往下探討,如果你覺得毫無意義。那么說明這個東西滿足不了你們,可以不用往下看了。

 

首先,來個簡單的例子說明我們應用的情形。我們要做的其實就是類似VirSCAN這個網站的一些功能:傳送門:https://www.virscan.org/antivirusvendor/clamav

 

 

我們要主要是考慮到一下幾個方面,所以做出了這個選擇。

• 我們主要是掃描,而不是為了殺毒,簡單的說,我們是想從源頭上面去防護。而不是等病毒入侵了,我們才去殺毒。你要知道,我們這個方案是不殺毒的,只是掃描病毒。根據clamav的解釋,殺毒對於上傳附件來說是毫無意義的,因為它既然檢查出來病毒,把一些關鍵的文件殺掉了,剩下的文件應該也不能用了,即使能用,你信得過嘛?

• 我們在實驗中發現,部分壓縮包病毒下載到服務器,殺軟居然不去掃描,手動一掃,病毒就出來了,具體什么原因我也不了解,當然不排除我設置的不對,但是我都安裝的時候都是直接默認的。還有就是殺軟往往清楚病毒還要重啟才能清楚干凈,很多時候,你體檢電腦完了,殺軟是不是提醒你重啟電腦?

•有密碼的壓縮包應該是沒有辦法掃描的,但是我們上傳附件的時候,我們是在流文件里面用密碼打開壓縮包,然后去掃描,是不是安全很多。而不是等用戶直接在服務器解壓到本地才觸發殺軟。

•  還有就是,殺軟無法即使把殺毒情況反饋給用戶,我們考慮這個方案的時候,主要是考慮附件上傳的情況,如果說我是用戶,並且我是無意去攻擊的,然后我卻發現,我上傳了附件之后,系統提示我成功了,好,然后我安心的去干其他事情了,然后服務器才會去殺毒。把文件干掉。這個時侯用戶完全不知情啊。我的東西為什么沒了呢,你看像很多郵箱上傳附件,都會立即查殺,並告知你結果,如果查殺不通過,不會給你發送的。

•  殺軟還有一個局限是必須安裝在本地服務器,假如服務器壓力很大,殺毒掃描據我所知也比較耗費性能,據我以前的舊電腦的體驗,特別是內存不是很足的時候,在線看視頻,電腦很卡,把殺軟推出后,居然快了很多。所以我們就用這個分布式部署的方案,單獨一個服務器掃描。

•  ClamAV的®是郵件網關掃描軟件的開源標准。

•  高性能,ClamAV包括一個多線程掃描程序守護程序,用於按需文件掃描和自動簽名更新的命令行實用程序。

•   ClamAV支持多種文件格式,文件和存檔解壓縮以及多種簽名語言。

•   開源

 

我們主要是考慮以上情形。工作原理我們主要是

 

 

 

 

 

如果看完了上邊的,你覺得該方案對你有用,那么你可以繼續關注,倘若該方案對你而言毫無意義。那么你可以無需看后面的了。

 

2        准備工作

ClamAV官網:https://www.clamav.net/

ClamAV文檔:https://www.clamav.net/documents/clam-antivirus-user-manual

ClamAV 源碼:https://github.com/Cisco-Talos/clamav-devel

目前最新版是0.102.2.我關注過官方,最近一直有更新維護的,而且挺頻繁的。

 

 

 

 

2.1        ClamAV服務器要求

操作系統:我演示使用的是windows 10.(官方支持很多系統Unix / Linux / macOS/ Debian/ Ubuntu/Redhat/CentOS)等,源碼是開源的,如果不支持,自行編譯。

硬件配置:要求很低,感覺絕大部分電腦都能支持,至於在生產環境,則要根據自己的使用情況具體分配資源。

3        安裝服務

官方文檔應該自己看一遍,有個整體了解。

第一步,我們先去官網下載安裝包或者壓縮包。如果是下載安裝包,則界面安裝的方式安裝。如果是壓縮包,則解壓到響應的目錄即可。我演示的是使用ClamAV Windows Installer進行安裝。首先下載安裝包,下載地址: http : //www.clamav.net/downloads/production/ClamAV-0.102.1.exe。可能網絡比較慢,如果網絡太慢可能需要跳板下載。我公司的測試網絡還是可以的。

 

右鍵單擊ClamAV-0.102.1.exe並選擇以管理員身份運行,切記要用管理員身份,否則可能安裝失敗,或者運行不正常。您可能會收到“ Windows保護您的PC”的警告消息。選擇更多信息,然后選擇總是允許。

 

 

 

 

 

選擇I accept the agreement並單擊Next。

 

 

   

 

 

 

 

 

 

 

 

 

 

Next再點擊一次。如果您刪除了以前安裝的ClamAV,則可能會收到提示“文件夾...已存在...”。如果這樣做,請選擇Yes。點擊Install。就開始安裝。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

到此,ClamAV服務器就安裝完成了。

 

4        配置

首先我們要把conf_examples文件夾里面的clamd.conf.sample和freshclam.conf.sample兩個文件復制到根目錄外面,並用記事本或者文本編輯工具打開配置文件。

首先看clamd.conf文件

找到Example 這一行。把它注釋掉。否則運行會報錯。

 

接着找到以下幾行,把前面的注釋(#)去掉

#LogFile "C:\Program Files\ClamAV\clamd.log"

 

 

 

  

 

#PidFile "C:\Program Files\ClamAV\clamd.pid"

 

 

  

配置數據庫,我這里是默認路徑,如果你需要更高數據庫路徑自行設置對應的盤符目錄。后面需要把病毒庫放在這里。

#DatabaseDirectory "C:\Program Files\ClamAV\database"

 

設置服務器端口,默認3310端口

#TCPSocket 3310

設置監聽地址,可以設置多個地址。支持IPv6

#TCPAddr 127.0.0.1

這些是必須的配置,更多其他配置請自己根據配置文件的說明,按需開啟。

 

接着配置freshclam.conf,這個主要是對病毒庫的更新。

#注銷Example 一行

 

#DatabaseDirectory "C:\Program Files\ClamAV\database"

#UpdateLogFile "C:\Program Files\ClamAV\freshclam.log"

#DatabaseMirror database.clamav.net

 

#PidFile "C:\Program Files\ClamAV\freshclam.pid"

 

病毒庫地址,如果自己搭建鏡像,則可以使用自己的鏡像。

#DatabaseCustomURL http://myserver.example.com/mysigs.ndb

 

其他配置請自己按需開啟。注意最好能及時的更新病毒庫,否則新型病毒無法掃描出來。

 

5        使用

5.1    安裝病毒庫

在服務安裝目錄下面按ctrl +鼠標右鍵,在此處打開命令窗口,主要要用管理員打開,如果你打開的不是管理員身份,可以通過windows鍵,查找cmd,然后右鍵->管理員身份運行。進入到服務安裝目錄,執行 freshclam.exe.等待安裝完成。

安裝完成打開database文件夾。會看到三個病毒庫。

 

如果你的服務器網絡不通,可以自己搭建鏡像,亦或自己手動下載病毒庫。地址:https://www.clamav.net/downloads#collapseCVD

 

下載完成放到database里面去。

 

 

病毒庫默認12小時更新一次,如果需要更改,自行更改配置文件。

 

5.2    使用服務

Clamscan

掃描指定位置的文件。如下是掃描了一個a.zip 文件。發現了一個病毒

 

 

 有太多選項無法在此處列出所有選項。因此,我們將僅介紹一些常見且更有趣的內容:

 

--log=FILE -將掃描報告保存到FILE

--database=FILE/DIR -從FILE加載病毒數據庫或從DIR加載所有受支持的db文件

--official-db-only[=yes/no(*)] -僅加載官方簽名

--max-filesize=#n -大於此大小的文件將被跳過並認為是干凈的

--max-scansize=#n -每個容器文件要掃描的最大數據量

--leave-temps[=yes/no(*)]-不要刪除臨時文件

--file-list=FILE -從FILE掃描文件

--quiet -僅輸出錯誤消息

--bell -檢測病毒的聲音

--cross-fs[=yes(*)/no] -掃描其他文件系統上的文件和目錄

--move=DIRECTORY -將受感染的文件移至目錄

--copy=DIRECTORY -將受感染的文件復制到目錄中

--bytecode-timeout=N -設置字節碼超時(以毫秒為單位)

--heuristic-alerts[=yes(*)/no] -切換啟發式警報

--alert-encrypted[=yes/no(*)] -提醒加密的檔案和文件

--nocerts -在PE文件中禁用Authenticode證書鏈驗證

--disable-cache -禁用對掃描文件的哈希和進行緩存和緩存檢查

 

Clamdscan

需要啟動clamd服務,掃描速度快;
若不使用-r 參數指定路徑,默認遞歸掃描子目錄;

 

定時殺毒

#定制任務計划,凌晨3:00開始更新病毒庫,3:30開始殺毒,掃描/home目錄以及子目錄文件,將掃描出來的病毒文件直接刪除,並保存殺毒日志

 

簽名測試與管理

許多工具可用於測試和管理簽名。值得注意的是以下內容:

 

clambc -專門用於測試字節碼

sigtool -用於一般簽名測試和分析

freshclam -用於將簽名數據庫集更新為最新版本

 

還有更多的更能就不一一列舉,如果我都全部列舉了,那么跟翻譯官方文檔有什么區別。而且不是我們本文的關鍵。

 

如果上面的用法你都不會,那么沒關系,我們都可以不用,但是,下面的用法一定要會,因為直接決定我們的方案成功與否

clamd是一個多線程守護程序,它使用libclamav掃描文件中的病毒。可以通過修改將掃描行為完全配置為適合大多數需求clamd.conf。

 

由於clamd需要一個病毒庫運行,我們建議運行之前設置的ClamAV的官方簽名clamd使用freshclam。

 

該守護程序通過偵聽在中指定的套接字上的命令來工作clamd.conf。Unix本地套接字和TCP套接字都支持偵聽。

 

重要說明: clamd當前不保護或認證通過TCP套接字的通信,這意味着它將接受來自任何來源的任何以下所有命令。因此,我們強烈建議您在設置clamd實例時遵循最佳聯網實踐。即不要將您的TCP套接字暴露給Internet。

 

這是clamd套接字接受的命令的快速列表。

 

PING

VERSION

RELOAD

SHUTDOWN

SCAN 文件/目錄

RAWSCAN 文件/目錄

CONTSCAN 文件/目錄

MULTISCAN 文件/目錄

ALLMATCHSCAN 文件/目錄

INSTREAM

FILDES

STATS

IDSESSION, END

與大多數ClamAV工具一樣,您可以通過調用以下命令來查找有關這些工具的更多信息:

 

上面一段是直接翻譯官方的,是不是看的蒙?看不懂也沒關系。你只要會一句命令就行了。

Clamd

在服務根目錄用管理員打開cmd,輸入Clamd.exe或者Clamd

 

如圖所示就是已經成功啟動服務了,然后就可以去我們的代碼調試了。通過WebAPI,我們可以看到ClamAV 的版本。這就說明方案也使用成功了。然后你就可以愉快的實現自己的雲殺毒業務了。

 

6        常見問題排查

  • 啟動服務失敗?防火牆是不是禁止端口?
  • 啟動服務失敗?是否用管理員安裝?
  • 掃描病毒文件總是提示沒有病毒?可能改病毒沒有錄入,也有可能你沒有拉病毒庫?
  • 啟動服務失敗?配置文件是否配置好?
  • 程序連接不上殺毒服務器?IP和端口是否一致?

 

代碼已經開源,代碼托管到Gitee。傳送門:https://gitee.com/Jesai/JESAI.ClamAV.NetScanner.git


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM