M 防火墙安全选项

防火墙安全选项允许 ACSLS 在防火墙后运行,同时客户机软件可以跨该防火墙发出请求。

针对 ACSLS 客户机也提供了防火墙安全,允许它们在其各自的防火墙后运行。这是由 Oracle 为其独立软件供应商 (Independent Software Vendor, ISV) 合作伙伴提供的。请联系您的客户机软件组件的 ISV 来查明每个具体客户机的最新状态。

在防火墙后运行 ACSLS

防火墙安全解决方案提供了以下优势:

  • 允许 ACSLS 在防火墙后运行(也就是说,ACSLS 在防火墙的安全端,客户机在另一端)。

  • 允许 ACSLS 客户机在其自己的防火墙后运行(也就是说,客户机在安全端,ACSLS 在防火墙的另一端)。

    注:

    ISV 必须在其客户端软件组件中实施所提供的更改。
  • 保留了与当前 ACSLS 客户机实施的兼容性,允许这些客户机继续在防火墙解决方案中与 ACSLS 一起运行。

  • 保留了当前的 ACSAPI/客户机功能和性能。这包括非防火墙环境中可用的所有功能。

完整的解决方案将兼备上面的前两个功能。这使得 ACSLS 和 ACSLS 客户机可以各自在自己的防火墙后运行(也就是说,在 ACSLS 与客户机之间有两个防火墙),并且仍具有与在无防火墙环境中相同的通信性能。

解决的安全区域

ACSLS 已解决了以下安全问题:

RPC

对于尝试在防火墙环境内运行的很多场所,ACSLS 中使用的 RPC 是一个安全问题。保留与当前已安装客户机群体的兼容性妨碍了从 ACSLS 中完全删除 RPC 的能力。

ACSLS 防火墙安全功能解决了 RPC 中固有的安全问题,这包括:

  • 需要允许外部(不可信)各方通过不受限范围内的端口 (1024-65535) 启动与可信主机的连接。

  • 通过在已知端口 111 上运行的 portmap(或 rpcbind)守护进程公开平台上可用服务的映射。

安全性

在防火墙解决方案中,基础安全来自限制从非安全端到可信(安全)端的访问。在任何情况下,为了执行通信并允许数据交换,都必须允许某些有限且受控的访问。目标是允许数据交换在经过明确定义且受限的入口点集合内进行,使得您可以控制这些访问点及其对应的通信。此解决方案满足此目标。

注:

如果具有基于 IPv4 的边缘防火墙,该防火墙应配置为删除所有出站 IPv4 协议 41 数据包和 UDP 端口 3544 数据包,以防止 Internet 主机使用任何 IPv6-over-IPv4 隧道通信访问内部主机。

通信组件

ACSLS/客户机通信依赖两个网络接口组件来处理客户机平台与 ACSLS 平台之间的网络通信。充当 ACSLS 的客户机或代理服务器的软件实施这两个组件中的一个,以便与 ACSLS 平台和现有客户机兼容。位于客户机平台上的组件称为 SSI,位于 ACSLS 平台上的组件称为 CSI。虽然可以在一端(例如 ACSLS 平台)实施所有更改,但是为了保持客户机兼容性并提供所有防火墙安全功能,有必要对每端进行相应的更改以获得优势。好处是每端可以在其自己的一端独立地实施功能并实现防火墙安全优势(例如,对 ACSLS 的更改允许 ACSLS 平台在安全的防火墙后运行)。

防火墙安全选项的优势

本部分介绍了防火墙安全选项的优势。

ACSLS 服务器端

使用仅针对服务器端组件的更改时(如此防火墙安全解决方案中所提供),优势包括:

  • 将 ACSLS 通信的传入连接限制到用于所有已注册的程序编号(ACSLS CSI 有两个已注册的程序编号,它们将由单个端口为其提供服务)的单个 TCP 端口。

  • 允许用户指定该端口的标识,并以对应的方式配置其防火墙。

  • 允许用户关闭到 UDP 端口的 ACSLS 通信。

  • 允许用户禁用 ACSLS 服务器到客户端端口映射器*(UDP/TCP port 111)的通信。端口映射器还必须保持在客户机平台上运行才能保留与客户端代码的兼容性。不过,它不会用于由服务器启动的网络通信,因此,可以对客户机的防火墙进行配置以禁止对它的访问。

  • 对于用来保持当前性能的服务器端接口,从 ACSLS 服务器端到客户机的传出连接不受限制。这遵循了安全团体广泛接受的做法。

ACSLS 服务器端口限制

此防火墙解决方案限制了外部各方可以用来启动网络通信的传入端口的数目。端口被限制为一个或三个:单个由客户指定的用于 ACSLS 传入请求的端口,外加可能的两个端口映射器端口(TCP 和 UDP 端口 111)。

注:

要禁止客户机访问 ACSLS 服务器端口映射器以及禁止访问 UDP 和 TCP 端口 111,必须对客户机软件组件进行更改。请参见下文的客户端论述。

上述解决方案的服务器端是完全在 ACSLS 内实施的。

客户端 (CSC)

对 CSC 所做的更改将在客户端平台上施加与上述限制完全相同的限制。这为 CSC 提供了相同的能力来位于其自己的安全防火墙后。此解决方案提供了以下优势:

  • 对于每个已注册程序编号,将到 CSC 的通信(响应)的传入连接限制到单个 TCP 端口。ACSLS SSI 有一个已注册的程序编号。

  • 最终用户可以通过类似的方式指定 TCP 端口的标识并配置其防火墙。

  • 关闭到 UDP 端口的客户端通信。

  • 禁用客户机到 ACSLS 服务器端口映射器(UDP/TCP 端口 111)的任何通信。端口映射器还必须保持在 ACSLS 平台上运行才能保留与 ACSLS 代码的兼容性。不过,客户机网络通信不是通过端口映射器启动的。因此,可以对 ACSLS 服务器防火墙进行配置以禁用对它的访问。

  • 对于用来保持当前性能的客户端接口,从客户端到 ACSLS 服务器的传出连接不受限制。

客户机端口限制

