windows系統中,即時掃描病毒,似乎是一件理所當然的事,當使用者在執行檔案存取動作時就會對該文件進行病毒掃描,這也許是封閉系統的優點.單一的作業系統核心可以很方便地運作任何功能,但是在開放的Linux系統世界裡就沒這麼幸運了。
 
那麼在Linux系統下是否有一個解決方案可以解決即時掃描病毒的要求了?答案是肯定的,也許有人會說,使用Linux系統下最富盛名的ClamAV不就好了嗎,的確,這種方式可以解決大部分問題,但這感覺還差那麼一點點,不夠即時,如果能在文件存取的時候就進行掃描,就更完美了。
 
所以本文將利用ClamAV配合DazukoFS核心模組,來構建一個能實現即時掃描病毒的Linux安全防禦系統,其所需要的套件如下所示。
作業系統:RHEL5.4 Kernel 2.6.18
即時監控文件存取核心模組:DazukoFS
    掃毒軟體:ClamAV
支援的核心:Kernel 2.6.36
 
一、DazukoFS簡介
dazukofs是一個可堆疊檔案系統,允許使用者空間的應用程式線上執行訪問控制。它最初的開發目的是用於支援網路病毒掃描器,但也適用於任何想要執行線上檔案訪問控制的應用程式。
注意:DazukoFS完全獨立於DazukoDazukoFS使用一個不同的使用者介面和驅動器,由於它們不共享程式碼或資源,所以可以同時使用DazukoDazukoFS。然而,DazukoFS目的是要作為一個線上檔案訪問控制的解決方案取代Dazuko
 
二、升級Linux核心
本文使用最新版本的DazukoFS 3.1.4,所支援的Linux核心為2.6.36,而本例項採用的Linux作業系統核心版本為2.6.18,我們要做一次核心升級。具體操作如下。
1下載2.6.36核心原碼

  1. wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.gz   
2、解壓核心

  1. tar -zxvf linux-2.6.36.tar.gz 
3、將解壓出核心放到/usr/src目錄下

  1. cp linux-2.6.36 /usr/src 
4、複製原核心配置檔案

  1. cp /boot/config-2.6.18-*** /usr/src/.config       
6、對核心引數做下微調

  1. make menuconfig   #這裡僅修改General setup -> [*] enable deprecated sysfs features to support old userspace tools,其它保持不變即可,如果有興趣的朋友可以深入研究。
7、編譯安裝

  1. make bzImage 
  2. make modules 
  3. make modules_install 
  4. make install 
8、修改引導順序

  1. vim /etc/grub.conf   #將default=0修改為default=1 
9、重啟系統

  1. reboot 
重啟作業系統後,uname -r檢視下核心版本是否為2.6.36
 
三、安裝DazukoFS
1、下載DazukoFSMD5

  1. wget http://dazuko.dnsalias.org/files/dazukofs-3.1.4.tar.gz 
  2. wget http://dazuko.dnsalias.org/files/dazukofs-3.1.4.tar.gz.md5 
2MD5檔案完整性驗證

  1. md5sum dazukofs-3.1.4.tar.gz > dazukofs-3.1.4.tar.gz.check.md5 
  2. diff dazukofs-3.1.4.tar.gz.check.md5 dazukofs-3.1.4.tar.gz..md5 
3、解壓安裝DazukoFS

  1. tar -zxvf dazukofs-3.1.4.tar.gz 
  2. cd dazukofs-3.1.4 
  3. make && make dazukofs_install 
4、載入DazukoFS

  1. modprobe dazukofs 
5檢測是否載入成功

  1. dmesg  |grep  dazukofs 
6建立測試目錄

  1. mkdir /tmp/dazukofs_test 
7掛載DazukoFS型檔案系統

  1. mount -t dazukofs /tmp/dazukofs_test /tmp/dazukofs_test 
8檢驗DazukoFS檔案系統掛載

  1. mount | grep dazukofs 
9解除安裝DazukoFS檔案系統

  1. umount /tmp/dazukofs_test 
 
