開源網站雲查殺方案,搭建自己的雲防毒 -搭建ClamAV伺服器
開源網站雲查殺方案,搭建自己的雲防毒
搭建ClamAV伺服器
1 前言:
在上一篇我們已經演示了整個方案,傳送門《開源網站雲查殺方案,搭建自己的雲防毒》:https://www.cnblogs.com/dengjiahai/p/12437360.html#4514940。接著我就寫一個文章來演示如何搭建ClamAV伺服器,開始之前,我先說說關於陸陸續續收到一些同行的交流對話和疑問的這個問題,發表一些我個人的見解和看法:
- 在伺服器安裝殺軟它不香嘛?為甚搞那麼複雜?
答:的確,在伺服器直接安裝殺軟也是一種防護方案。我們之所以弄了這個東西,肯定是因為殺軟有一些地方滿足不了我們的要求。我簡單的說說我們能想到的應用情形。如果你看完了,覺得該方案對你有幫助,那麼你可以繼續往下探討,如果你覺得毫無意義。那麼說明這個東西滿足不了你們,可以不用往下看了。
首先,來個簡單的例子說明我們應用的情形。我們要做的其實就是類似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