此解决方案限制了外部各方可以用来启动网络通信的传入端口的数目。端口被限制为一个或三个:单个由客户指定的用于传入响应的端口,以及可能的两个端口映射器端口(TCP 和 UDP 端口 111)。

注:

要禁用 ACSLS 服务器对客户机的端口映射器的访问(并因此禁用对 UDP 和 TCP 端口 111 的访问),必须对 ACSLS 服务器软件组件进行更改(请参见上文的 ACSLS 服务器端论述)。

此解决方案有一个两步实施:

  • Oracle StorageTek 已对 CSC 开发者工具包 2.3(或更高版本)源代码进行了必要的代码更改。

  • 希望为其客户机平台提供此安全性的 ACSLS 客户机必须将这些更改集成到其客户端 SSI 代码中,重新生成产品,并再次向 ACSLS 认证其客户机系统组件 (Client System Component, CSC)。

优点

解决方案的客户端和服务器端是独立的。因此,如果两端中只有一端相对于另一端位于防火墙后,则仅需要在该端实施软件更改。此外,仅更改一端可以保持与已存在的所有当前客户机和服务器实施的兼容性以及与使用 CSI/SSI 接口的其他软件组件的兼容性。

注:

这包括与当前 Oracle StorageTek 产品的兼容性。

此解决方案不影响客户机/服务器通信的当前性能。

打开防火墙安全功能并设置变量

要在防火墙后运行 ACSLS 服务器并且在防火墙后运行 ACSLS 客户机(可选),则在 ACSLS 服务器和客户机系统位于防火墙后时在这两者上设置变量。这些变量允许您将传入通信限制到单个端口,还允许您禁用端口映射器。

ACSLS 变量

CSI_TCP_RPCSERVICE—允许 CSI 支持使用 TCP 协议的 RPC。

  • 功能:允许 CSI 作为 TCP RPC 服务器运行。如果有任何客户机希望通过 TCP 与 ACSLS 进行通信,请将此选项设置为 TRUE。

  • 有效选项:TRUE 或 FALSE(TRUE 是默认值。)

    • TRUE 允许客户机通过 TCP 访问 CSI。

    • FALSE 禁止客户机通过 TCP 访问 CSI。

  • 其他详细信息:必须重新启动 ACSLS 产品才能使此选项生效。

CSI_UDP_RPCSERVICE—允许 CSI 支持使用 UDP 协议的 RPC。

  • 功能:选择此选项将允许 CSI 作为 UDP RPC 服务器运行。如果有任何客户机希望通过 UDP 与 ACSLS 进行通信,请将此选项设置为 TRUE。

  • 有效选项:TRUE 或 FALSE(建议选择 FALSE。)

    • TRUE 允许客户机通过 UDP 访问 CSI。

    • FALSE 禁止客户机通过 UDP 访问 CSI。

  • 其他详细信息:必须重新启动 ACSLS 产品才能使此选项生效。防火墙安全 CSI 仅支持 TCP 通信。除非您有旧版客户机应用程序位于 ACSLS 服务器的防火墙内,否则请将 CSI_UDP_RPCSERVICE 设置为 FALSE。

CSI_USE_PORTMAPPER—启用端口映射器。

  • 功能:选择此选项将导致 CSI 在无法向客户机发送响应时查询端口映射器。如果您不希望允许访问客户机上的端口映射器,请将此选项设置为 NEVER。

  • 有效选项:ALWAYS、NEVER 或 IF_DUAL_LAN_NOT_ENABLED

    • ALWAYS 表示当 CSI 无法向客户机发送响应时始终应当询问端口映射器。

    • NEVER 表示当 CSI 无法向客户机发送响应时应当从不询问端口映射器。如果客户机不支持端口映射器,应选择此选项。

    • IF_DUAL_LAN_NOT_ENABLED 指定仅当未启用双 LAN 支持时才应当询问端口映射器。如果启用了双 LAN 支持,则会假定客户机不支持端口映射器。IF_DUAL_LAN_NOT_ENABLED 是默认值,可保持向后兼容性。

  • 其他详细信息:必须重新启动 ACSLS 产品才能使此选项生效。

CSI_FIREWALL_SECURE—允许在防火墙后使用 CSI(使用用户定义的入站端口)。

  • 功能:此选项允许 ACSLS 服务器在安全防火墙后运行。请指定 ACSLS 使用的入站端口并将访问限制到单个端口。将防火墙配置为拒绝除了该端口之外所有端口上的传入 ACSLS 通信。这可以确保仅公开该端口以供希望启动与 ACSLS 的通信的那些外部客户机使用。

    要限制端口访问,请完成以下步骤来针对指定的端口设置安全防火墙:

    • 将此选项设置为 TRUE。

    • 指定要供 CSI 使用的允许传入 ACSLS 请求的端口。(由 CSI_INET_PORT 指定。)

    • 对于某些不支持混合端口 RPC 的旧版客户机应用程序,可能需要在防火墙中打开 UDP/TCP 端口 111 才能支持来自客户机的端口映射器查询请求。

    • 防火墙安全 CSI 仅支持 TCP 通信。

      除非您有旧版客户机应用程序位于 ACSLS 服务器的防火墙内,否则请将 CSI_UDP_RPCSERVICE 设置为 FALSE。

    • 将 ACSLS 服务器位于其后面的防火墙配置为允许在前面指定的端口上启动和接收通信。不要忘记在客户机应用程序上将固定端口设置为同一端口以最大程度地减少打开的防火墙端口数。

    • 重新启动 ACSLS。

  • 有效选项:TRUE 或 FALSE(默认值为 TRUE)

    • TRUE—限制对 ACSLS 服务器的访问,仅将单个端口用于来自客户机的传入请求。

    • FALSE—不限制用于客户机对 ACSLS 服务器的请求的端口。

  • 其他详细信息:必须重新启动 ACSLS 产品才能使此选项生效。

CSI_INET_PORT—CSI 用来接收传入 ACSLS 请求的端口号。

  • 功能:此选项指定 CSI 用于来自客户机的传入 TCP 请求的端口。

  • 有效选项:介于 1024 和 65535 之间的数字,但 50003 除外。(默认值是 30031)

  • 其他详细信息:必须重新启动 ACSLS 产品才能使此选项生效。仅当通过 CSI_FIREWALL_SECURE 启用了防火墙安全 CSI 时,才使用此变量并将其设置为 TRUE。

