針對UNIX及其相容系統所設計 開放源碼界防毒天王—ClamAV

2010-03-30
說是樹大招風也好,說是系統設計有漏洞存在也罷。不可否認的事實是,這個世界上針對Windows所設計的電腦病毒,數量多到無法計數。但這樣的統計數據,並不代表使用其他作業系統的使用者就不需要擔心病毒的問題。因為早已進入網路時代的今天,各種作業系統都可能面臨病毒的攻擊,差別只在於數量的多寡而已。

較不易面臨病毒問題的作業系統,並不表示可以完全不去擔心病毒處理的相關問題。以電子郵件伺服器為例,假設使用者接收的郵件中附有已被病毒感染的檔案,若可以在伺服器端先行偵測到病毒的存在,便可以事先處理,而不必讓使用者面臨病毒的直接攻擊。  

同樣的情況也可以應用到檔案伺服器上,如果在作業環境中大多數人使用的都是Windows系統,倘若能夠在檔案放置到檔案伺服器時先行掃描病毒,便可以避免許多不必要的問題。

 

 

目前許多公司行號為了系統穩定性,在伺服器的作業系統選擇上,會採用UNIX/Linux系統,再使用Samba進行檔案分享,或是以Sendmail、qmail等程式作為電子郵件伺服器使用。  

或許是Linux較少傳出病毒問題的關係,許多人常以為Linux系統並不需要防毒軟體,也沒有防毒軟體可以使用。

事實上,Linux系統不但有防毒軟體可以使用,而且在需要建置檔案伺服器或電子郵件伺服器的場合,在Linux系統上執行防毒軟體也是經常見到的作業模式。

ClamAV簡介

在UNIX/Linux系統中最著名的防毒軟體選擇是Clam AntiVirus(簡稱ClamAV)。  

ClamAV是一套專門針對UNIX及其相容系統所設計的防毒軟體,曾在Linux、Solaris、FreeBSD、Mac OS等作業系統平台進行過測試。

ClamAV採用開發原始碼方式釋出,並特別針對電子郵件掃描功能進行設計,可以讓電子郵件伺服器在接收到郵件時先行掃描郵件的內容,確定郵件的附檔沒有任何問題後,才會放行。雖然ClamAV支援數種不同的作業系統,但因為相容性的問題,部分功能可能無法在特定的作業系統中使用。

事實上,ClamAV並不是一個工具程式,而是一整套病毒掃描解決方案,所以運作時可以同時使用不同的工具程式,在不同的使用時機進行病毒掃描。這些工具程式主要包含一個以多執行緒運作的系統服務程式(daemon)、文字命令列的掃描工具,以及自動更新病毒資料庫的更新程式。這些工具程式彼此使用相同的防毒引擎,並以共享程式庫的方式運作。

 

▲ClamAV提供的是一整套的工具程式,例如ClamdTOP可以查看目前程式的運作狀況。

ClamAV的執行速度相當快,並且可以在檔案被存取時同時進行掃描。不過這樣的即時掃描方式目前僅支援Linux與FreeBSD,其他作業系統尚未支援。ClamAV目前可以偵測出來的病毒多達53萬種,另外像是蠕蟲、特洛伊木馬,甚至是微軟Office產品的巨集病毒也能夠加以處理。

如果檔案是以壓縮檔方式進行傳遞,ClamAV亦能進行掃描,讓使用者在不需要特地解開壓縮檔的情況下直接掃描壓縮檔的內容,以確保檔案內容的安全性。目前ClamAV支援的壓縮檔格式包括ZIP、RAR、ARJ、Tar、Gzip、Bzip2等等,而ZIP、RAR、ARJ的自解檔格式也能支援。

除此之外,微軟Windows作業系統特有的OLE2、CAB、CHM等檔案格式,ClamAV也都能夠直接掃描。由於ClamAV主要設計的使用對象為電子郵件伺服器,所以大多數的電子郵件檔案格式都能夠直接解讀並進行處理。

ClamAV也支援一些特定的檔案格式,例如HTML、RTF、PDF等等。只要病毒資料庫中可以進行判讀,隱藏在這些檔案中的惡意程式,都能被ClamAV偵測並進行必要處置。

以系統服務模式 執行ClamAV

ClamAV支援兩種執行模式,分別是背景執行的daemon模式,以及手動執行的命令列指令模式。daemon模式在經過適當設定後,可以讓使用者經由TCP通訊埠與其溝通。

如果使用者打算開發遠端掃毒程式,則可以參考clamd的使用文件,並針對想使用的指令撰寫程式。例如使用者程式連上主機與clamd溝通後,可以傳送事先定義好的指令要求clamd進行相對應的動作。以下介紹一些clamd所支援的重要命令:

 

clamd的命令可以使用n或z字元作為前置字元,例如nSCAN或zSCAN等方式。大多數的命令都可以不加入前置字元,但INSTREAM與FEILDS、STATS等參數則強制使用前置字元。前置字元可以讓clamd得知該如何判斷命令的區隔,例如n表示指令與指令間會使用換行字元作為區隔,z則表示使用空字元(Null Character)。如此一來,客戶端程式便能一次傳送數個命令至clamd程式,而不必擔心clamd一執行完命令便會立即關閉連線的特性,造成連續數個指令必須重複開啟、連接socket的情況產生。

如果要採用daemon模式執行ClamAV,則必須先行編輯clamd.conf設定檔,並依照個人使用需要修改此設定檔的內容。clamd.conf可能位於「/etc/clamd.conf」,也可能存放在「/etc/clamav/clamd.conf」,端看所使用的Linux發行版本而定。或者,可以直接執行clamd指令,該指令會告知使用者設定檔的所在路徑與檔名。

