安装Clamav+Qmail-scanner

鉴客 发布于 2011/10/07 19:44
阅读 983
收藏 0

根据xuki的 文档一路修改调试,总算到了反病毒这块:

Clamav 这块ok,没什么大问题!
Clamav

添加所需的组和用户

groupadd clamav
useradd -g clamav -s /bin/false clamav

安装软件

tar -xzvf clamav-0.80.tar.gz
cd clamav-0.80
./configure
make check
make install

测试Clamav

clamscan --recursive --log=/tmp/clamscan.log ./ //扫描当前目录,测试clamscn是否运行
cat /tmp/clamscan.log

更改/usr/local/etc/freshclam.conf文件,去掉下面选项前面的#:
vi /usr/local/etc/freshclam.conf
#Example \\前面加上#
UpdateLogFile /var/log/freshclam.log \\去掉前面的#
LogSyslog \\去掉前面的#

更改/usr/local/etc/clamav.conf文件,去掉下面选项前面的#:

vi /usr/local/etc/clam.conf
#Example \\前面加上#
LogFile /var/log/clamav/clamd.log \\去掉前面的#
LogFileMaxSize 2M \\去掉前面的#
LogTime \\去掉前面的#
PidFile /var/run/clamd.pid \\去掉前面的#
DataDirectory /var/lib/clamav \\去掉前面的#,并且修改路径为/usr/local/share/clamav
LogSyslog \\去掉前面的#
ScanMail \\去掉前面的#

升级clamscan病毒库

freshclam --verbose

把freshclam加入crontab 定时更新病毒库,自动扫描/home目录

crontab -e

0 1 * * * freshclam --quiet -l /var/log/freshclam.log

0 6 * * * /usr/local/bin/clamscan --recursive --infected --exclude /usr/local/share/clamav/viruses.db --exclude /usr/local/share/clamav/viruses.db2 --log=/var/log/clamscan.log /home

创建freshclam日志记录文件

mkdir -p /var/log/clamav
touch /var/log/clamav/clamd.log
chown clamav.clamav -R /var/log/clamav/

chmod 644 clamav.clamav -R /var/log/clamav/

touch /var/log/freshclam.log
chmod 644 /var/log/freshclam.log
chown clamav:clamav /var/log/freshclam.log

创建clamav启动脚本
vi /etc/rc.d/init.d/clamav

#!/bin/sh
#
# Startup / shutdown script for Clam Antivirus

case "$1" in
start)
/usr/local/sbin/clamd && echo -n 'Clamd started'
/usr/local/bin/freshclam -d -c 2 -l /var/log/freshclam.log
echo -n ' freshclam started'
;;

stop)
/usr/bin/killall clamd > /dev/null 2>&1 && echo -n 'Clamd stoped'
/usr/bin/killall freshclam > /dev/null 2>&1 && echo -n ' freshclam Stoped'
;;

*)
echo ""
echo "Usage: `basename $0` { start | stop }"
echo ""
exit 64
;;
esac

使其能够执行

chmod 755 /etc/rc.d/init.d/clamav

随开机起动
echo /etc/rc.d/init.d/clamav start >/etc/rc.d/rc.local
===============================================================
#
qmail-scanner&qms-analog

为了能够扫描邮件服务器中进出的邮件, 我们需要安装 qmail-scanner. 如果你之前没有安装perl-suidperl,我们还需要安装它

cd /home/pkg
rpm -Uvh perl-suidperl-5.8.0-88.3.i386.rpm

解开qmail-scanner...

tar zxvf qmail-scanner-1.22.tgz

解压qms-analog...

tar zxvf qms-analog-0.3.4.tar.gz

cd qms-analog-0.3.4

make all

下一步,我们拷贝所需要的qms-analog文件到qmail-scanner安装目录

cp qmail-scanner-1.22-st-qms-20040530.patch /home/pkg/qmail-scanner-1.22/
cp qms-config-script /home/pkg/qmail-scanner-1.22/

现在,让我们打上qms-analog补丁

cd /home/pkg/qmail-scanner-1.22
chmod 755 qms-config-script
patch -p1 < qmail-scanner-1.22-st-qms-20040530.patch

继续安装qmail-scanner,添加所需的组和用户

groupadd qscand
useradd -g qscand -s /bin/false qscand

我们通过qms-config-script脚本来安装qmail-scanner,编辑qms-config-script

vi qms-config-script

//这部分的修改可把我折腾的.老是编译出错,改了半天还是下面的配置过去了,不过就是没法建立/var/qmail/bin/qmail-scanner-queue.pl 只好cp了一个过来改权限.

修改下面红色部份以达到我们的需求:

#!/bin/sh

if [ "$1" != "install" ]; then
INSTALL=
else
INSTALL="--install"
fi