显示和设置 ACSLS 变量

可以使用 ACSLS acsss_config 实用程序或 dv_config 实用程序来显示和设置 ACSLS 静态和动态变量:

  • dv_config –d

    显示所有 ACSLS 静态和动态变量及其设置。

  • dv_config -p <variable_name> -u

    提示您更改某个变量,并且如果是动态变量,还会提示您更新 ACSLS 全局共享内存。在提示处输入 ? 可查看变量的完整说明。在显示完整说明后,会再次对您进行提示。

ACSAPI 客户机系统变量

ACSLS 客户机系统必须附带 ACSLS CSC 工具包 2.3(或更高版本)才能在客户机系统上启用防火墙安全操作。

需要为 ACSLS 客户机上的防火墙安全操作启用四个环境变量。必须将这些变量设置为特定值。在启动 SSI 进程之前,必须设置这些变量中的每一个并将其导出到 SSI 的环境变量。然后,它们将由 SSI 进行解释和使用,如下所述。

如果您的 CSC 使用某个脚本启动 SSI,建议从该脚本内设置并导出这些变量。另外,客户机开发者可能已为最终客户提供了用于根据 CSC 及其运行环境对这些变量进行相应配置的方法。

CSI_UDP_RPCSERVICE—决定是否为网络通信使用 UDP。

  • 功能:允许/禁止将 UDP 用作 SSI 网络通信的基础网络传输层。

  • 有效选项:TRUE 或 FALSE

  • 其他详细信息:对于防火墙安全 CSC,必须将此环境变量设置为 FALSE。防火墙安全 ACSLS 应用程序数据包都是使用 TCP 网络传输发送的。

CSI_TCP_RPCSERVICE—决定是否为网络通信使用 TCP。

  • 功能:允许/禁止将 TCP 用作 SSI 网络通信的基础网络传输层。

  • 有效选项:TRUE 或 FALSE

  • 其他详细信息:对于防火墙安全 CSC,必须将此环境变量设置为 TRUE。防火墙安全 ACSLS 应用程序数据包都是使用 TCP 网络传输发送的。

CSC 工具包 2.3 中的新变量

SSI_INET_PORT—用于传入响应的固定端口号。

  • 功能:指定 SSI 将为传入 ACSLS 响应使用的端口。

  • 有效选项:0 或 1024–65535,但 50001 和 50004 除外。

    • 0 指示允许动态分配端口这一以前的行为应保持有效。

    • 1024–65535 指示应将该数字用作 SSI 用于接受 ACSLS 响应的 TCP 端口。

    • 不要指定 50001 或 50004,因为它们由 mini_el 和 SSI 使用。

  • 其他详细信息:将此环境变量设置为某个非零值将导致 SSI 将此端口用于传入 ACSLS 响应。这意味着防火墙需要允许该端口上的传入请求,SSI 才能接收 ACSLS 响应。这是 ACSLS 用于启动与 CSC SSI 的连接的唯一端口。

    注:

    该值必须与在用于保护 CSC 平台的防火墙中配置的值匹配,以允许该端口上的连接的传入请求。

CSI_HOSTPORT—消除对 ACSLS 服务器上的端口映射器的查询。而是将请求发送到 ACSLS 服务器上的此端口。

  • 功能:指定 SSI 在 ACSLS 服务器上要将其 ACSLS 请求发送到的端口。ACSLS CSI 必须使用此端口(也就是说,将防火墙安全固定端口设置为与此相同的值)接受来自 CSC 的入站 ACSLS 请求。

  • 有效选项:1024–65535(但 50003 除外)和 0(对于 CSI 用于入站数据包的端口,此值必须与在 ACSLS 服务器上设置的值匹配)

    • 0 指示将继续使用查询 ACSLS 服务器上的端口映射器这一以前的行为。

    • 1024–65535 指示 CSI 用于传入请求的值。

    • 不要指定 50003,因为它由 acslm 使用。

  • 其他详细信息:设置此环境变量将消除 SSI 对 ACSLS 服务器的端口映射器的查询。此变量的值指定 SSI 应将其传出 ACSLS 请求发送到的 ACSLS 服务器上的端口号。这允许受防火墙保护的 ACSLS 服务器在其防火墙上禁止对端口映射器的访问。端口映射器查询以前提供 SSI 应将其 ACSLS 请求定向到的端口号。

    注:

    此值必须与 CSI 用于接受传入请求并为其提供服务的端口值匹配。要使此端口可靠地保持固定为某个可指定的值,必须向 ACSLS 应用防火墙安全功能。如果不匹配,在 CSC 与 ACSLS 之间将不会进行通信。

在客户机上设置和显示环境变量

在客户机上,用来设置环境变量的命令取决于您的 shell 和 OS。

  • 在 UNIX 和 Linux 上,可以使用以下命令显示环境变量:

    echo $<variable-name>

  • 使用 ksh 和 bash shell 时,可以使用以下命令设置环境变量:

    <environment_variable> = <value>

    export <environment_variable>

防火墙安全解决方案情景

下面的示意图显示了当跨防火墙使用时 ACSLS 组件的运行、端口使用及其之间关系的可能情景。需要根据刚才提供的文本(上文)对其进行理解。下面示意图中的 "SSI" 是在通信的客户端上运行的 ACSLS 的网络接口组件。CSI 是在 ACSLS 平台上运行的 ACSLS 的网络接口组件。

注:

需要 ACSLS CSC 开发者工具包 2.3(或更高版本)和新的环境变量来支持这些情景。

仅 ACSLS 服务器端上的防火墙安全

在此示例中,仅在 ACSLS 服务器端 (CSI) 实施了防火墙安全。不需要 CSC 工具包 2.3(或更高版本)和新的环境变量来支持此情景。

图 M-1 仅 ACSLS 服务器端上的防火墙安全

周围的文本说明了 图 M-1 。

