为 OTN 撰稿
为 Oracle 技术网撰写技术文章,获得报酬的同时可提升技术技能。
了解更多信息
密切关注
OTN 架构师社区
OTN ArchBeat 博客 Facebook Twitter YouTube 随身播图标

使用 Oracle API Gateway 11g 保护 Oracle WebCenter Content 11g 免受病毒侵害

Marcelo Parisi

这篇概念验证文章介绍文件到达 Oracle WebCenter Content 前执行基本病毒检查例程所需的基本基础架构重新设计和软件配置

2014 年 6 月

下载
download-icon13-1Oracle WebCenter Content
download-icon13-1Oracle API Gateway

简介

在 Oracle WebCenter Content 上检查文件是否携带病毒是当前的一个流行话题。这也是一个棘手的问题:如果文件位于 Oracle WebCenter Content 文件系统上,则已经通过签入过程,因此无法进行传统的文件系统检查。如果文件携带病毒并且在 Oracle WebCenter Content 处理后已从文件系统中删除,Oracle WebCenter Content 可能存在问题,至少存在不一致的数据;它认为文件已经签入并存在,但防病毒软件已将该文件从文件系统中删除。最好的办法是在文件到达 Oracle WebCenter Content 前对其进行检查;这样,如果文件携带病毒,签入请求甚至不会到达 Oracle WebCenter Content 实例。

这篇概念验证文章介绍文件到达 Oracle WebCenter Content 前执行基本病毒检查例程所需的基本基础架构重新设计和软件配置。本文使用的主要工具包括 Oracle API Gateway 和 Clam AntiVirus (Clam AV)。

架构基础架构注意事项

本文所用原始环境是一个简单的服务器,运行单实例 Oracle WebCenter Content 11g。我不准备涉及 Oracle WebCenter Content 设置的细节。本文采用默认安装。在初始环境中,用户使用直接将其送到 Oracle WebCenter Content 实例执行操作的 URL。我们将在客户端与 Oracle WebCenter Content 之间引入一个新层。该层将包含 Oracle API Gateway 11g,负责在发往 Oracle WebCenter Content 实例的内容实际到达目的地之前进行检查。图 1 显示原始环境的样子以及执行提议的更改后的样子。

parisi-webcenter-oag-fig01
图 1

软件要求

在这篇概念验证文章中,我们将需要 Oracle API Gateway 11g、Clam AV 和一个 EICAR 测试文件。用于演示的服务器运行 Oracle Enterprise Linux 6.4。要下载所需软件,请访问以下链接:

Clam AV 将使用 0.98.3 版。EICAR 是用于测试防病毒软件的文件。如果计算机中有此类软件,可能需要禁用才能下载文件。

准备环境

  1. 创建 Oracle 用户和组:

    [root@gw-host ~]# groupadd -g 54321 oinstall

    [root@gw-host ~]# useradd -g 54321 -u 54321 -m oracle

  2. 创建一个用于处理环境的目录,并将其写权限授予我们的 Oracle 用户:

    [root@gw-host ~]# mkdir /u01

    [root@gw-host ~]# chown oracle:oinstall /u01

  3. 以 Oracle 用户身份创建用于处理安装文件的 commons 目录:

    [oracle@gw-host ~]$ mkdir -p /u01/oracle/commons

     

  4. 将以下文件移至 /u01/oracle/commons 中:

    • ofm_oag_linux_11.1.2.2.0_disk1_1of1.zip
    • clamav-0.98.3.tar.gz

