今天下午给公司的文件服务器(CentOS 5.4+Samba)配置了个防病毒的功能,现在把配置过程Share出来。
Samba-vscan(Samba-vscan官方网站:http://www.openantivirus.org/projects.php)是Samba 的模块,Samba-vscan提供了Samba环境的Server-based防病毒功能,能在第一时间防止用户将感染病毒的文件存放到服务器中。配置ClamAV、Samba-vscan为Samba提供防病毒功能的操作步骤如下。
(1) 下载ClamAv相关RPM包后,使用如下命令安装。
wget http://packages.sw.be/clamav/clamav-db-0.95.3-1.el5.rf.i386.rpm
wget http://packages.sw.be/clamav/clamav-devel-0.95.3-1.el5.rf.i386.rpm
wget http://packages.sw.be/clamav/clamav-0.95.3-1.el5.rf.i386.rpm
wget http://packages.sw.be/clamav/clamd-0.95.3-1.el5.rf.i386.rpm
rpm -ivh *.rpm
(2) 使用如下命令启动clamd服务,并设置为下次启动自动加载。
service clamd restart
chkconfig clamd on
(3) 执行以下命令升级ClamAV病毒库。
freshclam
(4) 使用crontab -e命令增加如下自动化任务。
*/50 * * * * /usr/bin/freshclam --quiet --daemon
(5) 使用如下命令安装相关软件包。
yum -y install pcre-devel gmp-devel
(6) 查询当前系统Samba服务器版本,然后下载(在RHEL/ CentOS 5.4中Samba版本为3.0.33)解压并编译对应的Samba服务器源码包。
cd /usr/src
wget ftp://ftp.hkmirror.org/pub/samba/sambaftp/old-versions/samba-3.0.33.tar.gz
tar -xvzf samba-3.0.33.tar.gz
cd samba-3.0.33/source
./configure
make headers
(7) 下载Samba-vscan源码包,解压后将其移动到Samba源码目录下examples/VFS目录。
cd /usr/src
wget http://www.openantivirus.org/download/samba-vscan-0.3.6c-beta5.tar.gz
tar -zxvf samba-vscan-0.3.6c-beta5.tar.gz
mv /usr/src/samba-vscan-0.3.6c-beta5 /usr/src/samba-3.0.33/examples/VFS/
(8) 使用如下命令编译Samba-vscan后,将编译产生的库文件复制到/usr/lib/samba/vfs/目录,将病毒扫面配置文件到/etc/samba目录。
cd /usr/src/samba-3.0.33/examples/VFS/samba-vscan-0.3.6c-beta5/
./configure
make
cp vscan-clamav.so /usr/lib/samba/vfs/
cp clamav/vscan-clamav.conf /etc/samba/
(9) 修改/etc/samba/vscan-clamav.conf中如下参数,以便Samba-vscan和ClamAV协同工作。
clamd socket name = /var/run/clamav/clamd.sock
infected file action = delete
其中/etc/samba/vscan-clamav.conf中常用参数作用如下。
l max file size = 0:扫瞄文件的size上限,0表示没有限制。
l verbose file logging = yes|no:log文件的控制。如果指定为yes表示所有存取也会记录下,如果是no只会存取感染了的文件才会记录。
l scan on open = yes|no:如果指定为yes表示每次打开文件都会扫瞄。
l deny access on error = yes|no:如果和clamd 连接错误,是否不能存取那些被保护的文件。
l deny access on minor error = yes|no:如果和服务文件发生错误,是否不能存取那些被保护的文件。
l send warning message = yes|no:当发现感染病毒的文件时,是否向Windows客户端发送警告信息(在Windows客户端需要将“messager”服务启动才可收到警告信息)。
l infected file action = quarantine|delete|nothing:如何处理感染病毒的文件, quarantine表示尝试移动去隔离区(如果移动不成功则会删除)、delete表示删除被感染病毒的文件、nothing表示不做任何动作。
l quarantine directory = <目录>:指定隔离区的目录。
l quarantine prefix = <字符串>:被移动到隔离区的文件会自动在文件名前加上指定的字符串。
(10) 在/etc/samba/smb.conf文件“[global]”标签中,加入如下内容让Samba服务器能正确的调用Samba-vscan扫描病毒。
vfs object = vscan-clamav
vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
(11) 使用如下命令重新启动smb和clamd服务。
service smb restart
service clamd restart
当Windows客户端将带有病毒的文件复制到Samba的共享目录时,ClamAV会根据/etc/samba/vscan-clamav.conf中“infected file action”参数的配置处理感染病毒的文件。