天天看點

CentOS6 主機安全加強政策 Clamav 防毒軟體(一)源碼安裝配置

簡單說明:

ClamAV是一個開源的用來探測木馬、病毒、惡意軟體和惡意線程的抗病毒引擎
支援探測的檔案類型和程式類型想當廣泛,一般的防毒功能足夠了
當然并不說有它就萬無一失了,之是以部署它,是因為檢查的時候是一個加分項
一般情況下Linux生産主機是不強制要求部署防毒軟體的
通過分析守護程序模式下的配置檔案,發現可用性蠻高,可以作為個人Linux防毒軟體使用
官網:https://www.clamav.net
下載下傳位址:https://www.clamav.net/downloads
官方文檔位址:https://www.clamav.net/documents/installing-clamav
建議下載下傳離線文檔 clamdoc.pdf
參照《 CentOS6實驗機模闆搭建部署》部署克隆兩台實驗主機,一台作為server,一台作為client
後續會實驗使用yum的方式安裝配置clamav,應該會在近期釋出該博文
           

源碼安裝:

對克隆的兩台實驗主機均部署安裝

需要的支援軟體包有:

zlib

zlib-devel

openssl

openssl-devel (即是libssl-devel)

gcc

gcc-c++

make

check

bzip2

bzip2-devel

libxml2

libxml2-devel

yum -y install \
zlib zlib-devel openssl openssl-devel \
gcc gcc-c++ make bzip2 bzip2-devel \
libxml2 libxml2-devel check

# 需要提前建立clamav使用者群組,如果使用非預設使用者編譯安裝
# 則 ./configure --with-user=XXX --with-group=XXX
groupadd clamav
useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav

# 編譯安裝
tar -xf clamav-.tar.gz
cd clamav-
./configure --prefix=/usr/local/clamav \
--enable-experimental
# 支援一些新特性
# 可以使用參數打開 milter 模式:--enable-milter
# 如果需要使用 milter 模式 ,需要加裝 sendmail-devel
# 所謂的 milter 模式,起源于sendmail,是一個功能插件
# 主要功能是提供API,讓第三方軟體通路郵件,分析修改郵件内容
# 該模式是專門為郵件伺服器提供的郵件清除模式
# 一般非郵件伺服器系統不必要使用該模式
# yum -y install sendmail-devel
# chkconfig sendmail off
make && make install

# 重新整理庫檔案
/sbin/ldconfig -v

# 配置指令路徑
echo 'CLAMAV_HOME=/usr/local/clamav'>>/etc/profile
echo 'export PATH=$CLAMAV_HOME/bin:$PATH'>>/etc/profile
source /etc/profile
           

Server 配置和測試:

1° 郵件告警部署:

依據《CentOS6u9 簡單郵件告警部署》部署指令郵件告警功能

2° 探測功能守護模式配置:

# 建立守護模式的運作目錄,并授權給clamav使用者
mkdir -pv /usr/local/clamav/run/{log,pid,tmp,data,socket}
chown clamav: /usr/local/clamav/run -R

cd /usr/local/clamav/etc
# clamd.conf 守護程序模式的配置檔案
# 所謂守護程序模式,就是單獨的一個守護程序
# 其他主機通過配置 clamd.conf 連接配接到某一個主機上的clamav守護程序
# 然後讓該守護程序對自己的某個或某些目錄進行掃描
# 根據模闆 clamd.conf.sample 配置 clamd.conf
# 相關參數參見模闆注釋,注釋想當簡單易懂
cat>clamd.conf<<EOF
LogFile /usr/local/clamav/run/log/clamd.log
LogFileMaxSize M
LogTime yes
LogVerbose yes
PidFile /usr/local/clamav/run/pid/clamd.pid
TemporaryDirectory /usr/local/clamav/run/tmp
DatabaseDirectory /usr/local/clamav/run/data
ExtendedDetectionInfo yes
LocalSocket /usr/local/clamav/run/socket/clamd.socket
# 綁定監聽端口至伺服器對外IP位址上
TCPAddr 
TCPSocket 
# 忽略掃描路徑
ExcludePath ^/proc/
ExcludePath ^/sys/
# 掃描路徑的最深層數
MaxDirectoryRecursion 
# 發現病毒時的操作配置 參數 %v 會被替換成病毒名
VirusEvent /bin/echo "%v" | /bin/mailx -s "ClamAV探測告警" [email protected]
EOF
           

記得更換IP位址和告警郵箱收件位址

3° 病毒庫更新配置:

配置檔案 freshclam.conf 是更新病毒庫時使用的配置資訊檔案

cat>freshclam.conf<<EOF
# 病毒庫目錄,必須和clamd.conf中的配置保持一緻
DatabaseDirectory /usr/local/clamav/run/data
UpdateLogFile /usr/local/clamav/run/log/freshclam.log
LogFileMaxSize M
LogTime yes
LogVerbose yes
PidFile /usr/local/clamav/run/pid/freshclam.pid
# 需要配置中國的鏡像網址,.cn即代表中國
DatabaseMirror db.cn.clamav.net
DatabaseMirror database.clamav.net
# 如果更新成功,是否讓clamd重新加載病毒庫
# 指定clamd.conf路徑即可
NotifyClamd /usr/local/clamav/etc/clamd.conf
# 更新成功後執行指令,比如郵件告警
OnUpdateExecute /bin/echo "更新成功" | /bin/mailx -s "ClamAV更新告警" [email protected].com
# 更新失敗後執行指令,比如郵件告警
OnErrorExecute /bin/echo "更新失敗" | /bin/mailx -s "ClamAV更新告警" [email protected].com
# 當版本過時的時候執行的指令,如郵件告警
# 可以使用 %v 參數,該參數會被替換成新的版本号
OnOutdatedExecute /bin/echo "版本過期,最新版本  %v" | /bin/mailx -s "ClamAV版本告警" [email protected].com
EOF
           

