在 windows 系统中,即时扫描病毒,似乎是一件理所当然的事,当使用者在执行文件存取动作时就会对该文档进行病毒扫描,这也许是封闭系统的优点.单一的作业系统核心可以很方便地运作任何功能,但是在开放的 Linux 系统世界里就没这么幸运了。
那么在Linux系统下是否有一个解决方案可以解决即时扫描病毒的要求了?答案是肯定的,也许有人会说,使用Linux系统下最富盛名的ClamAV不就好了吗,的确,这种方式可以解决大部分问题,但这感觉还差那么一点点,不够即时,如果能在文档存取的时候就进行扫描,就更完美了。
所以本文将利用ClamAV配合DazukoFS核心模块,来构建一个能实现即时扫描病毒的Linux安全防御系统,其所需要的套件如下所示。
操作系统:RHEL5.4 (Kernel 2.6.18)
即时监控文档存取核心模块:DazukoFS
扫毒软件:ClamAV
支持的内核:Kernel 2.6.36
一、
DazukoFS简介
dazukofs是一个可堆叠文件系统,允许用户空间的应用程序在线执行访问控制。它最初的开发目的是用于支持网络病毒扫描器,但也适用于任何想要执行在线文件访问控制的应用程序。
注意:DazukoFS完全独立于Dazuko,DazukoFS使用一个不同的用户接口和驱动器,由于它们不共享代码或资源,所以可以同时使用Dazuko和DazukoFS。然而,DazukoFS目的是要作为一个在线文件访问控制的解决方案取代Dazuko。
二、
升级Linux内核
本文使用最新版本的DazukoFS 3.1.4,所支持的Linux内核为2.6.36,而本实例采用的Linux操作系统内核版本为2.6.18,我们要做一次内核升级。具体操作如下。
1
、
下载2.6.36内核原码
- wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.gz
2、解压内核
- tar -zxvf linux-2.6.36.tar.gz
3、将解压出内核放到/usr/src目录下
- cp linux-2.6.36 /usr/src
4、复制原内核配置文件
- cp /boot/config-2.6.18-*** /usr/src/.config
6、对内核参数做下微调
- make menuconfig #这里仅修改General setup -> [*] enable deprecated sysfs features to support old userspace tools,其它保持不变即可,如果有兴趣的朋友可以深入研究。
7、编译安装
- make bzImage
- make modules
- make modules_install
- make install
8、修改引导顺序
- vim /etc/grub.conf #将default=0修改为default=1
9、重启系统
- reboot
重启操作系统后,uname -r查看下内核版本是否为2.6.36
三、
安装DazukoFS
1、下载DazukoFS与MD5
- wget http://dazuko.dnsalias.org/files/dazukofs-3.1.4.tar.gz
- wget http://dazuko.dnsalias.org/files/dazukofs-3.1.4.tar.gz.md5
2
、
MD5文件完整性验证
- md5sum dazukofs-3.1.4.tar.gz > dazukofs-3.1.4.tar.gz.check.md5
- diff dazukofs-3.1.4.tar.gz.check.md5 dazukofs-3.1.4.tar.gz..md5
3、解压安装DazukoFS
- tar -zxvf dazukofs-3.1.4.tar.gz
- cd dazukofs-3.1.4
- make && make dazukofs_install
4、载入DazukoFS
- modprobe dazukofs
5
、
检测是否载入成功
- dmesg |grep dazukofs
6
、
建立测试目录
- mkdir /tmp/dazukofs_test
7
、
挂载DazukoFS型文件系统
- mount -t dazukofs /tmp/dazukofs_test /tmp/dazukofs_test
8
、
检验DazukoFS文件系统挂载
- mount | grep dazukofs
9
、
卸载DazukoFS文件系统
- umount /tmp/dazukofs_test
四、
系统启动时挂载
如果想机器一开机就实现挂载,那么可以通过配置/etc/fstab文件来实现,在该文件中添加类似如下条目。
- /usr /usr dazukofs 0 0
- /opt /opt dazukofs 0 0
五、
安装ClamAV
1、下载最新软件与签名
- wget http://downloads.sourceforge.net/clamav/clamav-0.97.7.tar.gz
- wget http://downloads.sourceforge.net/clamav/clamav-0.97.7.tar.gz.sig
2
、
软件完整性验证
这里简单介绍下怎么通过GPG做签名验证
- gpg --verify clamav-0.97.7.tar.gz.sig
缺乏公钥,验证不成功,但是可以获得得Key为15497F03
在公网公钥服务器上下载公钥
- gpg --keyserver subkeys.pgp.net --recv-key 15497F03
再进行一次验证
- gpg --verify clamav-0.97.7.tar.gz.sig
提示“Good signature”,则说明签名没问题
3
、
创建 clamav 组与用户
- groupadd clamav
- usradd -g clamav -s /bin/false -d /dev/null clamav
4
、
解压并安装
- make
- make install
5
、
配置 ClamAV
- vim /usr/local/clamav/etc/clamd.conf
Example
|
注释掉,否则不能正常工作
|
LogFile /tmp/clamd.log
|
去掉注释,就用默认位置吧
|
TCPSocket 3310
|
去掉注释,3310做为ClamAV端口
|
TCPAddr 127.0.0.1
|
仅允许本机可连接
|
User root
|
DazukoFS须使用devfs来传递相关资讯,所以必须使用root用户来执行,否则无法正确获得相关资讯
|
ClamukoScanOnAccess
|
启动即时扫描功能,须先载入DazukoFS核心模块
|
ClamukoScannerCount
|
扫描时会启动的线程,预设为3
|
ClamukoMaxFileSize
|
可扫描的单个文件最大大小,预设为10M,即只扫描10M以下的文件,设置为0时不限制大小
|
|
- vim /usr/local/clamav/etc/freshclam.conf
6
、
下载病毒库
第一次运行ClamAV时要下载病毒库文件
- /usr/local/clamav/bin/freshclam
注意:下载病毒库文件默认是放在
/usr/local/clamav/share/clamav
目录下,如果没有这个目录需要新建并将目录的属主与属组修改为
clamav
7
、
启动 ClamAV 伺服器
- /usr/local/clamav/sbin/clamd
可以检查下3310这个端口是否启来
- netstat -na|grep 3310
查看clamd日志
- tail -f /tmp/clamd.log
六、
测试
1、测试clamav扫描功能
- /usr/local/clamav/bin/clamscan -r /usr #回归扫描目录/usr下所有文件
- /usr/local/clamav/bin/clamscan -r -i /usr #仅显示被被感染的文件
- /usr/local/clamav/bin/clamscan -r --remove /usr #回归扫描,发现病毒立即删除
- /usr/local/clamav/bin/clamscan -r --bell /usr #回归扫描,发现病毒响铃
2、测试即时访问扫描功能
下载测试病毒
放在/home目录下
- wget https://secure.eicar.org/eicar.com.txt
DazukoFS文件系统挂载/home目录
- mount -t dazukofs /home /home
试着编辑eicar.com.txt会发提示“
Permission Denied
”拒绝编辑,查看日志
tail -f /tmp/clamd.log会发现“
Clamuko: /home/eicar.com.txt: Eicar-Test-Signature FOUND
”
说明即时检测到了病毒。
七、
已经发现的问题
1、
dazukofs不支持对内存映射文件的写操作,但是支持读操作;
2、
不要对根文件系统使用DazukoFS,也不要对伪文件系统(/proc,/dev,/sys)使用Dazukofs;