2 安全安装

本部分概述了安全安装和配置的规划和实现过程,并介绍了 ACSLS 的建议部署拓扑。

了解您的环境

要更好地了解安全需求,必须回答以下问题:

需要保护哪些资源?

ACSLS 管理的关键资源包括磁带库、磁带机和磁带。这些资源需要受到保护,以防受到意外和恶意访问。例如,防止人员在不同的服务器上使用 ACSLS 用户 ID 的其他密码误登录到其他 ACSLS 服务器。

要避免资源被哪些用户访问?

您要避免未经授权的内部和外部用户访问磁带存储资源。

如果对战略性资源的保护失败,将会产生什么后果?

ACSLS 可以在磁带机上挂载磁带。如果用户可以通过数据路径连接到磁带机,则可以读取未加密的磁带数据。

能够同时访问 ACSLS 和磁带库的用户可以装入和弹出磁带库的磁带。

保护 ACSLS 的建议过程

保护 ACSLS 和必需的基础结构组件时,请遵循以下过程以确保 ACSLS 在进行更改后可以继续工作:

  • 安装 ACSLS。

  • 检验 ACSLS 是否可正常工作。包括配置和审计磁带库、挂载和卸载磁带、装入和弹出磁带以及备份和恢复数据库。

  • 实施更改以提高安全性。

  • 检验 ACSLS 是否仍可正常工作。

保护 ACSLS Internet 通信

本部分介绍了部署 ACSLS 以保护 Internet 访问的建议。

保护企业防火墙后面的 ACSLS 和磁带库

ACSLS 及其支持的磁带库应部署在企业防火墙后面。如果远程工作人员需要登录到 ACSLS 服务器,他们可以通过 VPN 进行访问。

注意:

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

ACSLS 防火墙安全选项

如果通过防火墙将使用 ACSLS 来挂载磁带和管理磁带库的客户机应用程序与 ACSLS 隔开,我们建议启用防火墙安全选项。即使未通过防火墙将客户机应用程序与 ACSLS 隔开,实施防火墙安全选项也可提供附加的 ACSLS 安全性(通过限制用于在 ACSLS 及其客户机应用程序之间通信的端口),如下所示。因此,CSI_FIREWALL_SECURE 静态变量在 ACSLS 8.1 和更高发行版中默认为 TRUE。

周围的文本说明了 s403_009.jpg。

有关详细信息,请参见《ACSLS 管理员指南》中的“防火墙安全选项”附录。