安装 Oracle API Gateway

  1. 解压缩文件:

    [oracle@gw-host ~]$ mkdir -p /u01/oracle/commons/OAG

    [oracle@gw-host ~]$ cd /u01/oracle/commons/OAG/

    [oracle@gw-host OAG]$ unzip ../ofm_oag_linux_11.1.2.2.0_disk1_1of1.zip

  2. 运行安装程序文件:

    [oracle@gw-host OAG]$ cd Linux/64bit/

    [oracle@gw-host 64bit]$ chmod +x OAG-11.1.2.2.0-linux-x64-installer.run

    [oracle@gw-host 64bit]$ ./OAG-11.1.2.2.0-linux-x64-installer.run

  3. 将软件安装在 /u01/oracle/middleware/oag/OAG-11.1.2.2.0 下:

    parisi-webcenter-oag-fig02
    图 2

    选择 Core ServerPolicy Studio,如图 3 所示:

    parisi-webcenter-oag-fig03
    图 3
  4. 新建一个域;此域将无 SSL/HTTPS 支持。还需配置一个新的 API Gateway 实例。本例中将使用名称 api-gw1 在组 apigrp 中创建,采用默认端口,无 SSL/HTTPS 支持,如图 4 所示。

    parisi-webcenter-oag-fig04
    图 4
  5. 安装完成后,其拓扑将类似图 5。

    parisi-webcenter-oag-fig05
    图 5

安装 Clam AV

因为我不打算介绍 Clam AV 编译的必备库,因此如果您在编译此软件时遇到问题,请参阅产品文档。

  1. 执行以下命令创建一个目录结构来处理 Clam AntiVirus:

    [oracle@gw-host ~]$ mkdir -p /u01/oracle/clamav

    [oracle@gw-host ~]$ mkdir -p /u01/oracle/clamav/var/log

    [oracle@gw-host ~]$ mkdir -p /u01/oracle/clamav/share/clamav

  2. 解压缩源代码:

    [oracle@gw-host ~]$ cd /u01/oracle/commons/

    [oracle@gw-host commons]$ tar -xvzf clamav-0.98.3.tar.gz

  3. 配置和编译软件源代码。禁用不必要的“on file access”(文件访问时)扫描和与电子邮件筛选有关的扩展:

    [oracle@gw-host ~]$ cd /u01/oracle/commons/clamav-0.98.3

    [oracle@gw-host clamav-0.98.3]$ ./configure --prefix=/u01/oracle/clamav --with-user=oracle --with-group=oinstall --disable-clamuko --disable-milter

    [oracle@gw-host clamav-0.98.3]$ make

    [oracle@gw-host clamav-0.98.3]$ make install

  4. 为 Freshclam 创建配置文件,此工具负责创建和升级 Clam AV 病毒定义数据库:

    [oracle@gw-host ~]$ vi /u01/oracle/clamav/etc/freshclam.conf

    /u01/oracle/clamav/etc/ 中提供了一个示例文件。该文件应类似以下所示:

    UpdateLogFile /u01/oracle/clamav/var/log/freshclam.log

    LogFileMaxSize 2M

    LogTime yes

    DatabaseMirror database.clamav.net

    MaxAttempts 5

    ConnectTimeout 60

    ReceiveTimeout 60

  5. 更新 Clam AV 的病毒定义数据库:

    [oracle@gw-host ~]$ cd /u01/oracle/clamav/bin/

    [oracle@gw-host bin]$ ./freshclam

  6. 为 Clam AV 后台进程创建配置文件:

    [oracle@gw-host ~]$ vi /u01/oracle/clamav/etc/clamd.conf

    还提供了 clamd.conf 的示例文件。该文件应类似以下所示:

    LogFile /u01/oracle/clamav/var/log/clamd.log

    LogFileMaxSize 25M

    LogTime yes

    TCPSocket 3310

    TCPAddr 127.0.0.1

    MaxConnectionQueueLength 10

    ReadTimeout 300

    CommandReadTimeout 5

    MaxFileSize 250M

  7. 运行以下命令启动 Clam AntiVirus 后台进程:

    [oracle@gw-host ~]$ cd /u01/oracle/clamav/sbin/

    [oracle@gw-host sbin]$ ./clamd

  8. 检查后台进程是否正在运行:

    [oracle@gw-host ~]$ ps -ef | grep clamd

创建 Oracle API Gateway 策略