此設定檔的內容與格式可以參考clamd的線上說明文件(即「man clamd.conf」指令),在此文件中有相當詳細的介紹。

 

▲clamd在執行前須先進行設定檔的修改。

以命令列模式執行ClamAV

以文字命令列模式直接執行ClamAV,可以使用clamscan和clamdscan這兩個指令。

clamscan

如果打算以文字命令列模式直接執行ClamAV,則可以利用clamscan指令。clamscan一樣可以針對檔案或目錄進行病毒掃描,且其指令格式相當簡單,在clamscan命令後方加上所需要的參數,以及檔案或目錄名稱即可。

clamscan大多數的參數都只是簡單的開關型參數,用來決定clamscan的特定功能是否開啟。clamscan常用的參數有下列數個:

 

從clamscan所支援的參數數量來看,可以輕易發覺這套工具軟體雖然只是一個簡單的病毒掃描程式,輸出訊息也相當簡潔,但其功能相當強大,足以應付大多數的病毒或木馬掃描需求。

 

▲clamscan的掃描結果相當簡潔。

clamdscan

如果要在使用daemon模式的情況下執行病毒掃描,除了利用Socket介面傳送指令至clamavd之外,也可以透過clamdscan程式進行。clamdscan就是一套簡單的clamd客戶端程式,基本上可以取代文字介面中的clamscan指令,但使用上多了一些限制。例如,clamdscan一定要與clamd搭配使用,且大多數的clamdscan參數都是在clamd.conf設定檔中指定,而不是經由命令列參數傳遞。而TCP模式的掃描方式,也需要確認被掃描的檔案是否能被clamd存取。使用的限制比clamscan多,但其操作方法則簡便許多。

更新資料庫

ClamAV的病毒資料庫可以經由兩種模式進行更新。一種是互動式、由使用者自行從命令列輸入指令進行更新;另一種則是daemon模式,由ClamAV在背景執行的常駐程式自動進行更新。

「freshclam」即為ClamAV的病毒碼資料庫更新程式,讓使用者可以採用互動模式直接進行病毒碼的更新,以便維持ClamAV的病毒判斷能力,不至於只能處理舊有的病毒,而無法偵測到新的威脅。此工具的輸出訊息可以採用選項予以關閉,所以也相當適合以crontab的方式定期執行,不需要使用者介入即可完成更新。

 

▲ClamAV更新病毒碼資料庫也只需要一個指令即可解決。

應用程式介面

ClamAV本身雖然提供一些基本的工具程式,但因為不見得符合所有人的使用需求,所以也許有些習慣自行開發程式的使用者,會考慮自行研發使用者操作介面,利用ClamAV的掃描引擎加上自行研發的操作介面,以達到功能與操作便利性兼顧的要求。

ClamAV本身有提供一套應用程式開發介面(Application Interface,API),可以讓使用者研發自己想擁有的程式,並與ClamAV透過libclamav這套程式庫進行溝通。此程式庫已經事先定義一些開發程式時必要的變數或函式名稱,程式開發人員只須將clamav.h含括至自己的程式原始碼內即可。

圖形化病毒掃描工具—ClamTK

既然ClamAV主要是以文字介面的工具進行操作,很自然地也會讓不習慣採用命令列進行操作的使用者感到操作不易,不容易上手。或許還會有人質疑,是否UNIX/Linux作業系統中所有功能較為強大的程式都只能使用文字介面的模式進行操作?這個問題的答案自然是否定的,因為程式的開發者與使用者都是人,自然會有將操作方法簡潔化的想法出現。在ClamAV的使用場合之中,解決ClamAV操作不便的方法為ClamTK,這是一套涵蓋大多數ClamAV功能的圖形化使用者操作介面。

初次執行ClamAV時,系統會詢問一些基本問題以決定此軟體的作業模式,接下來進入ClamTK的主畫面後,即可針對檔案或目錄進行病毒掃描。掃描病毒時可能會須要搭配參數使用,例如是否掃描子目錄中的檔案,或是是否產生紀錄檔等等,都能在ClamTK的操作介面上進行設定。但由於ClamTK是為了操作簡單所開發的軟體,所以一些較少用的ClamAV使用參數在ClamTK中並未支援。

掃描結束後,ClamTK會告知此次掃描的結果為何,例如使用的引擎版本、病毒碼的版本、掃描過的檔案數量,以及如果有發現的話,共有多少個檔案被偵測到已被病毒感染。

ClamTK的操作上或許會顯得比較陽春,功能上似乎沒有直接執行ClamAV的文字列工具程式來得多元,但事實上這是ClamTK為了簡化操作過程所進行的瘦身工作,讓比較不熟悉ClamAV操作方法或作業模式的使用者,也能夠輕易上手,親身體驗一個沒有病毒干擾的世界。

 

▲ClamTK提供了一套圖形化的ClamAV操作介面。

結語

從世界第一個電腦病毒程式被研發出來,至今也已超過三十年的歷史。這麼多年的過程中,自然讓病毒的感染能力與破壞能力大幅上昇,甚至已經到了人人聞之色變的情況。甚至連本身不太會受到電腦病毒感染的UNIX/Linux作業系統,都擁有自己的防毒軟體,便可以想像得到這樣的情況有多嚴重。

只不過ClamAV主要是針對存放在Linux系統中但在其他作業系統執行或操作的檔案進行掃描,而非針對所謂的Linux版本病毒進行處置而已。其實,只要擁有正確的電腦使用觀念,加上定期定時地掃描檔案,病毒並沒有想像中的可怕。但前提是使用者所選用的病毒掃描軟體必須擁有一定的病毒偵測能力,否則即使是最簡單的電腦病毒,都可能造成電腦使用上的大災難。


追蹤我們Featrue us

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

我知道了!