1. 程式人生 > >開源網站雲查殺方案,搭建自己的雲防毒 -搭建ClamAV伺服器

開源網站雲查殺方案,搭建自己的雲防毒 -搭建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