以samba-vscan實作可防毒的檔案伺服器

2011-03-25
資料儲存與資料控管是每天企業活動中不可或缺的一環。市面上相關的網路儲存設備(Network Attached Storage,NAS)產品琳瑯滿目,各有各的特色,其中「資料控管功能」和「病毒掃描功能」功能是企業最迫切需要。
資料控管功能是利用帳號/密碼的控管方式,來確保資料機密的安全性。而病毒掃描功能,則是當資料備份至網路儲存設備時,利用病毒掃描軟體對該檔案進行病毒掃描,以避免檔案受到病毒感染的威脅。  

其實,上述兩項功能在開源碼社群中早有相關的解決方案,本文將介紹Samba伺服器(檔案伺服器,類似NAS功能)結合samba-vscan與ClamAV(掃毒軟體),實作出一個具有帳號控管和病毒掃描功能的NAS系統。下表為本解決方案所需的相關套件。  

安裝ClamAV 

如果問起Linux系統下的病毒解決方案,相信大家腦海浮現的第一個印象即是ClamAV。ClamAV除了可以常駐程式(Daemon)的型式單獨當成掃描軟體使用外,還可與各個網路服務搭配來增加病毒掃描的功能。例如與郵件伺服器結合,即可掃描來往郵件是否帶有病毒,而與網站伺服器結合,則可掃描來往的HTTP封包是否含有病毒。而在本解決方案中,ClamAV與檔案伺服器結合(在此以Samba當成檔案伺服器),即時掃描檔案伺服器中的檔案來檢查是否含有病毒,並採取相關的措施,例如隔離到某個目錄或直接刪除。  

接下來,簡單說明ClamAV的安裝及使用方式。首先至「http://clamav.net/」取得ClamAV的最新版本,筆者取得的版本為0.96.5,然後解壓縮,執行指令「./configure –prefix=/usr/local/clamav/」將ClamAV安裝在「/usr/local/clamav/」目錄中。接著,依序執行指令「make」、「make install」進行編譯並安裝相關的程式至「/usr/local/clamav/」。  

基本上,ClamAV提供常駐程式及手動執行的執行方式,如下所述。  

常駐程式
常駐程式(Daemon)執行模式分為「掃描伺服器程式」和「掃描客戶端程式」,使用者須先執行掃描伺服器端程式(clamd),再執行掃描客戶端程式(clamdscan)透過掃描伺服器端程式進行掃描。在此種模式下,使用者可自行開發病毒掃描程式,利用clamd所提供的命令介面來控制clamd程式。  

在此僅介紹幾個常用的命令介面,其餘相關命令介面請自行參考官方網站的說明。  

PING:檢查clamd程式是否正在執行中,如果clamd正在執行中,即會回應pong訊息(即是ping-pong的檢查)。
RELOAD:通知clamd程式,重新載入病毒碼資料庫。
SHUTDOWN:停止clamd程式執行。
SCAN:掃描檔案或目錄,如果是掃描目錄,即會以遞迴的方式掃描。
MULTISCAN:運用多執行緒(Thread)的掃描方式,此種方式在多處理器系統下會達到更高的掃描效率。
INSTREAM:要求clamd程式掃描網路上傳送的封包資料,這裡要特別注意的是,INSTREAM所傳送的封包不能大於在clamd設定檔中StreamMaxLength欄位的設定,否則會發生中斷連線的問題。
STATUS:要求clamd程式顯示目前執行的統計資訊,如記憶體、CPU的使用狀況等。  

在本解決方案中,samba-vscan模組即是利用透過clamd所提供的命令介面的方式,進行病毒掃描的任務。  

手動執行
手動方式的執行,即是簡單使用clamscan程式來掃描。讀者簡單的利用指令「clamscan <目錄/檔案>」來掃描目錄或檔案是否有感染病毒。以下列出常用的命令選項,其餘相關進階用法,就請自行參閱相關文件說明。  

-i:只顯示被感染的檔案。
--log=FILE:將相關的掃描結果儲存在的檔案。
--bell:在掃描的過程中,如果有發現被感染的檔案即發出Bell聲警示。
-r:以遞迴的方式掃描目錄下的所有檔案。
--remove:當發現檔案被感染即直接刪除。
--exclude=REGEX:排除掃描的檔案,如果符合REGEX所定義的檔案即不予掃描,其中REGEX可利用正規表示法定義,如「clamscan --exclude=import.php /tmp」,即不掃描在「/tmp」目錄下的import.php檔案。
--include=REGEX:設定欲掃描的檔案,若符合REGEX所定義的檔案才予掃描,其中REGEX可利用正規表示法定義,如「clamscan --include=import.php /tmp」則只掃描在「/tmp」目錄下的import.php檔案。  

在使用ClamAV之前,必須先設定ClamAV相關組態檔,由於這裡將使用常駐程式方式執行,因此以下說明將以常駐程式設定為主。首先說明ClamAV相關組態檔,如下所述:  

● clamd.conf
clamd.conf可用來設定clamd常駐程式執行時的相關選項。基本上,僅須設定clamd執行時所須使用的的IP及埠(Port),或是Socket的相關資訊(Unix Domain Socket)即可。  

由於筆者測試時使用IP和埠運作方式並無法正常地運作,所以在此使用Unix Domain Socket的方式來運作,相關設定檔如下所示:

如果採用IP及埠的運作方式,則必須設定下列的資料,但在這裡並不採用此種方式,所以請註解下列的資訊:

 

 

● freshclam.conf
freshclam.conf是用來設定更新病毒碼的相關資訊。基本上,僅須設定更新病毒碼的目錄及更新病毒碼的日誌(Log)即可,如下所示:  

 

在設定完成後,即可開始使用ClamAV,但請先行更新病毒碼。ClamAV提供freshclam程式來更新病毒碼。建議將freshclam加入crontab中,每日定時地更新病毒碼資訊。在更新完成後,執行指令「clamd -c /usr/local/clamav/etc/clamd.conf」啟動clamd程式。可檢查「/var/run/clamav/clamd」檔案(clamd所使用的Socket檔案)是否存在。接下來可利用指令「clamdscan /tmp/」來掃描「/tmp」目錄下的檔案是否感染病毒。如果看到相關的掃描結果資訊,表示ClamAV已經成功安裝。(更多精彩文章詳見網管人第62期﹚


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!