CentOS 可透過 rpmforge 套件庫安裝, 但想要持續更新主程式的話, 用 tarball 編譯安裝會比較好處理, 所以我決定採用編譯安裝的方式進行。
下載最新穩定版 http://www.clamav.net/lang/en/download/sources/
編譯需求: pcre-devel, bzip2-devel, zlib-devel, openssl-devel, libxml2-devel, libcurl-devel, make, gcc
建立 clamav 帳號及群組
shell>#groupadd clamav
shell>#useradd -g clamav -M -s /sbin/nologin -c "ClamAV anti virus" clamav
解壓縮然後編譯
shell># tar xzvf clamav-x.y.z.tar.gz
shell># cd clamav-x.y.z
shell># ./configure --prefix=/usr/local/clamav --with-libbz2-prefix=/usr --with-libcurl=/usr --with-iconv --with-user=clamav --with-group=clamav --with-zlib=/usr --with-pcre --with-xml=/usr
shell># make && make install
※ 在 clamav 手冊裡面有提到 on-access scaning 的功能, 但不建議安裝在 production 環境, 且看 Dazuko 網站目前沒有維護人員, 所以不建議安裝。
※ clamav 帳號必須有權限掃描目標檔案
設定
freshclam
使用 freshclam 程式更新病毒碼, 更新病毒碼可以利用 crond 排程執行 freshclam 指令, 或者將 freshclam 設定為 daemon 執行, 以下是採用 daemon 方式。
新增 log 檔及 pid 目錄
shell># touch /var/log/freshclam.log
shell># chown clamav /var/log/freshclam.log; chmod 600 /var/log/freshclam.log
shell># mkdir /var/run/clamav; chown clamav /var/run/clamav
shell># mkdir /var/lib/clamav; chown clamav /var/lib/clamav
設定 freshclam.conf
shell># cp /usr/local/clamav/etc/freshclam.conf.sample /usr/local/clamav/etc/freshclam.conf
shell># vim /usr/local/clamav/etc/freshclam.conf
將第8行 Example 改為 #Example
將第13行 #DatabaseDirectory /var/lib/clamav 改為 DatabaseDirectory /var/lib/clamav
將第17行 #UpdateLogFile /var/log/freshclam.log 改為 UpdateLogFile /var/log/clamav/freshclam.log
將第26行 #LogFileMaxSize 1M 改為 LogFileMaxSize 10M
將第47行 #LogRotate yes 改為 LogRotate yes
將第51行 #PidFile /var/run/freshclam.pid 改為 PidFile /var/run/clamav/freshclam.pid
執行 freshclam daemon, 若成功的話可以在 /var/log/freshclam.log 看到啟動訊息
shell># /usr/local/clamav/bin/freshclam -d
設定開機啟動 freshclam daemon
echo "/usr/local/clamav/bin/freshclam -d" >> /etc/rc.local
若要馬上掃毒的話, 先執行一次freshclam
shell># /usr/local/clamav/bin/freshclam
停止 freshclam
shell># killall freshclam
若要採用 crond 更新, 新增以下參數到 crontab 即可, 建議 N 不要使用 10 的倍數
N * * * * /usr/local/clamav/bin/freshclam --quiet
clamscan
clamscan 是指令模式的 scanner, 由於沒有 on-access scan, 所以記得要排程掃毒, 常用的參數如下
-i 只回報受感染的檔案
-l FILE 儲存掃描報告
-r 遞迴掃描 (掃子目錄下的檔案)
--exclude-dir=REGEX 列外目錄
--move=DIRECTORY 將受感染的檔案移動到其他目錄下
Example:
shell># cd /; /usr/local/clamav/bin/clamscan -r -l report.txt --exclude-dir=^/{proc,dev,sys} -i
clamd
clamd 是 clam antivirus daemon, 可監聽 TCP 或 Unix Socket, 並使用 clamdscan 來執行掃毒, 在使用前請先設定 clamd.conf 設定檔。
※若沒有範例檔時, 可利用以下指令產生, NAME 可為 clamd.conf freshclam.conf clamav-milter.conf
Example:
shell># /usr/local/clamav/bin/clamconf --generate-config=clamd.conf > /usr/local/clamav/etc/clamd.conf
設定 clamd.conf
shell># vim /usr/local/clamav/conf/clamd.conf
將第8行 Example 改為 #Example
將第14行 #LogFile /var/log/clamd.log 改為 LogFile /var/log/clamd.log
將第35行 #LogTime yes 改為 LogTime yes
將第57行 #LogRotate yes 改為 LogRotate yes
將第66行 #PidFile /var/run/clamav/clamd.pid 改為 PidFile /var/run/clamav/clamd.pid
將第74行 #DatabaseDirectory /var/lib/clamav 改為 DatabaseDirectory /var/lib/clamav
將第85行 #LocalSocket /tmp/clamd.socket 改為 LocalSocket /tmp/clamd.socket
將第164行 #ExcludePath ^/proc/ 改為 ExcludePath ^/proc/
將第165行 #ExcludePath ^/sys/ 改為 ExcludePath ^/sys/
檢視 clamd.conf 結果
shell># /usr/local/clamav/bin/clamconf
執行 clamd
shell># /usr/local/clamav/sbin/clamd
停止 clamd
shell># killall clamd
設定開機啟動
shell># echo "/usr/local/clamav/sbin/clamd" >> /etc/rc.local
clamdscan
為 clamd client 程式, 必須在 clamd 啟動時使用, 其使用參數與 clamscan 雷同, 由於沒有 on-access scan, 所以一樣要排程掃毒
Example:
shell># /usr/local/clamav/bin/clamdscan --multiscan -i -l report.txt --move=/tmp/infected
問題紀錄
- 在 0.95.1 以前版本, /usr/local/clamav/share 下會有一堆以 clamav- 開頭的目錄, 這些是 freshclam 的暫存檔, 可以放心的刪除
參考文獻
沒有留言:
張貼留言