在此示例中,动态意味着端口是由 SSI 在启动时从范围 1024-65535 中选择的。端口不是由用户指定的,在 SSI 的每次新执行中(也就是说,从 SSI 运行进程的一个实例到下一个实例)通常也不是同一端口。

CSI 很少查询 SSI 端的端口映射器 111 端口。只有当 SSI 在其请求数据包中提供的返回端口号无法用于(也就是说,导致网络接口故障)将响应数据包发送回 SSI 时,CSI 才会访问该端口。在此情况下,作为一种重试机制,CSI 将从 SSI 端的端口映射器查询要使用的端口,即在 SSI 的程序编号下的端口映射器中注册的端口。

要将 ACSLS 保护在防火墙后,需要进行以下设置:

  • ACSLS:在进行任何更改后都必须重新启动 ACSLS。

    • CSI_TCP_RPCSERVICE = TRUE

    • CSI_UDP_RPCSERVICE = FALSE

      (不过,如果您具有任何使用 UDP 与 ACSLS 进行通信的客户机,必须将此项设置为 TRUE)

    • CSI_USE_PORTMAPPER = ALWAYS(这可以为 IF_DUAL_LAN_NOT_ENABLED)

    • CSI_FIREWALL_SECURE = TRUE

    • CSI_INET_PORT = <1024-65535(但 50003 除外)> 默认值为 30031

  • 客户机 SSI 设置—允许客户机在防火墙后运行的环境变量。

    • CSI_TCP_RPCSERVICE = TRUE

    • CSI_UDP_RPCSERVICE = TRUE(可以为 FALSE)

    • SSI_INET_PORT = 0

      这是 ACSLS CSC 开发者工具包 2.3 中的一个新环境变量,不是此情景所必需的。

    • CSI_HOSTPORT = 0 或 <1024-65535(但 50003 除外)> 默认值为 30031

      如果您使用 ACSLS 服务器上的端口映射器,则不需要此项。如果此项已定义且不为零,则此项必须与 ACSLS 服务器上的 CSI_INET_PORT 匹配。这是 ACSLS CSC 开发者工具包 2.3(或更高版本)中的一个新环境变量,不是此情景所必需的。

将防火墙配置为允许客户机使用由 CSI_INET_PORT(在 ACSLS 服务器上)和 CSI_HOSTPORT(在客户机上)指定的端口向 ACSLS 服务器发送请求。允许客户机访问 ACSLS 服务器上的端口映射器(端口 111)并允许 ACSLS 访问客户机上的端口映射器 (111)。

仅客户端上的防火墙安全

在此示例中,仅在客户端 (SSI) 实施了防火墙安全。需要 CSC 工具包 2.3(或更高版本)和新的环境变量来支持此情景。

图 M-2 仅客户端上的防火墙安全

周围的文本说明了 图 M-2 。

在此示例中,动态意味着端口是由 CSI 在启动时从范围 1024-65535 中选择的,并且端口不是由用户指定的,在 CSI 的各次新执行中(从 CSI 运行进程的一个实例到下一个实例)通常也不是同一端口。

CSI 很少查询 SSI 端的端口映射器 111 端口。只有当 SSI 在其请求数据包中提供的返回端口号无法用于(也就是说,它导致网络接口故障)将响应数据包发送回 SSI 时,CSI 才会访问该端口。在此情况下,作为一种重试机制,CSI 将从 SSI 端的端口映射器查询要使用的端口,即在 SSI 的程序编号下的端口映射器中注册的端口。

要将客户机系统保护在防火墙后,需要进行以下设置:

  • ACSLS:在进行任何更改后都必须重新启动 ACSLS。

    • CSI_TCP_RPCSERVICE = TRUE

    • CSI_UDP_RPCSERVICE = FALSE

      如果您有任何使用 UDP 与 ACSLS 进行通信的客户机,则此项必须为 TRUE。

    • CSI_USE_PORTMAPPER = ALWAYS(这可以为 IF_DUAL_LAN_NOT_ENABLED)

    • CSI_FIREWALL_SECURE = FALSE

    • CSI_INET_PORT = 0

  • 客户机 SSI 设置—允许客户机在防火墙后运行的环境变量。

    • CSI_TCP_RPCSERVICE = TRUE

    • CSI_UDP_RPCSERVICE = FALSE(可以为 TRUE)

    • SSI_INET_PORT = <1024-65535(但 50001 和 50004 除外)>

      这是 ACSLS CSC 开发者工具包 2.3(或更高版本)中的一个新环境变量,不是此情景所必需的。

    • CSI_HOSTPORT = 0 或 <1024-65535(但 50003 除外)> 默认值为 30031

      如果您使用 ACSLS 服务器上的端口映射器,则不需要此项。如果此项已定义且不为零,则此项必须与 ACSLS 服务器上的 CSI_INET_PORT 匹配。这是 ACSLS CSC 开发者工具包 2.3(或更高版本)中的一个新环境变量,不是此情景所必需的。

必须将防火墙配置为允许:

  • 客户机使用由 CSI_INET_PORT(在 ACSLS 服务器上)和 CSI_HOSTPORT(在客户机上)指定的端口向 ACSLS 服务器发送请求。

  • 客户机访问 ACSLS 服务器上的端口映射器(端口 111)。

  • ACSLS 服务器使用由客户机上的 SSI_INET_PORT 指定的端口向客户机发送请求。

  • ACSLS 服务器使用端口 111 查询客户机上的端口映射器。

带端口映射器的 ACSLS 服务器和客户端上的防火墙安全

在此示例中,客户机 (SSI) 和 ACSLS 服务器 (CSI) 都实施了防火墙安全 API。客户机和服务器仍然依赖端口映射器进行端口识别。需要 CSC 工具包 2.3(或更高版本)和新的环境变量来支持此情景。

图 M-3 带端口映射器的 ACSLS 服务器和客户端上的防火墙安全

周围的文本说明了 图 M-3 。

CSI 很少查询 SSI 端的端口映射器 111 端口。只有当 SSI 在其请求数据包中提供的返回端口号无法用于(也就是说,它导致网络接口故障)将响应数据包发送回 SSI 时,CSI 才会访问该端口。在此情况下,作为一种重试机制,CSI 将从 SSI 端的端口映射器查询要使用的端口,即在 SSI 的程序编号下的端口映射器中注册的端口。

