« PHP Image Functions 應用實例分享 | 首頁 | JavaScript example - drag and drop »

2005年04月25日

Samba-vscan 安裝實錄

“檔案共享”是一般中小企業最常見的伺服器服務之一, 而一套搭配 Windows Server 運作的伺服器端 (Server-based) 防毒軟體動輒數萬元以上, 難道沒有更經濟的選擇嗎?

Linux 的 Samba 除了可以提供 Windows 作業系統的 File Sharing, 還能當 WINS, Printer Server. 而 Samba-vscan 是 Samba 的外掛模組, 它提供了 Samba 環境的 Server-based 掃毒功能, 能在第一時間防止使用者將病毒檔案置入伺服器中. 以下是 Samba-vscan + ClamAV 的實際安裝過程:

安裝 Samba-vscan

範例環境: Fedora Core 2, 預設已安裝 samba 3.0.3 (binary installation) 和 clamav (source installation)

Step 1: 下載 Samba Source

確定目前安裝的 Samba 版本
#rpm -q samba
samba-3.0.3-5 → 目前安裝的 samba 版本為 3.0.3

至 Samba 官方網站下載對應的 Source
#wget http://us2.samba.org/samba/ftp/old-versions/samba-3.0.3.tar.gz

Samba Source (old versions) 官方下載網頁
Samba 官方網頁

Step 2: 下載 Samba-vscan

#wget http://www.openantivirus.org/snapshots/samba-vscan-0.3.5CVS-16-12-2003.tar.bz2

samba-vscan 官方下載網頁

Step 3: 安裝 Samba-vscan

#tar -zxf samba-3.0.3.tar.gz
#tar -jxf samba-vscan-0.3.5CVS-16-12-2003.tar.bz2
#cd samba-3.0.3
#./configure
#make headers
#cp -ra ../samba-vscan-0.3.5CVS-16-12-2003 ./examples/VFS
#cd ./examples/VFS/samba-vscan-0.3.5CVS-16-12-2003
#./configure
#make
#cp vscan-clamav.so /usr/lib/samba/vfs
#cp ./clamav/vscan-clamav.conf /etc/samba

Step 4: 修改相關設定

#vi /etc/samba/vscan-clamav.conf

目標: clamd socket name = /var/run/clamd
動作: 修改 clamd socket 路徑 (請參考 clamd.conf: LocalSocket /path/to/clamd)

目標: infected file action = quarantine
動作: 預設將感染病毒的檔案隔離到 /tmp, 若想直接刪除受感染的檔案, 將 = quarantine 改成 = delete 即可

#vi /usr/local/etc/clamd.conf

目標: #ScanRAR
動作: 把 # 拿掉, 變成 ScanRAR

#vi /etc/samba/smb.conf

目標: [global] 區
動作: 加入以下二列

vfs object = vscan-clamav
vscan-clamav:config-file = /etc/samba/vscan-clamav.conf

Step 5: 啟動相關 daemon

(1)於 /etc/cron.hourly 建立一可執行的 bash script file, 內容為:

#!/bin/sh

/usr/local/bin/freshclam > /dev/null 2>&1


每小時系統將自動更新 clamav virus database

(2)#/usr/local/sbin/clamd (啟動 clamav daemon)

(3)#service smb restart (重新啟動 samba daemon)


測試 samba-vscan 是否正常運作

於 Windows 環境中下載病毒檔案, 然後將病毒檔案放進 samba 資料夾,
如果該檔案無法置入 samba 資料夾中, 即表示 samba-vscan 已正常運作.

Windows 出現警告訊息 (Windows 2000/XP 需啟動 Messenger 服務; Windows 95/98/ME 需執行 WinPopup 才能收到訊息):

/var/log/messages 記錄:

Apr 25 16:13:45 linuxhostname smbd_vscan-clamav[18752]: ALERT - Scan result: '/path/to/eicar_com.zip' infected with virus 'Eicar-Test-Signature', client: 'local.area.network.ip'
Apr 25 16:13:45 linuxhostname smbd_vscan-clamav[18752]: INFO: file '/path/to/eicar_com.zip' removed successfully


相關網頁

Posted by Jamyy at 2005年04月25日 17:20

Trackback Pings

TrackBack URL for this entry:
http://cha.homeip.net/cgi-bin/mt/mt-tb.cgi/73