用于 ACSLS 通信的以太网端口

  • ACSLS 服务器上可使用以下端口。确保将任何防火墙配置为允许与这些端口进行通信。这包括由 Solaris 上的 ipfilter 或 Linux 上的 iptables 实施的防火墙。

    • 22 双向端口-用于 ssh 访问。

    • 111 端口映射器,除非已禁用端口映射器。

    • 115 端口,用于 SFTP(安全文件传输协议)。

    • 161 默认端口,用于 ACSLS SNMP 代理-get/set/walk。

    • 162 默认端口,用于 ACSLS SNMP 代理-陷阱。

      注意:

      ACSLS SNMP 代理使用的端口可由以下命令进行配置:AcslsAgtdSnmpConf [ -p port ] [-t trap port] [-d]-d 选项用于显示当前设置。更改端口设置后,必须使用命令 agentRegister 重新启动代理。
    • 5432 默认端口,用于从 ACSLS 到 PostgreSQL 数据库的内部通信(acsss 用户 ID 对应的 PGPORT 环境变量)。

      如果已获取端口 5432,则将使用下一个可用的较高端口号。

      注意:

      端口 5432 仅需本地主机 (127.0.0.1) 访问。
    • 7001 和 7002-由 WebLogic 和 ACSLS GUI 使用。

    • 30031 或 ACSLS CSI 的侦听端口,由 CSI_INET_PORT 设置。

    • 50003 端口用于从 ACSLS GUI 和 Java 组件到旧版 ACSLS 处理的内部通信。此端口不可配置。

  • 要让客户机应用程序通过 ACSAPI 与 ACSLS 进行通信,必须开启以下端口:

    • 客户机应用程序必须能够与 ACSLS CSI 的侦听端口进行通信。该端口默认为 30031,由 CSI_INET_PORT 静态变量进行设置。

      您可以从 Unix shell 中使用以下命令来搜索哪些端口正由 ACSLS 用来侦听来自 ACSAPI 客户机的请求:

      rpcinfo -p | egrep "300031 | 536871166"

      显示的最后一个字段中将列出端口 ID。

    • ACSAPI 客户机(例如,NetBackup 或 SAM-QFS 服务器)可使用 SSI_INET_PORT 环境变量设置其固定传入端口。指定 1024-65535 范围内的端口(端口 50001 和 50004 除外)。ACSLS 服务器必须能够与此端口通信。

      注意:

      在 ACSAPI 客户机服务器上,端口 50001 和 50004 用于 AF_INET 域 IPC 与小型事件记录程序的通信,以及从客户机应用程序到 SSI 的通信。

    有关客户机应用程序与 ACSLS 之间通信的更多详细信息,请参见《ACSLS 管理员指南》中的“防火墙安全选项”附录。

  • 如果安装了 XAPI 组件,则 XAPI 服务器将使用固定的侦听端口接收来自 ELS 客户机的传入 TCP 请求。XAPI 侦听端口是由 XAPI_PORT 静态变量定义的。XAPI_PORT 默认为 50020。它必须介于 1024 和 65535 之间,并且不能与 ACSLS 或其他应用程序使用的任何其他端口冲突。

    有关 XAPI_PORT 的更多详细信息,请参见《ACSLS 管理员指南》中的“XAPI 客户机接口”附录。该附录还提供了有关如何显示和设置 XAPI_PORT 静态变量的详细信息。

  • SL8500 或 SL3000 磁带库上必须开启的端口:

    ACSLS 在 SL8500 或 SL3000 磁带库的 2A 和 2B 以太网连接上与这些端口进行通信。如果从 ACSLS 到这些端口的通信被阻止,则 ACSLS 将无法管理磁带库。

    • 50001-用于 ACSLS 和磁带库之间的所有正常通信

    • 50002-供 ACSLS HA 用来确定备用 HA 节点是否能够在故障转移到备用节点前与磁带库进行通信

配置在 ACSLS 服务器上运行的防火墙

除了外部防火墙,还可以通过 Solaris 上的 ipfilter 或 Linux 上的 iptables 在 ACSLS 服务器上实施防火墙保护。下面介绍如何管理这些在 ACSLS 服务器上运行的防火墙。

  • 管理 Solaris 上的 ipfilter:

    有关详细信息,请参阅 ipf 和 ipfilter 的手册页。

    • ipfilter 防火墙由 "root" 使用以下命令启用(禁用):

      svcadm enable ipfilter (svcadm disable ipfilter)

    • 了解 ipfilter 的当前状态:

      svcs ipfilter

    • 以下文件中定义了防火墙策略:/etc/ipf/ipf.conf

      要允许在本地主机上的组件之间(例如,ACSLS 和 WebLogic 之间或 GUI 和 ACSLS 数据库之间)自由通信,请包含如下语句:

      pass in quick from 127.0.0.1 to 127.0.0.1

      pass in quick from 127.0.0.1 to all

      需要定义策略以允许访问 ACSLS 所需的所有端口。例如,要包含允许基于 Web 的远程浏览器访问 ACSLS GUI 的策略,需要开启端口 7001 和 7002。

      pass in quick from any to any port = 7001

      pass in quick from any to any port = 7002

      在搜索 ACSLS 使用哪些端口来侦听来自 ACSAPI 客户机的请求之后,为这些端口中的每个端口添加 "pass in quick" 语句。

      可能需要为 RPC 端口映射器端口 111 包含 "pass in quick" 语句。

      建议规则集中的最后一条语句 "block in from any" 指出,除非先前的语句中特别允许,否则不应当有通往主机的通信。

  • 管理 Linux 上的 iptables:

    • iptables 防火墙由 "root" 使用以下命令启用(禁用):

      service iptables start (service iptables stop)

    • 检查 iptables 的状态:

      service iptables status

    • iptables 对应的策略文件是 /etc/sysconfig/iptables:

      需要定义策略以允许访问 ACSLS 所需的所有端口。例如,要包含允许通过 http/https 远程访问 ACSLS GUI 的策略,应该使用类似以下的语句更新该文件,以包含端口 7001 和 7002 的例外情况:

      -A input -p tcp --dport 7001 -j ACCEPT

      -A input -p tcp --dport 7002 -j ACCEPT

      在搜索 ACSLS 使用哪些端口来侦听来自 ACSAPI 客户机的请求之后,需要将这些端口中的每个端口的例外情况添加到 iptables 策略文件。可能需要为 RPC 端口映射器端口 111 包含例外情况语句。