对于同时保护 ACSLS 服务器和客户机的防火墙,需要进行以下设置:

  • ACSLS:在进行任何更改后都必须重新启动 ACSLS。

    • CSI_TCP_RPCSERVICE = TRUE

    • CSI_UDP_RPCSERVICE = FALSE

      不过,如果您具有任何使用 UDP 与 ACSLS 进行通信的客户机,必须将此项设置为 TRUE。

    • CSI_USE_PORTMAPPER = ALWAYS(这可以为 IF_DUAL_LAN_NOT_ENABLED)

    • CSI_FIREWALL_SECURE = TRUE

    • CSI_INET_PORT = <1024-65535(但 50003 除外)> 默认值为 30031

  • 客户机 SSI 设置—允许客户机在防火墙后运行的环境变量。

    • CSI_TCP_RPCSERVICE = TRUE

    • CSI_UDP_RPCSERVICE = FALSE

    • SSI_INET_PORT = <1024-65535(但 50001 和 50004 除外)>

    • CSI_HOSTPORT = <1024-65535(但 50003 除外)> 默认值为 30031

      此项必须与 ACSLS 服务器上的 CSI_INET_PORT 匹配。

必须将防火墙配置为允许:

  • 客户机使用由 CSI_INET_PORT(在 ACSLS 服务器上)和 CSI_HOSTPORT(在客户机上)指定的端口向 ACSLS 服务器发送请求。

  • 客户机访问 ACSLS 服务器上的端口映射器(端口 111)。

  • ACSLS 服务器使用由客户机上的 SSI_INET_PORT 指定的端口向客户机发送请求。

  • ACSLS 服务器使用端口 111 查询客户机上的端口映射器。

不带端口映射器的 ACSLS 服务器和客户端上的防火墙安全

在此示例中,客户机 (SSI) 和 ACSLS 服务器 (CSI) 都实施了防火墙安全功能。客户机和服务器都启用了“无端口映射器”功能。需要 CSC 工具包 2.3(或更高版本)和新的环境变量来支持此情景。

图 M-4 不带端口映射器的 ACSLS 服务器和客户端上的防火墙安全

周围的文本说明了 图 M-4 。

为实现最安全的配置,需要进行以下设置:

  • ACSLS:在进行任何更改后都必须重新启动 ACSLS。

    • CSI_TCP_RPCSERVICE = TRUE

    • CSI_UDP_RPCSERVICE = FALSE

    • CSI_USE_PORTMAPPER = NEVER

    • CSI_FIREWALL_SECURE = TRUE

    • CSI_INET_PORT = <1024-65535(但 50003 除外)> 默认值为 30031

  • 客户机 SSI 设置—允许客户机在防火墙后运行的环境变量。

    • CSI_TCP_RPCSERVICE = TRUE

    • CSI_UDP_RPCSERVICE = FALSE

    • SSI_INET_PORT = <1024-65535(但 50001 和 50004 除外)>

    • CSI_HOSTPORT = <1024-65535(但 50003 除外)> 默认值为 30031

      此项必须与 ACSLS 服务器上的 CSI_INET_PORT 匹配。

必须将防火墙配置为允许:

  • 客户机使用由 CSI_INET_PORT(在 ACSLS 服务器上)和 CSI_HOSTPORT(在客户机上)指定的端口向 ACSLS 服务器发送请求。

  • ACSLS 服务器使用由客户机上的 SSI_INET_PORT 指定的端口向客户机发送请求。

打开 ACSLS 服务器上的防火墙安全

要打开防火墙安全选项,必须使用 acsss_config 实用程序设置几个变量。

  1. 以 acsss 身份登录。

  2. 停止 ACSLS 服务器

    注:

    要使新的防火墙安全变量生效,必须关闭 ACSLS 服务器。

    acsss disable

  3. 要运行配置脚本,请输入以下命令:

    acsss_config

    此时将显示 ACSLS 功能配置屏幕。

  4. 选择选项 1—Set CSI tuning variables

    接受所有变量的默认值,但以下项除外。

    1. 在以下提示处将值设置为 TRUE:

      Changes to alter use of the TCP protocol will not take effect until the product is restarted. CSI support for RPC using the TCP protocol is enabled [TRUE].

      变量:CSI_TCP_RPCSERVICE

      打开 TCP 可确保 TCP 协议可供 ACSLS 的客户机将其用于网络通信。ACSLS 的防火墙安全功能仅支持 TCP,因此客户机应使用此协议执行网络通信。

    2. 在以下提示处将值设置为 FALSE:

      Changes to alter the use of the UDP protocol will not take effect until the product is restarted. CSI support for RPC using the UDP protocol is enabled [TRUE].

      变量:CSI_UDP_RPCSERVICE

      注意事项:

      确保没有 ACSLS 客户机依赖于此 UDP 协议。防火墙安全 ACSLS 仅通过 TCP 运行。

      关闭 UDP 可以确保没有客户机将使用此协议访问服务器。这允许您在防火墙上禁止对 ACSLS 平台的所有一般 UDP 访问,仅允许您的环境中明确需要的那些访问。

      请允许客户机访问用于端口映射器访问的 UDP 和 TCP 端口 111,除非那些客户机实施了防火墙安全功能并明确关闭了它们对 ACSLS 端口映射器的查询。

    3. 在以下提示处将值设置为 NEVER:

      Changes to alter use of the port mapper will not take effect until the product is restarted. Enable port mapper: (ALWAYS / NEVER /IF_DUAL_LAN_NOT_ENABLED) [IF_DUAL_LAN_NOT_ENABLED].

      变量:CSI_USE_PORTMAPPER

      NEVER 允许 ACSLS 的客户机禁止对这些客户机平台上的端口映射器的外部访问。

      重要信息:这不允许您关闭对 ACSLS 平台上的端口映射器的外部访问;要关闭该外部访问,ACSLS 的客户机必须在客户机软件组件中采用防火墙安全更改,并且必须在客户机软件组件中打开此功能。

      此功能可以确保 ACSLS 服务器不会对客户机平台上的端口映射器进行任何查询。这允许对客户机进行保护的任何防火墙禁止对端口映射器的访问。

    4. 在以下提示处将值设置为 TRUE:

      Enable CSI to be used behind a firewall (user-defined inbound port) (TRUE/FALSE) [FALSE]:

      变量:CSI_FIREWALL_SECURE

      TRUE 允许您指定 ACSLS 将用于接受入站客户机通信(TCP 连接)的单个端口。此变量仅启用此功能。具体端口将在接下来的变量中指定。

    5. 在以下提示处将值设置为 ACSLS 服务器上的一个可用固定端口:

      Port number used by the CSI to receive incoming ACSLS requests.

      变量:CSI_INET_PORT

      这是 ACSLS CSI 组件将用于接受传入网络连接的端口。请指定 1024-65535 范围内的端口(端口 50003 除外)。

      重要信息:请将防火墙配置为允许此端口上的传入连接。这可以确保仅公开该端口以供希望启动与 ACSLS 的通信的那些外部客户机使用。您可以禁用除了此端口和 UDP/TCP 端口 111 之外所有其他传入端口上的连接(除非客户机已实施了相应功能来消除它们对 ACSLS 端口映射器的查询;在那种情况下,还可以在防火墙上禁用端口 111)。此端口的建议默认值为 30031。大多数系统上的其他进程不大可能(但不是没有可能)使用此端口。有关存在端口冲突时要采取的步骤,请参见故障排除。

  5. 选择 E 以退出 acsss_config。

    您的更改已保存。

  6. 通过输入以下命令重新启动 ACSLS:

    acsss enable

