As Good A Place As Any

Tim Thomas's Blog

Wednesday Apr 30, 2008

为通过 CIFS 和 NFSv4 客户机访问的 ZFS 配置 OpenSolaris 病毒扫描服务

OpenSolaris 具有对 CIFS 和 NFSv4 客户机访问的文件进行病毒扫描的功能。您可以在 OpenSolaris Project:VSCAN Service 主页中阅读有关项目的内容。扫描模型类似于这篇文章讨论的模型,即将文件发送(使用 ICAP 协议)到运行反病毒软件的外部服务器中进行扫描...NAS 设备的通用模型。

根据此处所述的方式设置了 OpenSolaris CIFS 服务器之后,我将试用这些服务。我在 Sun 的部分工作是使用我们的 NAS 产品验证反病毒软件,所以我体验了这种测试。

与以前一样,我的工作环境是安装了 Solaris Nevada build 86 的 Sun Fire X4500....

root@isv-x4500b # uname -a
SunOS isv-x4500b 5.11 snv_86 i86pc i386 i86pc

大部分我所使用的命令我都会按原样展示..但有时候必须编辑字段。

我在实验室的 Windows 服务器(主机名:scanengine)上安装了 Symantec Scan Engine Version 5.1 的副本,以提供必要的扫描服务。Symantec Scan Engine 使用 ICAP 协议接口作为标准,以便 OpenSolaris VSCAN 服务能够与之通信。

我将 Symantec Scan Engine 配置为 "Scan Only" 模式,这意味着它将通知 VSCAN 服务文件是否被感染..它将不会尝试修复被感染的文件(即不会删除病毒)。VSCAN 服务在收到文件被感染的通知时,将在文件上设置属性以便拒绝访问,即隔离文件。

VSCAN 服务使用 vscanadm 命令进行管理。vscan 服务守护进程 vscand 与扫描引擎交互以扫描文件;通过 ICAP 协议将文件内容发送到扫描引擎。

我想在名为 cifs2 的 CIFS 共享上启用病毒扫描,此共享是对 ZFS 文件系统 tank/cifs2 的共享。过程如下:

1. 启用 VSCAN 服务

root@isv-x4500b # svcadm enable vscan
root@isv-x4500b # svcs vscan
STATE          STIME    FMRI
online          7:38:08 svc:/system/filesystem/vscan:icap

2. 在 ZFS 文件系统上启用病毒扫描

root@isv-x4500b # zfs set vscan=on tank/cifs2

注意:在接下来的步骤中,您应该用运行反病毒软件的服务器主机名替换 scanengine

3. 添加扫描引擎

root@isv-x4500b # vscanadm add-engine scanengine
root@isv-x4500b # vscanadm get-engine scanengine
scanengine:enable=on
scanengine:host=scanengine
scanengine:port=1344
scanengine:max-connection=32

注意:端口 1344 是 ICAP 的默认值,可以更改。如果将其更改,您还需要更改反病毒软件所使用的端口。

4. 可选步骤 - 设置要发送进行扫描的最大文件大小

扫描非常大的文件时效率很低。在此,我们将要扫描的最大文件大小设置为 100 MB。如果需要扫描的文件大小为 100MB 以上,则会出现一个选项,可以选择允许访问还是拒绝访问:两种情况下都不会扫描文件。

root@isv-x4500b # vscanadm set -p max-size=100M
root@isv-x4500b # vscanadm set -p max-size-action=deny
root@isv-x4500b # vscanadm show
max-size=100M
max-size-action=deny
types=+*

scanengine:enable=on
scanengine:host=scanengine
scanengine:port=1344
scanengine:max-connection=32

5. 可选步骤 - 修改要扫描的文件类型列表

默认情况下扫描所有文件类型。在此,我们从要扫描的文件类型列表中删除以 jpg 结尾的文件。

root@isv-x4500b # vscanadm set -p types=-jpg,+*
root@isv-x4500b # vscanadm show
max-size=10M
max-size-action=deny
types=-jpg,+*

scanengine:enable=on
scanengine:host=scanengine
scanengine:port=1344
scanengine:max-connection=32

6. 检查扫描是否正常运行

可以从 EICAR 中获得文件以测试病毒扫描程序。这些文件在扫描程序看来很像病毒,但可以安全使用。

我在 Windows 服务器上安装了 cifs2 共享,并在共享上创建了一些文件和文件夹,没有遇到任何问题。然后,我将 EICAR 文件从 Window 服务器未受保护的驱动器拖放到共享中。当我尝试在共享上打开 EICAR 文件时,访问被拒绝。

隔离

系统日志中将显示如下消息。

Apr  9 08:13:09 isv-x4500b vscand:[ID 540744 daemon.warning] quarantine /tank/cifs2/eicar.com.txt 11101 - EICAR Test String

回到运行 OpenSolaris 的服务器,我查看文件是否真的进行过扫描,方法如下

root@isv-x4500b # vscanadm stats
scanned=13
infected=6
failed=0
scanengine:errors=0

文件正在扫描,没有任何扫描错误! 

最后,我还查看了 Symantec Scan Engine GUI 上的统计数据,也确认了文件正在扫描。注意,从之后的截屏��以看到,下列数字与上述 vscanadm 的输出不匹配。

Symantec Scan Engine

对受感染文件的访问被拒绝,因为设置了隔离位。可以检查隔离位 q,方法如下...

root@isv-x4500b # ls -/c eicar.com.txt
----------+  1 2147483649 2147483650      68 Apr  9 08:13 eicar.com.txt
                {A------mq-}

更多信息

OpenSolaris Project:VSCAN Service 主页

vscanadm 和  vscand 手册页。

Comments:

Post a Comment:
Comments are closed for this entry.
A Day At The Seaside

Calendar

About Me

View Tim Thomas's profile on LinkedIn

Available in

English

简体中文

日本語

Feeds

Search

Links

Navigation