安装和配置 Solaris

本部分介绍如何安全地安装和配置 Solaris。

建议包括:

  • 向 OS 以及随 OS 安装的服务应用所有重要的安全修补程序。请有选择地应用这些修补程序,因为应用所有可用更新可能会安装尚未针对 ACSLS 和 ACSLS HA 测试的新功能甚至是新的 OS 发行版。

  • 禁用 telnet 和 rlogin。改用 ssh。还要禁用 ftp,改用 sftp。

    通过以 root 身份发出以下命令来禁用 telnet、rlogin 和 ftp 服务。

    查看所有服务:

    svcs

    禁用 telnet、rlogin 和 ftp:

    svcadm disable telnet

    svcadm disable rlogin

    svcadm disable ftp

  • 请勿禁用 ssh。您想要用户使用 ssh 而不是 telnet 或 rlogin 远程登录到 ACSLS。同样,请勿禁用 sftp。

  • ACSLS 需要 rpc-bind。请勿禁用它。

    如果使用 "Secure by Default" 选项安装了 Solaris,则需要更改 rpc-bind 的网络配置属性以允许 ACSAPI 客户机将请求发送到 ACSLS。

    有关详细信息,请参阅 ACSLS 安装手册的 "Installing ACSLS on Solaris" 一章中的 "Installing Solaris" 一节。

  • 需要开启 ACSLS 服务器上的一些以太网端口,才能与 ACSLS 进行通信。客户机应用程序使用特定的以太网端口与 ACSLS 进行通信,而 ACSLS 与磁带库上的特定端口进行通信。有关需要用于供 ACSLS 通信的端口,请参见用于 ACSLS 通信的以太网端口。在 ACSLS 服务器上,请确保将 ipfilter 配置为允许与 ACSLS 所用的端口进行通信。

确定 Solaris 审计策略。《Oracle Solaris 管理:安全服务》中的“在 Oracle Solaris 中审计”部分可帮助您规划要审计的事件、审计日志应保存的位置以及如何查看日志。

安装和配置 Linux

安全地安装和配置 Linux 的建议:

  • 向 OS 以及随 OS 安装的服务应用所有重要的安全修补程序。请有选择地应用这些修补程序,因为应用所有可用更新可能会安装尚未针对 ACSLS 和 ACSLS HA 测试的新功能甚至是新的 OS 发行版。

  • 确保未安装 telnet 和 rlogin 或禁用 telnet 和 rlogin。改用 ssh。

    同样,请确保未安装 ftp 或禁用 ftp,并改用 sftp。

    要查看所有服务,请以 root 身份登录并运行以下命令:

    service –-status-all

  • 要永久删除服务,请使用:

    svccfg delete -f service-name

  • 请勿禁用 ssh。您想要用户使用 ssh 而不是 telnet 或 rlogin 远程登录到 ACSLS。同样,请勿禁用 sftp。

  • 必须启用网络服务(特别是 rpcbind),以便允许 ACSLS 客户机通信。

    在 Linux 上启动 rpc 时,请使用 –i 标志。

  • 需要开启 ACSLS 服务器上的一些以太网端口,才能与 ACSLS 进行通信。客户机应用程序使用特定的以太网端口与 ACSLS 进行通信,而 ACSLS 与磁带库上的特定端口进行通信。有关需要用于供 ACSLS 通信的端口,请参见用于 ACSLS 通信的以太网端口。在 ACSLS 服务器上,请确保将 iptables 配置为允许与 ACSLS 所用的端口进行通信。

审计 Linux 安全性

确定 Linux 审计策略。《Oracle Linux: Security Guide for Release 6》中的 "Configuring and Using Auditing" 部分可帮助您规划要审计的事件、审计日志应保存的位置以及如何查看日志。