关闭 ACSLS 服务器上的防火墙安全

上文中用于打开防火墙安全功能的某些变量还与关闭该功能有关。要关闭防火墙安全行为,只需要执行以下步骤,但特定的场所可能还希望对其他变量进行修改。

  1. 以 acsss 身份登录。

  2. 停止 ACSLS 服务器

    注:

    要使新的防火墙安全变量生效,需要关闭 ACSLS 服务器。

    acsss disable

  3. 要运行配置脚本,请输入以下命令:

    acsss_config

  4. 选择选项 1—Set CSI tuning variables

    更改您在配置防火墙安全功能时设置的以下值。更改以下变量:

    1. 在以下提示处将值设置为 ALWAYS:

      Changes to alter use of the port mapper will not take effect until the product is restarted.Enable port mapper: (ALWAYS / NEVER /IF_DUAL_LAN_NOT_ENABLED) [IF_DUAL_LAN_NOT_ENABLED].

      变量:CSI_USE_PORTMAPPER

    2. 在以下提示处将值设置为 FALSE:

      Enable CSI to be used behind a firewall (user-defined inbound port) (TRUE/FALSE) [FALSE]:

      变量:CSI_FIREWALL_SECURE

  5. 选择 E 以退出 acsss_config。

    您的更改已保存。

  6. 通过输入以下命令重新启动 ACSLS:

    acsss enable

防火墙安全配置

以下内容要求您具有与配置 ACSLS 位于其后的网络防火墙相关的知识。所有防火墙都是“第三方”软件,并且在正确设置它们以保护您的网络环境方面具有不同的细节。以下内容不是对防火墙安全策略的建议,而只是关于防火墙必须/可以对 ACSLS 产品做什么的一组有用说明。有关其他安全详细信息,请咨询您的系统管理员。

下面是有关为 ACSLS 平台设置防火墙的详细信息列表:

  • 实施用于禁止 UDP 传入和传出连接的总体规则。

  • 实施用于禁止 TCP 传入连接的总体规则(TCP 传出连接必须保持打开)。

  • 实施用于在您为 ACSLS 用途指定的端口上允许传入 TCP 连接的具体规则。重要信息:此端口必须与您在 acsss_config 下配置的端口匹配,否则您在 ACSLS 服务器上将不会收到客户机通信。

如果您的所有客户机都已实施了防火墙安全功能并且不对 ACSLS 平台的端口映射器执行查询,则您已完成工作。如果客户机仍然使用 ACSLS 平台上的该端口映射器,则必须添加以下项:

  • 实施一个具体规则以在众所周知的端口映射器 TCP 和 UDP 端口 111 上允许传入和传出连接。

示例:

下面是为了实施上述所有规则而针对基于 iptables 的防火墙实施的规则示例。

注:

此外,还有为特定防火墙配置的其他规则。
echo " - FWD: Allow all connections OUT and only existing/related IN"
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state \
ESTABLISHED,RELATED -j ACCEPT
# These rules allow client access to the portmapper
$IPTABLES -A FORWARD -p tcp -i $EXTIF --dport 111 -j ACCEPT
$IPTABLES -A FORWARD -p udp -i $EXTIF --dport 111    -j ACCEPT
# These rules allow client access to the ACSLS CSI for network communication
# Note: This assumes that the CSI firewall-secure port was specified as 30031
$IPTABLES -A FORWARD -p tcp -i $EXTIF --dport 30031 -j ACCEPT
# Catch all rule, all other forwarding is denied and logged.
$IPTABLES -A FORWARD -j drop-and-log-it

防火墙安全通信故障排除

