【IT168 专稿】 很少的病毒能够在linux的运行和繁衍。而且,由于目前客户端计算机都使用的是Windows,所以病毒制造者们更愿意去写Windows下的病毒。但是还有很多的原因能致使您使用一些病毒扫描程序的,比如:
"扫描在您计算机上的Windows设备
"扫描在本地 网络 中的Windows计算机
"扫描您即将要传送给别人的文件
"扫描您将要发送给别人的电子邮件
Clamav是一个UNIX下开源(GPL)杀毒 软件 包,这个软件最主要目的是集成在邮件 服务器 里, 查杀邮件附件中的病毒。软件中包含主要一个灵活可升级的多线程后台程序,一个命令行扫描程序,一个自动升级程序,软件运行基于随Clam Anti使用编辑器修改rus软件包同时发布的共享库文件。你也可以在你的软件中使用这些共享库文件,最重要的是,病毒库升级的很快很及时。 主要特征:
命令行扫描程序
高效,多线程后台运行
支持sendmail的milter接口
支持数字签名的病毒库升级程序
支持病毒扫描C语言库
支持按访问扫描(Linux FreeBSD Solaris)
病毒库每天多次升级(可以查杀的总病毒数量见主页)
内置支持RAR(2.0),Zip,Gzip,Bzip2,Tar,MS OLE2,MS Cabinet files,MS CHM(压缩的HTML),MS SZDD压缩格式
内置支持mbox,Maildir和原始邮件文件格式
内置支持UPX,FSG,和Petite压缩的PE可执行文件
一、Clamav 基本安装
1 首先检查Zlib库
Clamav需要zlib库 1.22 以上,zlib是个支持gzip文件格式的函数库,它使得gz文件的存取就犹如开档关档一样地容易,您可以很容易地为您的程序加入gz档的支持。使用#rpm -qa|grep zlib 命令查看。
2 建立用户和用户组的命令:
# groupadd clamav
# useradd -g clamav -s /bin/false -c "Clam Antivirus" clamav
3 下载安装软件
#wget http://www.hacker-soft.net/tools/Assessment/clamav-0.91.2.tar.gz
# tar -zxvf clamav-0.91.2.tar.gz
# cd clamav-0.91.2
# ./configure --sysconfdir=/etc
# make
# su -c "make install"
4 修改配置文件
使用编辑器修改 /etc/clamd.conf
在 Example 前面加 #
使用编辑器修改 /etc/freshclam.conf
在 Example 前面加 #
把 Checks 从 "24" 改为 "4"
这样是每4小时更新一次病毒码。
在 DatabaseMirror database.clamav.net 行下面在加入几个地址,更多镜像地址请参考文档 clamav.pdf
DatabaseMirror clamav.inet6.fr
DatabaseMirror clamav.netopia.pt
DatabaseMirror clamav.sonic.net
5 设置clamav随 服务器 开机自动启动
使用编辑器修改 /etc/rc.d/rc.local
加入下面二行:
/usr/local/bin/freshclam
/usr/local/bin/clamd
6 测试
clamdscan -文件及目录的扫毒
# clamdscan -v /usr/share/doc/clamav*
# clamdscan -v /home/<user>
说明:ClamAV只会去扫描对于ClamAV可以读取的文件。如果您想扫描所有文件,在命令前加上 sudo参数。
其他具体参数详解:
-n 在扫描邮件时不加入 clamav的版本号
-N 当用户发送带病毒的邮件时不警告他,而是立刻丢弃。但收件人会得到提示。
-q 安静方式, 不发出任何信息 (包括在日志中也不做过多提示,遇到病毒时也只有 Milter : discard 一句话)
-o 对从系统向外发的邮件做过滤
-l 对发到系统的邮件做过滤
这里是一些clamav些例子
"扫描所有用户的主目录就使用 clamscan -r /home
"扫描您计算机上的所有文件并且显示所有的文件的扫描结果,就使用 clamscan -r /
"扫描您计算机上的所有文件并且显示有问题的文件的扫描结果, 就使用 clamscan -r -bell -i /
使用clamav删除病毒文件
在扫描的时候,您可以添加'--remove'参数,图 1是工作界面。
图 1使用clamav删除病毒文件
7升级clamav的病毒库
自动定时更新病毒码,防毒程序最重要的工作之一就是更新病毒码,否则防毒软件功能无法防止最新的病毒。根据一般的建议企业最好每四个小时至六个小时更新一次,
以一般命令启动 freshclam -l /var/log/clamav/freshclam.log
以守护进程的方式(以下设定每天更新6次)
freshclam -d -c 6 -l /var/log/clamav.freshclam.log 6
8 定时运行clamav
at 命令可计划在特定的时间执行某项任务,且仅执行一次。可采用两种方法使用 at 命令。第一个是直接键入 at 和希望命令运行的时间(可以选择指定日期)。例如:
$ at 17:20
echo It's 17:20!
job 1 at Tue Apr 11 17:20:00 2006
输入了 at 命令后,它将等待您输入要在指定时间运行的命令。可以输入任意多的命令,这些命令将作为 Shellscript 执行。要终止输入,请使用 end-of-file 命令(通常为 Control-D)。 您所键入的命令将在调用 at 命令的环境副本中执行。这意味着,将记录您的活动 PATH、库和其他环境设置,并用于执行您生成的脚本。通常会在命令完成时将结果通过电子邮件发送给您。指定时间时,可以使用标准时间格式(如前面的示例 中所示),也可以使用其他各种缩写技术。如果指定了时间,则将使用该时间的下一个匹配项。例如,如果当前时间是 17:00,而您指定的时间是 17:20,命令将在 20 分钟后执行。如果指定 09:00,则命令将在第二天的上午 9 点执行。
通常可以使用以下特殊的替换项:
midnight--12:00 a.m./00:00
noon--12:00 p.m.
now--立即执行
还可以使用 today 和 tomorrow。一些环境(BSD 和 Linux)还可能支持通过加上表示分、时、天、周、月和年的数值来增加指定值的时间的选项。例如,可以使用以下命令来指定某个作业在一周后的当前时间运行:
$ at now + 1 week
如果您希望重新计划作业在上次执行之后的一段时间执行,则可以使用这种指定方式。例如,您可能在运行一个运行时间长达数小时的报告,但又希望在一周后再次运行次报告。
本文使用后者运行'at'命令来使clamscan和freshclam定时运行,比如
at 6:30 tomorrow
at>clamscan -i /home/user > mail goodcjh@example.com
at> <CTRL-D>
job 3 at 2008-04-28 03:30
二 、邮件 服务器 防毒设置
这里以postfix邮件 服务器 为例。安装 Postfix, 并将 Postfix 设定成 邮件服务器 网关 。
yum install postfix
service sendmail stop
chkconfig sendmail off
使用编辑器修改 /etc/postfix/main.cf
myhostname = mail.domain.com
mydomain = domain.com
myorigin = $mydomain
inet_interfaces = all
mydestination = $mydomain, localhost.$mydomain, localhost
local_recipient_maps = (空白)
networks_style = host
relay_domains = domain.com
transport_maps = hash:/etc/postfix/transport
append_at_myorigin = no
使用编辑器修改 /etc/postfix/transport
domain.com smtp:[192.168.1.1]
postmap /etc/postfix/transport
service postfix start
使用编辑器修改 /etc/ld.so.conf,加入几行
/usr/local/lib
ldconfig
MailScanner简介和工作流程
MailScanner这是扫描程序可以和你的邮件服务器沟通,能对邮件的内容,如主旨,寄件者,附件,本文做处理,有两个选择 MailScanner,AMaVis,但是MailScanner有webmin的模块,及mrtg的统计图表,因此可以简化管理而安装也比软容易,但 其实两个程序都是以perl为程序主题语言,因此有一些模块需要安装, MailScanner已经在套件中内含了perl模块。
MailScanner工作流程如下:
在执行MailScanner之后, MailScanner重复执行的工作如下:
1.收集由Incoming queue来的邮件
2.检查邮件是否可以spam,并且如果需要标记它
3.选择性的移除简单的纯文字的邮件到 outgoing queue并触发使其被传送
4.解压缩出含有MIME结构的所有的邮件及附件
5.扫描病毒
6.扫描文件名合乎使用者设定的规则
7.扫描所有攻击性的e-mail client 程序,如Outlook 或 Eudora
8.移除被感染或危检的附件到一个隔离区(quarantine area),如果你有设定
9.取代感染或危险的附件使用你指定的文字内容来解释,准备送给使用者
10.加入一个短的讯息在原始文件的前面
11.移动 安全 及不受感染的邮件到outgoing queue
12.重建修改的邮件到outgoing queue
13.删除在incoming queue中的邮件
14.触发传送outgoing queue中的邮件
15.通知本地的postmaster, 和邮件传送者,一个感染或是危险的邮件发现
16.如果可能,不受感染的原始附件送它们到原始收件人,并使用一个通知说明发生了什么事 图 2 MailScanner是工作流程图。
图 2 MailScanner是工作流程图。
下载安装MailScanner
#wget http://www.mailscanner.info/files/4/rpm/MailScanner-4.70.7-1.rpm.tar.gz
tar zxf MailScanner-4.70.7-1.rpm.tar.gz
cd MailScanner-4.70.7-1
./install.sh
使用编辑器修改 /etc/MailScanner/MailScanner.conf
Run As User = postfix
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
Virus Scanning = yes
Virus Scanners = clamav
Use SpamAssassin = yes
SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin
Sign Clean Message = no (不在信尾加注 "This message has been scanned...")
mkdir /var/spool/MailScanner/spamassassin
chown postfix:postfix /var/spool/MailScanner/*
使用编辑器修改 /etc/postfix/main.cf
header_checks = regexp:/etc/postfix/header_checks
使用编辑器修改 /etc/postfix/header_checks
/^Received:/ HOLD
service postfix stop
service MailScanner start
设置webmail 的防毒功能,这里采用OpenWebmail来作为外挂的WEBMAIL邮件服务器,它与postfix和Sendmail无缝连接,支持中文语言包,具有自动回信、自动删除垃圾邮件等功能。
#编辑 openwebmail.conf 修改为:
enable_viruscheck yes
viruscheck_pipe /usr/local/bin/clamdscan --mbox --disable-summary --stdout -
viruscheck_source_allowed all
三、设置Web 服务器 防毒设置
mod_clamav 是一个Apache 服务器 的一个防毒插件,它可以调用clavam的病毒库。
mod_clamav下载安装方法:
#wget http://software.othello.ch/mod_clamav/mod_clamav-0.22.tar.gz
#gunzip mod_clamav-0.22.tar.gz;tar mod_clamav-0.22.tar ;cd mod_clamav-0.22
# ./configure --with-apache=/usr/local/apache2
# make
# make install
四、设置FTP服务器防毒设置
mod_clamav同样支持ProFTPD 服务器,安装配置如下:
wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.1.tar.gz
tar xzvf proftpd-1.3.1.tar.gz
cp mod_clamav-0.7/mod_clamav.* proftpd-1.3.1/contrib
打一个补丁:
# cd proftpd-1.3.1
#patch -p1 < ../mod_clamav-0.7/proftpd.patch
编译文件
#./configure --with-modules=mod_clamav
#make
#make install
使用编辑器修改proftpd 配置文件:/usr/local/etc/proftpd.conf
PassivePorts 60000 65000
IdentLookups off
UseReverseDNS off
AllowStoreRestart on
AuthPAM off
RequireValidShell off
DefaultRoot ~/ftp
User nobody
Group nobody
#启用防毒功能
<IfModule mod_clamav.c>
ClamAV on
ClamLocalSocket /tmp/clamd.socket
</IfModule>
#启动 clamd, clamd 的执行身份必须是 root权限 (mod_clamav 0.7 需要 clamd)
clamd
#启动 proftpd服务器
proftpd
五、配置Samab文件 服务器 防毒功能
安装samba-3.0.21c.tar.gz
#wget samba-3.0.21c.tar.gz
# cd .. /usr/src/
#tar zxvf samba-3.0.21c.tar.gz
#tar jxvf samba3-vscan-0.4.0-snapshot1.tar
# mv samba3-vscan-0.4.0-snapshot /usr/src/samba-3.0.21rc2/examples/VFS
# cd samba-3.0.21c/source/
# ./configure && make headers
# make && make install samba被默认安装到/usr/local/samba
2 安装编译samba-vscan
# cd .. /usr/src/samba-3.0.21rc2/examples/VFS/samba3-vscan-0.4.0-snapshot
# ./configure && make
3 .修改配置文件
复制vscan的配置文件, VSCAN可以结合多种杀毒 软件 起用,如symantec, Kaspersky, trend等这里用的是clamav,因此,只需要把clamav中的vscan-clamav.conf复制到/etc/就去就行了。
# cd /share1/src/samba-3.0.21c/examples/VFS/samba3-vscan-0.4.0-snapshot1
# cp /clamav lamav/vscan-clamav.conf /etc/
修改一些配置,使其与 clamd.conf的一些设置匹配
使用编辑器修改 /etc/vscan-clamav.conf
在Example 前面加上#号注释掉此行把clamd socket name ,设为
clamd socket name = /tmp/clamd.socket (相同clamd.conf中的 LocalSocket /tmp/clamd.socket)
把infected file action = delete
修改infected file action = nothing
则表示对感染的文件不处理,是infected file action = delete 则删除感染的文件。
5.修改 smb.conf
在 [global] 区段中,加入两行
vfs object = vscan-clamav
vscan-clamav: config-file = /etc/vscan-clamav.conf
完成修改,重新启动 samba
/etc/rc.d/rc.samba restart
启动clamav
/usr/local/sbin/clamd --config-file=/etc/clamd.conf
总结:到此为止本章以Clamav 防毒工具及其相关工具为Web 服务器 、邮件服务器、smaba服务器、FTP服务器配置了防病毒工具。笔者对Linux平台下病毒的防范总结出以下几条建议,仅供参考:
● 日常操作尽量不要使用root权限进行;
● 不要在重要的服务器上运行一些来历不明的可执行程序或脚本;
● 对于连接到互联网的Linux服务器,要定期检测Linux病毒,检查蠕虫和木马是否存在;
● 对于提供Samba文件服务的Linux服务器,最好部署一款可以同时查杀Windows和Linux病毒的软件,并定期升级病毒代码库;;
● 对于提供邮件服务的Linux服务器,最好配合使用一个E-mail病毒扫描器。