用于审计 Linux 安全性的有用日志和命令包括:

  • 以 root 身份查看 var/log/secure 以了解登录尝试和其他访问消息的历史记录。

  • 命令 "last | more" 提供登录的用户的历史记录。

  • /var/log/audit/audit.log.[0-9] 保存了 SE Linux 拒绝的访问尝试的日志。必须成为 root 用户才能查看这些内容。

SELinux 安全性

ACSLS 8.4 设计为在可选的安全性增强型 Linux 环境中运行。SELinux 提供对文件、目录和其他系统资源的访问控制,超越了 Unix 环境中作为标准的传统保护。除了 owner-group-public 权限访问,SELinux 还包括基于用户角色、域和上下文的访问控制。对所有系统资源实施访问控制的代理是 Linux 内核。

Linux 系统上的 root 用户可以通过 setenforce 命令将实施状态设置为开启或关闭。

setenforce [Enforcing | Permissive | 1 | 0 ]

使用 Enforcing 或 1 可将 SELinux 置于实施模式。使用 Permissive 或 0 可将 SELinux 置于许可模式

要查看当前的系统实施状态,请使用命令 getenforce

安装 ACSLS 时,内核中会装入三个 SELinux 策略模块:allowPostgr、acsdb 和 acsdb1。SELinux 实施方案有效时,这些模块提供 ACSLS 访问自身数据库和其他系统资源所需的定义和实施方案例外情况。安装这些模块后,您应当能够运行常规 ACSLS 操作,包括数据库操作(例如 bdb.acsss、rdb.acsss、db_export.sh 和 db_import.sh),无需禁用 SELinux 实施方案。

有关更多信息,请参阅《StorageTek ACSLS 8.4 管理员指南》的“故障排除”附录中有关 SELinux 的部分。

安装和配置 ACSLS

本部分说明如何安全地安装 ACSLS。

执行标准 ACSLS 安装

执行标准 ACSLS 安装可确保您具备所有必需的组件。

如果要从以前的 ACSLS 发行版迁移到较后的 ACSLS 发行版,请查看动态变量和静态变量的设置,了解是否要使用更多的安全选项,特别是有关防火墙安全选项。

对 ACSLS 用户 ID 使用强密码

ACSLS 需要 ACSLS 用户 ID:acsss、acssa 和 acsdb。对于这些 ID,请选择强密码,并定期更改密码。

限定对 ACSLS 文件的访问

ACSLS 通常将对 ACSLS 文件的访问仅限定于 acsls 组,其中包括 acsss、acssa、acsdb 和 root 用户 ID。某些数据库和诊断文件仅可由单个 acsls 用户 ID 访问。ACSLS 运行时采用的 umask 设置为 027。

ACSLS 文件不应设置为全局可读或全局可写。但是,限制默认安装设置以外的访问可能会造成 ACSLS 运行失败。

对于三个 ACSLS 文件,将 "root" 设置为有效用户 ID

安装脚本建议客户必须在 /export/home/ACSSS 文件系统的三个可执行文件中设置 "root" 的有效用户 ID (setuid):

  • acsss(该二进制文件必须以 "root" 特权运行,因为它用于启动和停止 ACSLS 应用程序所需的系统服务。)

  • db_command(该二进制文件可启动和停止用于控制和维护 ACSLS 数据库的 PostgreSQL 数据库引擎。)

  • get_diags(该二进制文件由客户调用以收集全面的系统诊断信息,服务支持调用的上下文中可能需要这些信息。)

使用 pkgadd 安装 ACSLS 期间,系统会提示客户:Do you want to install these as setuid/setgid files?(您是否要安装这些文件使之成为 setuid/setgid 文件?)针对提示回答 y,将允许 acsls 组中的用户运行这三个命令,即使实用程序执行某些要求 root 特权的系统操作也是如此。

查看 ACSLS 静态和动态变量的设置

ACSLS 静态和动态变量控制许多 ACSLS 功能的行为。使用 acsss_config 实用程序设置这些变量。本文档讨论了这些变量中许多变量的安全设置。acsss_config 显示某一变量的选项时,以问号 (?) 形式作答将会显示该变量的详细解释。《ACSLS 管理员指南》的“设置控制 ACSLS 行为的变量”一章中也提供了此信息。