对包括 ACSLS 平台和客户机(现在包括中间防火墙)的网络通信接口进行故障排除可能涉及多个步骤。因为在 ACSLS 与其客户机之间的路径中引入了防火墙,所以会有更多的潜在原因导致网络通信故障。此外,有更多组件必须以与其他组件中的设置对应的方式进行配置,如果这些设置不匹配,网络通信将受影响。下面是当您在 ACSLS、其客户机、防火墙上完成所有配置工作并且网络通信无法进行时要检查和尝试的事项列表。

  1. 检查 ACSLS 平台:

    • ACSLS 是否已启动并正在运行?如果没有,请检查 acsss_event.log 以查找可能原因或可能嫌疑项的线索。

    • ACSLS 是否已成功启动了 CSI?如果没有,acsss_event.log 中应当会存在指出了原因的信息性消息。某些配置参数的值不正确或者端口冲突都是可能的原因。

    • acsss_event.log 中是否报告了导致 CSI 失败的端口冲突?如果是,则应当使用 "netstat" 或类似的系统实用程序来告诉您哪些端口在系统上使用,并将 ACSLS 配置为使用可用的端口。记得重新配置防火墙以进行匹配。

    • 是否针对您预期的端口注册了 CSI?使用命令 "rpcinfo -p" 查看端口映射表。CSI 是在程序编号 300031 下注册的。进行检查以确保在该程序编号下注册的端口是您预期的端口(默认端口是 30031,比程序编号少一个零)。

  2. 如果 ACSLS 和 CSI 已启动且正在运行并已正确注册,则接下来的步骤将是检查跨防火墙对 ACSLS 平台的访问:

    • 是否可通过基本 RPC 访问 ACSLS?使用 "rpcinfo -t <hostname> <program-number> <version-number>" 命令向 CSI 发送一个简单的 RPC 请求。(在您的系统上使用 "man rpcinfo" 可获取有关 rpcinfo 命令及其用法的更多信息。)这来自 ACSLS 的防火墙内部的计算机(例如,来自 ACSLS 平台本身)还是来自防火墙外部?如果它从内部可以工作但从外部不工作,则防火墙拦截了您的 ACSLS 请求。再次检查防火墙和 ACSLS 端口的配置。进行检查以确保可以通过防火墙访问端口映射器(如果禁止了对端口映射器的访问,则无法从防火墙外部使用此测试)。

    • 为 ACSLS 配置的端口和为防火墙配置的端口是否匹配?再次检查这些参数。这是网络通信故障的一个可能原因。除了所配置的值以外,请执行上面提到的 "rpcinfo -p" 命令,以确保 CSI 确实使用预期的端口号进行了注册。如果没有,请在 acsss_event.log 中查找关于原因的信息。

    • ACSLS 是否收到了请求但无法将响应发送回去?如果您检查 acsss_event.log 并发现 CSI 报告了许多丢弃的网络数据包或者与网络客户机之间的通信故障,则表明客户机请求已进入但响应无法送出。同样,这表明防火墙对其进行了阻拦。

  3. 如果您的问题仍未得到解决。

    上面解决了要探究的多个层次的事项。如果这些方法没有得到具体答案,则需要执行一些更低层面的检查来查明通信是在何处失败的。最佳方式是使用某个网络数据包探测器工具,例如 Solaris 下的 "snoop"。在基于 Solaris 的系统上使用 "man snoop" 可获取有关 snoop 命令及其用法的更多信息。

    其他通过网络连接的系统上提供了类似的数据包跟踪工具。

    • 要使用此工具,必须从向您显示了数据包已到达何处以及在何处丢失的位置执行数据包探测。这可能同时从防火墙内部和外部进行。

    • 此外,查看数据包数据也会获得信息。如果有任一端允许使用端口映射器,则您可以看到某些 PORTMAP 数据包。

    • 另外,您还应当会看到在 ACSLS 与其客户机之间传递的 RPC 数据包。

    • 最后,查看传输层 TCP 连接可获悉在连接的每端使用的具体端口。这通常是用于查明通信在何处停止的重要信息。

本手册中没有提供有关执行这些操作的更多详细信息,但是您的系统管理员在这方面应该能够提供一些帮助。