./configure --domain domain.com \
--qmail-queue-binary /var/qmail/bin/qmail-queue \
--admin postmaster \
--local-domains "domain1.com,domain2.com,......" \
--add-dscr-hdrs yes \
--dscr-hdrs-text "X-Antivirus-MYDOMAIN" \
--ignore-eol-check yes \
--sa-quarantine 0 \
--sa-delete 0 \
--sa-reject no \
--sa-subject ":SPAM:" \
--sa-alt yes \
--sa-debug no \
--notify admin \
--redundant yes \
--lang en_GB \
--debug yes \
--unzip yes \
--scanners clamscan,verbose_spamassassin \
"$INSTALL"

注 意: "--admin" 和 "--domain" 参数组成了帐号"user"@"domain name". 警告消息将通过qmail-scanner 发往这个邮件帐号, 所以必须确认这是一个管理级别的帐号. 另外,所有域的警告信息都会发给这个帐号, 所以一定要小心.

保存并退出。

现在我们测试qmail-scanner安装

./qms-config-script

在第一步时, 按y 允许qmail-scanner提前configure. 第二步时, 按y,建立 qmail-queue-scanner.pl 文件.

测试如果没有错误 ,就可以进行下一步安装

./qms-config-script install

看看/var/qmail/bin/qmail-scanner-queue.pl是否存在(不存在,cp了一个过来)

chown qscand:qscand /var/qmail/bin/qmail-scanner-queue.pl
chmod 4755 /var/qmail/bin/qmail-scanner-queue.pl

然后用一个普通用户登陆,执行/var/qmail/bin/qmail-scanner-queue.pl -z
//这里最郁闷,出错连连!死在这了
setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -z //如果没有Can't do setuid出现,安装OK

setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -r //查看qmailscan当前包含的特征
//错误提示
//perlscanner: reading from
// /var/spool/qmailscan/quarantine-attachments.db
// X-Qmail-Scanner-1.22:[] cannot open
// /var/spool/qmailscan/quarantine-attachments.db -

setuidgid qscand /var/qmail/bin/qmail-scanner-queue.pl -g //保存qmailscan定义特征的修改,使他生效。

//perlscanner: generate new DB file from
// /var/spool/qmailscan/quarantine-attachments.txt
// X-Qmail-Scanner-1.22:[] cannot read
// /var/spool/qmailscan/quarantine-attachments.txt - 没有那个文件或目录
//下面的测试程序就不用说了.

chown qscand:qscand /var/qmail/bin/qmail-scanner-queue
chmod 4755 /var/qmail/bin/qmail-scanner-queue
chmod 0755 /var/qmail/bin/qmail-scanner-queue.pl

chown -R qscand:qscand /var/spool/qmailscan

vi /var/qmail/supervise/qmail-smtpd/run

在你的qmail启动脚本加入红色部份

#!/bin/sh
QMAILDUID=`id -u vpopmail`
NOFILESGID=`id -g vpopmail`
PATH=$PATH:/usr/local/bin:/var/qmail/bin
QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue.pl" export QMAILQUEUE
MAXSMTPD=`cat /var/qmail/control/concurrencyincoming`
exec /usr/local/bin/softlimit -m 40000000 \
/usr/local/bin/tcpserver -v -H -R -l 0 \
-x /home/vpopmail/etc/tcp.smtp.cdb -c "$MAXSMTPD" \
-u "$QMAILDUID" -g "$NOFILESGID" 0 smtp \
/var/qmail/bin/qmail-smtpd \
/home/vpopmail/bin/vchkpw /bin/true 2>&1

后重新启动smtp服务

qmailctl stop
qmailctl start
qmailctl stat

这里有测试程序

cd /home/pkg/qmail-scanner-1.23/contrib/
chmod 755 test_installation.sh
./test_installation.sh -doit

这个脚本会设定的管理员邮件地址发送3个邮件,第一个邮件是一般的正常邮件,第二个邮件中会包含eicar.com测试病毒,第三个邮件同样包含eicar.com测试病毒,不过所附带的文件名不是eicar.com。
如果qmail-scanner安装正确,管理员就应该可以收到关于后面的两个邮件的警告邮件。
如果系统出错,可以查看/var/spool/qmailscan/qmail-queue.log日志文件。
qmail-scanner的特征过滤在/var/spool/qmailscan/quarantine-atachments.txt

主要的排错监测日志
/var/spool/qmailscan/quarantine.log
/var/spool/qmailscan/qmail-queue.log
/var/spool/qmailscan/qms-events.log
/var/log/clamav/clamd.log
/var/log/maillog

加载中
0
mark35
mark35
还用qmail啊,现在新上的基本都是postfix了
0
mark35
mark35

postfix+dovecot+amavisd+spassassin+clamav

用amavisd来调用后两个

返回顶部
顶部