記得更換告警郵箱收件位址

4° 啟動:

clamconf
# 配置檢查,檢查目前的配置狀态
# 會檢查出目前狀态下缺少的配置步驟或者配置檔案

freshclam
# 更新病毒庫,初次安裝後必須首先執行,執行後才可進行病毒檢查
# 可以将該指令添加到crontab裡,就是使用自動任務的定時更新庫模式了
# 病毒庫的更新是增量的更新方式

freshclam -d
# 更新的守護模式功能
# 預設一天更新12次,增量的更新方式
# 也就是每隔兩小時就會收到更新成功或者失敗的郵件告警
# ps -ef|grep freshclam
# 看到程序

/usr/local/clamav/sbin/clamd
# 守護程序模式啟動
# 在啟動之前需要使用 freshclam 擷取和更新病毒庫
# 我們并沒有将sbin目錄加到PATH裡,是以要全路徑啟動
           
CentOS6 主機安全加強政策 Clamav 防毒軟體(一)源碼安裝配置

5° 清除測試:

源碼安裝包中準備了各種支援清除的木馬病毒檔案樣本

clamscan -r -l /tmp/scan.txt /tmp/clamav-
# 掃描clamav的安裝目錄進行測試
# 這是非守護模式的一次性單目錄掃描
# 掃描結果會記錄在 scan.txt 文本檔案中
# 部署後,掃描前,需要更新病毒庫
# 該測試不會使用 clamd.conf 配置檔案,也就不會告警出來了

clamdscan -l /tmp/scan.txt /tmp/clamav-
# 使用配置檔案中指定的守護程序伺服器掃描目錄
# 需要提前配置 clamd.conf 檔案
# 運作clamd的使用者要擁有被掃描的源檔案的通路權限

# 可以根據該測試,調整 clamd.conf 的配置
# 比如是否忽略pdf檔案和exe檔案的探測:
echo 'ScanPDF no'>>/usr/local/clamav/etc/clamd.conf
echo 'ScanPE no'>>/usr/local/clamav/etc/clamd.conf
rm -rf /tmp/scan.txt
ps -ef|grep clamd|grep -v grep|awk '{print $2}'|xargs kill -
/usr/local/clamav/sbin/clamd
clamdscan -l /tmp/scan.txt /tmp/clamav-
# 檢視結果,發現沒有了以.pdf檔案字尾和以.exe檔案字尾被探測出來
# 如果是XXX.exe.zip 還是會被探測出來的
           
CentOS6 主機安全加強政策 Clamav 防毒軟體(一)源碼安裝配置
CentOS6 主機安全加強政策 Clamav 防毒軟體(一)源碼安裝配置

掃描出來48個問題檔案,收到46封告警郵件,也就是說探測到一個就會告警

至于少了兩個告警,是因為一瞬間QQ郵箱收到從某個郵箱發送的大量郵件,該郵箱被QQ郵箱屏蔽掉了

這個屏蔽行為是暫時的,大約一天内會解封,可以更換另外的郵箱去測試

注意:修改配置檔案需要重新開機守護程式,源碼編譯安裝的守護程式沒有找到restart或者reload指令,隻能手動kill掉,重新開機

郵件标題的亂碼是因為Linux主機預設UTF8,需要做GBK的轉換才能正常顯示中文

6° 守護模式簡單管理:

echo 'PING' |nc . 
echo 'VERSION' |nc . 
echo 'RELOAD' |nc . 
echo 'SHUTDOWN' |nc . 
# 使用nc指令打開端口通訊,向守護程序傳遞相應的指令即可實作相應功能
           

Client 配置和測試:

cd /usr/local/clamav/etc
cat>clamd.conf<<EOF
TCPAddr 
TCPSocket 
EOF
# 配置client的守護模式配置檔案,指向server的IP和端口
# 再次使用守護程序模式清除測試
# 不需要建立和配置執行個體運作目錄以及配置freshclam配置檔案
# 會根據伺服器主機的 clamd.conf 檔案的配置
# 比如忽略某些類型的檔案探測,進行探測本機的目錄
cd /tmp/clamav-/test/
chattr +i clamz
rm -rf *
# 我們删掉客戶機上的測試目錄中的所有問題檔案,隻保留一個
clamdscan -l /tmp/scan.txt /tmp/clamav-
           
CentOS6 主機安全加強政策 Clamav 防毒軟體(一)源碼安裝配置
CentOS6 主機安全加強政策 Clamav 防毒軟體(一)源碼安裝配置

我們保留了客戶機上的一個測試檔案,然後配置 clamd.conf 檔案,使用server上的服務進行本地目錄探測

最終探測到該檔案,并發出了郵件告警,客戶機的 clamd.conf 檔案并沒有配置任何郵件告警

也沒有部署指令郵件告警功能,是以完全使用的server端的功能

解除安裝:

如果要更新ClamAV,需要解除安裝已經安裝的舊版本:

cd clamav-
./configure --prefix=/usr/local/clamav \
--enable-experimental
# 如果忘記編譯安裝時候的參數配置,可以使用clamconf進行檢測
# clamconf指令會檢測配置的參數、配置檔案缺失以及編譯安裝時候使用的參數
make uninstall
# 最後删掉相應的目錄和自主生成的配置檔案即可
           

[TOC]

繼續閱讀