常见问题解答

  • 对于 ACSLS,为何需要防火墙安全解决方案?

    使用防火墙安全解决方案,您可以有效地在防火墙后运行 ACSLS,并且可以限制该防火墙上的端口,以便显著增强安全性。

  • ACSLS 的哪些发行版将支持防火墙安全功能?

    只有 ACSLS 7.0.0 和更高版本支持此功能。

  • 如果使用此防火墙安全功能,必须保持打开的最大端口数为多少?

    您必须在其上允许传入网络连接的最大端口数为三:一个用于 ACSLS 网络接口,两个用于端口映射器(UDP 和 TCP 111)。根据公认的行业安全做法,传出端口不受限制。

  • 可以保持打开的最小端口数为多少?

    最小数目为一。如果您的客户机(ISV 软件)也已在其客户机中实施了防火墙安全功能并且不查询位于 ACSLS 平台上的端口映射器,则这是可能的。如果确实如此,则需要为传入连接打开的唯一端口是用户指定的由 ACSLS 网络接口使用的 TCP 端口。

  • 为何该功能不使用端口范围?

    使用端口范围在体系结构方面没有优势,并且还有许多安全缺点。非防火墙安全 ACSLS 使用一个端口范围,该范围包含任意给定平台上可用的完整范围内的动态端口。这可以正确理解为对场所安全的潜在威胁。为了消除该威胁,目标是尽量对此进行限制并且不对 ACSLS 性能造成不利影响。因为 ACSLS 网络接口在任意给定时间仅使用一个传入端口,如果该端口专供 ACSLS 用于 ACSLS 平台,则没有理由将该范围扩展为一个端口以上。

  • 如果我选择的端口与该端口在我的系统上的其他应用冲突,将会如何?

    这是允许用户指定该端口的原因之一。可用的具体端口因客户场所而异。不允许用户使用 0-1023 范围内的已知保留端口之一。默认端口 30031 处于已注册端口的范围内,这使得不大可能(但不是不可能)有其他使用动态端口的应用程序使用该端口。虽然该端口处于已注册端口的范围内,但是没有已注册的应用程序使用,这使得该端口成为一个合理的默认选择。

  • 此功能是否允许我使用防火墙保护 ACSLS 服务器?

    允许,实施此功能后,您的 ACSLS 服务器可以放置在防火墙的可信端,而客户机从另一端(不可信端)或从同一端对其进行访问。

  • 此功能是否允许我使用防火墙保护 ACSLS 客户机(ISV 组件)?

    是的,有可能,但不能独立完成保护。要实现此情景,您的客户机软件组件(ACSLS 的客户机)必须采用防火墙安全功能(已使用 StorageTek ACSLS 客户机系统组件开发者工具包提供了此安全功能)。有关其状态的最新更新,请联系您的客户机软件提供商。

  • 如果希望使用防火墙保护我的客户机,应该怎么办?

    应联系您的客户机软件提供商。他们可以告诉您他们是否在其 CSC(client software component,客户机软件组件)中采取了任何防火墙安全更改?

  • 端口映射器如何?是否可以完全禁止访问端口映射器?

    如果您的客户机已采用了防火墙安全更改,则它们可以允许您关闭客户机对 ACSLS 平台的端口映射器的查询。在这种情况下,您可以在对 ACSLS 平台进行保护的防火墙上禁止对端口映射器的访问。在任何其他情况下,客户机都将依赖 ACSLS 服务器端的端口映射器来帮助它们与 ACSLS 网络接口建立连接,并且端口映射器必须可供它们使用。

  • 为何客户机必须实施某些更改才能使 ACSLS 服务器防火墙关闭对 ACSLS 平台端口映射器的访问?

    因为对 ACSLS 平台执行这些查询的是客户机。如果客户机继续执行这些查询,则 ACSLS 平台必须继续提供端口映射器服务以使这些查询能够成功。

  • 我认为端口映射器不好。为何不完全将其删除?

    端口映射器可以为旧版客户机提供重要服务。完全将其删除将导致那些客户机所依赖的接口失效。简而言之,旧版客户机将可以在不使用新的无端口映射器接口重新编码、重新测试并重新认证的情况下继续工作。在此防火墙安全解决方案中,我们提供了用于删除从 ACSLS 查询客户机端口映射器以及从客户机查询 ACSLS 端口映射器这两项功能的选项,但是我们无法强制客户机软件遵守这一点。因此,必须将端口映射器至少作为一项可选服务保留为可用,直到场所的客户机都已采用防火墙安全功能并且不再使用端口映射器服务为止。

  • 我的某些客户机已采用了防火墙安全功能而另一些未采用。我该如何利用此功能?

    可以将已采用了这些功能的那些客户机保护在其各自的防火墙后。此外,可以在防火墙上限制对端口映射器的已知端口的访问,然后将防火墙配置为仅允许需要端口映射器的那些客户机访问端口映射器。详细信息和能力根据场所中使用的具体防火墙而异。

  • 我认为 RPC 不好。为何不完全将其删除?

    自 ACSLS 首次发行以来,ACSLS 网络接口一直是基于 RPC 的。它已被证明是一种有效、稳定且可靠的机制,在网络通信层提供了各种优点。不过,由于它通常采用端口动态分配并且使用端口映射器,所以对使用 RPC 的平台进行保护可能也更困难。在此防火墙安全解决方案中,这两个方面都已解决,这使得客户能够以受限的方式有效地配置防火墙,从而获得实施防火墙所带来的安全优势。

    此外,从 ACSLS 网络接口中完全删除 RPC 将导致所有当前(旧版)ACSLS 客户机失效,导致它们在不对其 CSC(client software component,客户机软件组件)重新编码、重新测试并重新认证的情况下,无法继续与 ACSLS 进行通信。

  • 防火墙安全功能对 ACSLS 客户机与 ACSLS 服务器之间的网络通信性能和计时有何影响?

    新的防火墙安全功能对性能没有影响。使用防火墙可能会对性能有影响,但是这将取决于每个具体的客户防火墙实施的运行特征。使用对性能的影响可以忽略的防火墙,ACSLS 及其客户机将继续发挥与安装防火墙安全功能之前一样的性能。另外,还可以配置 ACSLS 网络接口容差,以便可以妥善地处理防火墙造成的延迟。

  • 防火墙安全功能对我的其余 ACSLS 操作有何影响?

    安装防火墙安全解决方案不会对其他部分的 ACSLS 操作造成影响。

  • 防火墙安全功能对我的客户机(通过 ACSAPI)使用的 ACSLS 功能有何影响?

    通过 ACSAPI 提供的(以及我们的 ACSLS 客户机目前用来与 ACSLS 进行交互的)整个功能集在防火墙安全功能下将与未安装防火墙之前一样运行。需要特别指出的是,此防火墙安全功能支持访问控制以及已添加到 ACSLS 产品的所有较新功能。此功能将继续支持 ACSAPI 的完整功能。

  • 防火墙安全功能是否可以与 ACSLS HA(High Availability,高可用性)解决方案一起工作?

    防火墙安全功能不会对 HA 的运行造成不利影响。不过,HA 解决方案没有设计为跨防火墙运行(也就是说,让每个 HA 服务器位于防火墙的另一端)。HA 解决方案需要远程访问端口映射器,因此,如果尝试在防火墙的另一端运行每个服务器,则防火墙无法禁止该访问。跨防火墙运行还有其他细节可能会对 HA 设置造成不利影响,强烈建议不要这样做。

    如果 HA 服务器设置在防火墙的同一安全端,则可以为该 HA 服务器集设置防火墙安全功能,位于防火墙另一端的客户机将无法像针对非防火墙安全 HA 解决方案一样以同样的性能与行为跨防火墙与这些服务器进行交互。

  • 此防火墙安全功能是否可以与 StorageTek 软件产品一起工作?

    完全保留了与其他 StorageTek 产品和合作伙伴产品(即与 ACSLS 进行通信的客户机软件组件)之间的互操作能力。那些产品不需要修改即可继续运行,继续与 ACSLS 服务器进行通信,与位于安全防火墙后的或者与那些产品处于同一环境中的 ACSLS 服务器进行通信(目前正是如此)。

  • 其他 StorageTek 软件产品是否具有相同的防火墙安全功能?

    其他 StorageTek 产品不能单纯通过与防火墙安全 ACSLS 在同一环境中使用便可获得防火墙安全优势。每个产品都可以与防火墙安全 ACSLS 一起工作(参见上一问题),但是将那些产品中的每一个置于其各自的防火墙后是特定产品自身必须解决的问题。某些 StorageTek 产品已内置了一些策略,这些策略允许在用来保护这些产品的运行平台的防火墙上实施一些限制。此外,任何充当 ACSLS 的客户机的产品都可以采用对 ACSLS 所做的防火墙安全更改,以及作为 ACSLS CSC 开发者工具包 2.3(或更高版本)的一部分提供的防火墙安全更改。