Comments

您好:
小弟根據您的文件實做,不過出現了一些問題,想請教您,小弟一開始都做得很順,但要做到make vscan出現以下錯誤:
/usr/local/src/tool/samba-3.0.25b/source/include/proto.h:7547: error: expected ')' before '*' token
/usr/local/src/tool/samba-3.0.25b/source/include/proto.h:8211: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
/usr/local/src/tool/samba-3.0.25b/source/include/proto.h:8806: error: expected ')' before '*' token
/usr/local/src/tool/samba-3.0.25b/source/include/proto.h:8807: error: expected ';', ',' or ')' before 'void'
/usr/local/src/tool/samba-3.0.25b/source/include/proto.h:8838: error: expected ')' before '*' token
make: *** [global/vscan-functions.po] Error 1
想請教這個錯誤訊息是表示什麼?小弟試了很久,但是都一樣,小弟的samba是3.0.25b與samba-vscan-0.3.6b,其餘步驟都是照您的文件去做的.

Posted by: jay at 2008年02月11日 00:05

Jay 您好,

我在這個網頁:
http://www.openantivirus.org/projects.php

找到了這一段話:
The latest release is 0.3.6b. If you're using Samba 3.0.25 (or later), please give 0.3.6c Beta5 a try.

所以您可以試著下載 0.3.6c Beta5 看能不能順利安裝:
http://www.openantivirus.org/download/samba-vscan-0.3.6c-beta5.tar.gz

此外, 我這篇的內容已經不符合 samba v3.0.25、samba-vscan 0.3.6c 的安裝步驟, 請參考 samba-vscan 裡面的 INSTALL 文件, 謝謝

Posted by: Jamyy at 2008年02月13日 15:49

您好:
小弟根據您的建議用samba-vscan-0.3.6c-beta5.tar.gz編譯,出現以下的訊息,
[root@p3server samba-vscan-0.3.6c-beta5]# make
Compiling global/vscan-message.c with -fPIC
global/vscan-message.c: In function ‘vscan_send_warning_message’:
global/vscan-message.c:84: error: request for member ‘v’ in something not a structure or union
make: *** [global/vscan-message.po] Error 1
是因為samba版本部不合嗎?還是可以忽略此訊息?

Posted by: jay at 2008年02月21日 00:12

Jay 您好,

您可以編輯 vscan-message.c, 到第 84 行附近看看, 就會發現這樣一串訊息:
If you really need to compile it for 3.0.25[a|b], please comment the line above and uncomment the line below

依指示把訊息的上一行程式碼用 /* */ 註解符號包起來, 再將下面那行的註解符號拿掉, make 的時候就不會再出現那樣的錯誤了.

如果您不曉得如何修改, 可以從這裡下載:
ftp://cha.homeip.net/vscan-message.c

Posted by: Jamyy at 2008年02月21日 00:40

您好:
謝謝您,我現在已經安裝好了,不過有幾個問題請教:
1.如果掃到病毒,我是將他丟到暫存目錄下,只是改變檔名嗎?還是會將檔案移除?
2.我將messager服務開啟怎麼都沒收到通知訊息?
3.謝謝您不厭其煩的教導,讓我對linux越來越敬佩了!!

Posted by: jay at 2008年02月25日 02:39

jay 您好,

1. 可在 vscan-clamav.conf 設定 infected file action, delete 為直接刪除, quarantine 備份檔案 (預設備份成 /tmp/vir-亂數檔名), 或 nothing 什麼事都不做

2. 除了啟用 messenger service 之外, xp 還要將防火牆的 "例外": 檔案及印表機共用 打勾才能收到訊息. 但就算可以用 net send 通訊息了, 還是收不到 vscan 的訊息. 巧合的是, 之前我們修改的 vscan-message.c 剛好就是傳訊息的程式, 不曉得是 bug 還是怎樣的哩 ^^'

3. 不用客氣 :)

Posted by: Jamyy at 2008年02月26日 13:00

感謝您...請問除此之外您在使用這方面還有其他問題嗎?我昨天想將檔案抓到桌面,但是抓不過來會出現錯誤,說我沒有使用檔案的權限,但我的權限是對的,我就將vscan註解就可以了,請問您有遇過類似情況嗎?

Posted by: jay at 2008年02月26日 13:32