要配置安装过程中创建的 Oracle API Gateway 实例,我们需要运行 Policy Studio 工具。

  1. 要运行 Policy Studio 工具,请执行以下命令:

    [oracle@gw-host ~]$ cd /u01/oracle/middleware/oag/OAG-11.1.2.2.0/oagpolicystudio/

    [oracle@gw-host oagpolicystudio]$ ./policystudio

  2. 将其连接到本地 Oracle API Gateway Node Manager 之后,创建一个“策略容器”来组织策略,如下面图 6 和图 7 所示。

    parisi-webcenter-oag-fig06
    图 6
    parisi-webcenter-oag-fig07
    图 7
  3. 创建策略。要创建的第一个策略是 Redirect Policy,它将用户从 http://gw-host:8080/ 重定向到 http://gw-host:8080/cs/,即 Oracle WebCenter Content 的主上下文。要创建此策略,请使用 HTTP Redirect 筛选器,如图 8 所示。

    parisi-webcenter-oag-fig08
    图 8
  4. 需要将创建的筛选器设置为 Redirect Policy 的起点,如图 9 所示。

    parisi-webcenter-oag-fig09
    图 9
  5. 创建另一个名为 Simple Passthru 的策略,它将事务直接发送到 Oracle WebCenter Content。要创建此策略,请使用名为 Route to WCCStatic Router 筛选器,如图 10 所示。

    parisi-webcenter-oag-fig10
    图 10
  6. 将此筛选器设置为策略的起点,然后创建名为 Connect to WCCConnection 筛选器。创建此筛选器时,转到 Advanced 选项卡,取消选中 Handle Redirects,然后选择 Use Host header specified by client,如图 11 所示。

    parisi-webcenter-oag-fig11
    图 11
  7. 创建从 Route to WCC 筛选器到 Connect to WCC 筛选器的 Success Path。该策略类似于图 12 所示。

    parisi-webcenter-oag-fig12
    图 12
  8. 创建最后一个策略 Advanced passthru。这是主策略,因此需要在容器中创建。此策略所需的第一个筛选器是 Content Type 筛选器。由于 Oracle WebCenter Content 签入屏幕是基于表单的,因此使用此筛选器确定事务是否为多部分表单。如果您看到如图 13 所示的 content-type multipart/*,此筛选器一定失败。

    parisi-webcenter-oag-fig13
    图 13
  9. 将此筛选器设置为起点,然后创建一个 ClamAV Anti-Virus 筛选器连接到先前启动的 Clam AntiVirus 后台进程,如图 14 所示。

    parisi-webcenter-oag-fig14
    图 14
  10. Content Type 筛选器与刚创建的筛选器之间创建一个 Failure Path。然后创建一个名为 Route to WCCStatic Router 筛选器,如图 15 所示。

    parisi-webcenter-oag-fig15
    图 15
  11. 在 Content Type 筛选器与 Route to WCC 筛选器之间创建一个 Success Path。如果 Content Type 筛选器检测到事务是表单,筛选器将失败并转到 ClamAV Anti-Virus 筛选器处理表单内容。否则,将转到 Route to WCC 筛选器。此时策略应类似于图 16 所示。

    parisi-webcenter-oag-fig16
    图 16
  12. 如果 ClamAV Anti-Virus 筛选器未失败,则消息没有病毒。现在可以将事务发送到 Oracle WebCenter Content。创建从 ClamAV Anti-Virus 筛选器到 Route to WCC 筛选器的 Success Path。然后与前面一样,创建一个名为 Connect to WCC 的 Connection 筛选器。记住取消选中 Handle Redirects 并选择 Use Host header specified by client,如图 17 所示。

    parisi-webcenter-oag-fig17
    图 17
  13. 创建从 Route to WCC 筛选器到 Connect to WCC 筛选器的 Success Path。现在,策略应类似图 18 所示。

    parisi-webcenter-oag-fig18
    图 18
  14. 创建“用户友好的”消息。首先创建一个名为 Create virus messageSet Message 筛选器。在此筛选器中,使用自定义 HTML 消息呈现给用户。在此,您将看到一条简单消息,但您可以使用 Oracle WebCenter Content CSS 创建此消息,设置令人悦目的布局。此消息的内容类型将为 text/html,如图 19 所示。

    parisi-webcenter-oag-fig19
    图 19
  15. 创建从 ClamAV Anti-Virus 筛选器到 Create virus message 筛选器的 Failure Path。然后创建名为 Send messageReflect Message 筛选器,以 403 作为代码(未授权),如图 20 所示。

    parisi-webcenter-oag-fig20
    图 20
  16. 16. 创建从 Create virus message 筛选器到 Send Message 筛选器的 Success Path。最后,创建 Set Response Status 筛选器,告诉 Oracle API Gateway Monitor 事务未完成。创建 Set Response Status 筛选器,将其命名为 Mark as failed 并选择 fail,如图 21 所示。

    parisi-webcenter-oag-fig21
    图 21
  17. 创建从 Send Message 筛选器到 Mark as failed 筛选器的 Success Path

    现在策略已完成,应类似图 22 所示。

    parisi-webcenter-oag-fig22
    图 22

配置 Oracle API Gateway 路径

现在,在 Policy Studio 中调整路径,以便执行先前创建的策略。为此,先展开 Oracle API GatewayListenersOracle API GatewayDefault Services,然后单击 Paths,如图 23 所示。

    parisi-webcenter-oag-fig23
    图 23
  1. 删除根路径,应用创建的策略,将用户从 http://gw-host:8080/ 重定向到 http://gw-host:8080/cs/。为此,选择 / 路径并单击文本框。将 Path Specific Policy 参数更改为 Redirect Policy,如图 24 所示。

    parisi-webcenter-oag-fig24
    图 24
  2. 单击 Add 按钮并选择 Relative Path,创建一个新路径,满足 Oracle WebCenter Content 身份验证的要求。

  3. 使用 /adfAuthentication 并将策略设置为 Simple Passthru,如图 25 所示。

    parisi-webcenter-oag-fig25
    图 25
  4. 单击 Add 按钮并选择 Relative Path,创建 /cs/ 路径。此路径将类似图 26 所示。

    parisi-webcenter-oag-fig26
    图 26
  5. 按 F6 部署配置。

全面测试

打开浏览器,单击 http://gw-host:8080/,您将被重定向到 http://gw-host:8080/cs/。经此路由,将显示 Oracle WebCenter Content 屏幕,如图 27 所示。

parisi-webcenter-oag-fig27
图 27

登录之后,尝试签入一些文档,如图 28 所示。

parisi-webcenter-oag-fig28
图 28

如果尝试签入带病毒的内容(如 EICAR 文件),就会收到错误消息,如图 29 所示。

parisi-webcenter-oag-fig29
图 29

还可以在 Oracle API Gateway Manager 中检查事务状态,如图 30 所示。

parisi-webcenter-oag-fig30
图 30

总结

本概念验证文章介绍了一种在 Oracle WebCenter Content 环境之前创建病毒防护层的简单方式,它不会有影响操作或产生不一致数据的风险。

本文无意作为最终指南,只是演示 Oracle API Gateway 与 Oracle WebCenter Content 结合可以实现的结果。请注意,本文只涉及 Oracle WebCenter Content 的 HTTP 接口。它不保护原生 RIDC 协议或 Oracle WebCenter Content 的 WebServices API。Oracle API Gateway 可用于保护 Oracle WebCenter Content 的 WebServices API,但策略会与此不同。要处理 Oracle WebCenter Content 的 WebServices API,必须虚拟化服务。

最后,说一下集群环境。如果您计划在集群环境中完成此操作,可以考虑在每个 Oracle WebCenter Content 节点之前运行一个 Oracle API Gateway 实例,这样不会给环境带来瓶颈。我认为 Oracle API Gateway 应位于 Oracle HTTP Server 和 Oracle WebCenter Content 之间。

关于作者

Marcelo Parisi 是巴西 Oracle 顾问咨询部的顾问,他是技术基础架构团队的成员,任职 Oracle 融合中间件系列的基础架构架构师和顾问。其主要职责包括 FMW 基础架构的架构设计、实现和性能调优。Marcelo 擅长的领域包括 Oracle WebLogic Server、Oracle SOA Suite 和 Oracle WebCenter。
Twitter LinkedIn Facebook