| |||||
2004/10/25 修改 | |||||
電子郵件已經成為電腦病毒散播的一個很重要的途徑,如果我們可以在使用者打開信箱之前或是信件還沒送出主機之前就攔阻下來,相信可以減輕很多系統管理的負擔。 可以完成這項工作的方案有很多,像是:
如果只是想防毒,沒有防堵垃圾信的需求,利用 ClamAV ( Clam AntiVirus ) 套件所提供的工具即可達到我們的目標。 ClamAV ( http://www.clamav.net ) 是一個 GPL 的防毒套件,內建支援掃瞄壓縮檔 (RAR 2.0, Zip, Gzip, Bzip2), 1 安裝 ClamAV一般我們安裝 FreeBSD 的軟體,用 packages 當然是最快的,不過,因為網路上 ClamAV 的 packages 預設是沒有將我們要用的 clamav-milter 功能編譯進去,所以,我們只好自己用 prots 來安裝。 1-1 安裝相關的 packagesclamav 會使用到底下的 packages 來搭配掃瞄,主要都是解壓縮的工具:
我們可以利用 pkg_add 來安裝,執行下面的指令:
說明:
1-2 安裝 clamav ports1-2-1 更新 ports tree編譯 clamav ports 時,ports tree 至少要有以下的東西: /usr/ports/ 當然,如果已經利用 cvsup 更新過整個 ports tree ( 更新的部份請參考 ports 的使用 ),就不用擔心少了什麼東西,不然,可以執行下面的指令手動建立及抓取 (本例利用 ncftpget,請自行使用慣用的工具):
更新完檔案,我們就可以準備進行編譯了。 1-2-2 進行編譯我們先切換到 clamav 的目錄,下個 make 即可進入編譯的程序,執行:
接著,畫面會出現類似下面的畫面:
因為我們需要使用 clamav-milter ,所以先按一下空白鍵或是 Enter 鍵,讓 MILTER 前面變成 [X],然後按 Tab 鍵,讓游標移到 OK 鈕上,再按 Enter 確認,剩下的就交給 FreeBSD 來編譯囉! 如果嫌麻煩,也可以用下面這行代替前面的步驟:
差別在於:以選單的方式勾選 MILTER ,設定值會儲存在 /var/db/ports/clamav 中,下次重新編譯時會變成預設值,而用 WITH_MILTER=yes BATCH=yes 的方式則不儲存。這個對於只有一個選項的 clamav 來說沒什麼差別,但是,像 mod_php4 的選項有十來項,重選應該是很累的事吧! 1-2-3 進行安裝如果編譯的程序沒有被中斷,我們就可以執行下面的指令,將編譯好的 clamav 安裝在系統中:
安裝完後,/usr/local/etc/rc.d 中會多了三個啟動服務的 scripts:
2 修改設定和本套件有關的設定檔有三個:
2-1 修改 clamav.conf/usr/local/etc/clamav.conf 是給 clamd 這個 daemon 用的設定檔,要研究詳細的設定內容可以 man clamav.conf ,底下我們先針對要配合 clamav-milter 的部份來修改,執行:
開啟檔案以後先檢查 /usr/local/etc/clamav.conf 中,下面這三行,把這三行前面的註解符號─井字號去掉:
這樣 clamav-milter 才有辦法將掃毒的工作交給 clamd 來完成,修改完了就按 Esc Enter Enter 鍵儲存設定。
2-2 修改 /etc/rc.confClamAV 的三個服務啟動檔 clamav-clamd.sh , clamav-milter.sh , clamav-freshclam.sh 都使用了 rc_subr,我們必須在 /etc/rc.conf 加入要啟動服務的設定,才可以利用前述三個 *.sh 來啟動 clamav 的相關程式,所以我們先要完成底下的修改步驟:
檔案開啟以後,在最後面放入下面幾行:
編輯完畢就按 Esc Enter Enter 鍵,將設定值儲存起來。 2-3 修改 sendmail 的設定clamav-milter 是配合 sendmail 使用的,所以我們要修改 sendmail.cf ,讓 clamav-milter 成為 sendmail 設定檔案中的 NPUT_MAIL_FILTER。 2-3-1 修改 freebsd.mc當我們要修改 sendmail.cf 時,並不是真的打開這個檔案加內容,直接修改它實在是太複雜了,我們利用 /etc/mail/freebsd.mc 可以避免很多出錯的機會:
檔案開啟後,在最下面加入兩行:
注意: ` 的符號別打成單引號 ' 了,最後面別多按空白鍵 編輯好了就按 Esc Enter Enter 鍵儲存設定。 2-3-2 重新產生 sendmail.cfFreeBSD 提供一個滿好用的機置可以輕鬆地產生 sendmail 所需的各項設定檔,只要切換到 /etc/mail 下即可利用 make xxx 完成設定檔資料庫的轉換。 假設主機的名稱為 mail.test.tp.edu.tw,在 /etc/mail 中可能會有 mail.test.tp.edu.tw.* 的設定檔,我們先清除原有的設定後再重新產生:
清除了原有的設定檔後,我們執行下面的指令產生新的設定:
都完成後就可以準備啟動服務來測試了!
3 啟動掃毒服務如果確認設定檔都改好了,我們就可以執行以下指令來啟動 ClamAV 套件的服務:
要確認各個程序是否在執行了,可以用 ps 查詢一下:
應該要有類似下面三個:
最後再重新啟動 sendmail ,讓它讀取修改過的 sendmail.cf
可以用 ps 確認一下 sendmail 是否啟動:
應該要有類似下面的訊息:
如果 sendmail 無法啟動就觀察一下 /var/log/maillog 中的訊息為何,多半是前面修改 sendmail 設定檔的步驟有問題了。 都沒問題就可以利用郵件軟體寄信測試囉! 小技巧:
4 FAQQ:當 clamav 掃瞄到信件中有病毒時,預設的處理動作拒絕 (rejects) 該信, sendmail 中的代碼為 550 或 554,想改為直接扔掉有毒的信怎麼辦? A:修改 clamav-milter 的啟動參數即可。
在裡面加入底下這行:
修改以後重新啟動 clamav-milter ,執行 :
Q:當 clamav 掃瞄到有毒的信件時,root (postmaster) 就收到警示的信件,一段時間下來,累積了不少, A:修改參數的方法類似前一個問題,只要把 clamav-milter 啟動參數中的 --postmaster-only 去掉,換成 --quiet 即可。 clamav-milter 常用的啟動參數:
詳細的說明可以 man clamav-milter。 Q:想要修改病毒資料庫的更新頻率及要透過 Proxy 來更新怎麼辦? A:更新 ClamAV 病毒資料庫的工作是由 freshclam 來完成的,它的相關設定是放在 /usr/local/etc/freshclam.conf 中,修改裡面的:Checks , HTTPProxyServer , HTTPProxyPort 三個參數值即可。 例如:
上面三行代表每天檢查病毒碼 12 次 (也就是每二小時一次),使用 proxy.tp.edu.tw:3128 來當 proxy。 如果 proxy server 需要輸入帳號、密碼認證,可以再多加兩個參數:HTTPProxyUsername,HTTPProxyPassword 後面分別接帳號和密碼即可。 Q:為 clamav-milter 重建 sendmail.cf 後,啟動 sendmail 時出現下面的錯誤訊息:
A:sendmail.cf 格式很嚴謹,多個空白,少按個 Tab 鍵都可能造成無法正常啟動 sendmail,先查一下記錄檔 /var/log/maillog ,看看有沒有更進一步的訊息,例如:
檢查一下前面曾經修改過的 freebsd.mc ,看看每行的最後面是否加了不該加的空白。 |
from: http://mail.lsps.tp.edu.tw/~gsyan/freebsd2001/mail-clamav.htm