配置 WebLogic

ACSLS 8.1 和更高发行版使用 WebLogic 作为其 Web 服务器。WebLogic 随 ACSLS 一起安装。

有关保护 WebLogic 服务器以及 WebLogic 审计迹可能性的选项,请参阅《Oracle Fusion Middleware Understanding Security for Oracle WebLogic Server 11g Release 1 (10.3.6)》。

使用 ACSLS userAdmin.sh 实用程序创建和维护 ACSLS GUI 用户

userAdmin.sh 菜单驱动的实用程序用于管理 ACSLS GUI 用户密码。您可以添加用户、删除用户、列出用户以及更改用户密码。必须运行 WebLogic 才能使用该实用程序。如果 WebLogic 尚未运行,该实用程序会启动 WebLogic 并确认联机后才显示菜单。

userAdmin.sh 实用程序必须由 root 运行,并需要 acsls_admin 验证。ACSLS 安装期间将配置 acsls_admin 用户帐户。

使用 ACSLS GUI

要使用 ACSLS GUI,您需要安装最新的 JRE 版本,并通过浏览器访问 ACSLS GUI。

在 GUI 客户机系统上安装最新的 JRE 版本

确保在系统上安装了 Java Runtime Environment (JRE) 的最新版本,系统将使用 ACSLS GUI 访问 ACSLS。

访问 ACSLS GUI

打开浏览器,按照以下格式输入包含服务器主机名或 IP 地址的 URL:

https://myAcslsHostName.myDomainName:7002/SlimGUI/faces/Slim.jsphttps://127.99.99.99:7002/SlimGUI/faces/Slim.jsp

最好使用主机的全限定主机名或 IP 地址。如果 WebLogic 不能完全解析 URL,则一些页面(包括 ACSLS 帮助页面)可能不会正确显示。

如果同时使用 http 和端口 7001,则 WebLogic 将自动将您重新路由到端口 7002 上的 https。

由于 WebLogic 使用安全 https 协议,因此您的浏览器可能会向您发出警告,指出站点安全证书尚未注册,因而不可信。如果您确信该 URL 是本地 ACSLS 计算机,则可以放心地继续执行操作。此时,您应当看到登录屏幕。

使用 ACSLS GUI

访问 WebLogic 中的 AcslsDomain 时使用安全协议 https。该协议使用私钥和数字证书在浏览器与服务器之间提供加密的通信。下面是用于获取数字证书的选项:

ACSLS 演示证书

ACSLS 附带了一个所谓的“演示”证书。这提供了最低级别的加密安全性,使客户不需要执行进一步的配置步骤即可开始使用 ACSLS GUI。如果客户与 ACSLS 磁带库之间的交互完全在安全的内联网内进行,则此演示认证方法通常就足够了。不过,此方法采用一个 512 位加密密钥,某些浏览器上不支持此密钥,特别是 Internet Explorer 和 FireFox 版本 39 及更高版本。

配置自签名数字证书

《ACSLS 安装指南》为 ACSLS 管理员提供了配置长度为 2048 位的自签名数字证书的分步方法。在名为“配置 SSL 加密密钥”的部分中,此方法提供了一个在所有浏览器上都受支持的证书。访问使用自签名证书的 https 站点的用户会被劝告不要继续访问该站点,除非他们自己知道该 Web 资源是一个可信站点。在 ACSLS 用户和磁带库控制服务器的上下文中,此信任级别通常很好理解,在大多数情况下,站点不需要使用第三方签名验证来证明其完整性。

由第三方签名机构签名的数字证书

每个客户站点自行决定它们是否需要由第三方签名机构(例如 Verisign 或 Entrust.net)提供证书验证。Oracle 联机文档《Configuring Identity and Trust》中介绍了用于生成此类签名数字证书的过程,该文档位于:

http://docs.oracle.com/cd/E13222_01/wls/docs92/secmanage/identity_trust.html

安装 ACSLS HA

如果您要使用 ACSLS 高可用性解决方案,请按照《ACSLS-HA Cluster: Installation, Configuration, and Operations》中的说明执行操作。