四、系統啟動時掛載
如果想機器一開機就實現掛載,那麼可以通過配置/etc/fstab檔案來實現,在該檔案中新增類似如下條目。

  1. /usr   /usr   dazukofs   0    0 
  2. /opt   /opt   dazukofs   0    0 
 
五、安裝ClamAV
1、下載最新軟體與簽名

  1. wget http://downloads.sourceforge.net/clamav/clamav-0.97.7.tar.gz 
  2. wget http://downloads.sourceforge.net/clamav/clamav-0.97.7.tar.gz.sig 
2軟體完整性驗證
這裡簡單介紹下怎麼通過GPG做簽名驗證

  1. gpg –verify clamav-0.97.7.tar.gz.sig 
缺乏公鑰,驗證不成功,但是可以獲得得Key15497F03
在公網公鑰伺服器上下載公鑰

  1. gpg –keyserver subkeys.pgp.net –recv-key 15497F03 
再進行一次驗證

  1. gpg –verify clamav-0.97.7.tar.gz.sig 
提示“Good signature”,則說明簽名沒問題
3建立clamav組與使用者

  1. groupadd clamav 
  2. usradd -g clamav -s /bin/false -d /dev/null clamav 
4解壓並安裝

  1. make 
  2. make install 
5配置ClamAV

  1. vim /usr/local/clamav/etc/clamd.conf 
Example
註釋掉,否則不能正常工作
LogFile /tmp/clamd.log
去掉註釋,就用預設位置吧
TCPSocket 3310
去掉註釋,3310做為ClamAV
TCPAddr 127.0.0.1
僅允許本機可連線
User root
DazukoFS須使用devfs來傳遞相關資訊,所以必須使用root使用者來執行,否則無法正確獲得相關資訊
ClamukoScanOnAccess
啟動即時掃描功能,須先載入DazukoFS核心模組
ClamukoScannerCount
掃描時會啟動的執行緒,預設為3
ClamukoMaxFileSize
可掃描的單個檔案最大大小,預設為10M,即只掃描10M以下的檔案,設定為0時不限制大小
 

  1. vim /usr/local/clamav/etc/freshclam.conf 
Example
註釋掉,否則不能正常工作
6下載病毒庫
第一次執行ClamAV時要下載病毒庫檔案

  1. /usr/local/clamav/bin/freshclam 
注意:下載病毒庫檔案預設是放在/usr/local/clamav/share/clamav目錄下,如果沒有這個目錄需要新建並將目錄的屬主與屬組修改為clamav
7啟動ClamAV伺服器

  1. /usr/local/clamav/sbin/clamd 
可以檢查下3310這個埠是否啟來

  1. netstat -na|grep 3310 
檢視clamd日誌

  1. tail -f /tmp/clamd.log 
 
六、測試
1、測試clamav掃描功能

  1. /usr/local/clamav/bin/clamscan -r /usr              #迴歸掃描目錄/usr下所有檔案 
  2. /usr/local/clamav/bin/clamscan -r -i /usr            #僅顯示被被感染的檔案 
  3. /usr/local/clamav/bin/clamscan -r –remove /usr      #迴歸掃描,發現病毒立即刪除 
  4. /usr/local/clamav/bin/clamscan -r –bell /usr         #迴歸掃描,發現病毒響鈴 
2、測試即時訪問掃描功能
下載測試病毒放在/home目錄下

  1. wget https://secure.eicar.org/eicar.com.txt 
DazukoFS檔案系統掛載/home目錄

  1. mount -t dazukofs /home /home 
試著編輯eicar.com.txt會發提示“Permission Denied”拒絕編輯,檢視日誌
tail -f /tmp/clamd.log會發現“Clamuko: /home/eicar.com.txt: Eicar-Test-Signature FOUND
說明即時檢測到了病毒。
 
七、已經發現的問題
1、dazukofs不支援對記憶體對映檔案的寫操作,但是支援讀操作;
2、不要對根檔案系統使用DazukoFS,也不要對偽檔案系統(/proc/dev/sys)使用Dazukofs