在JEE环境中强化AEM Forms

了解各种安全强化设置,以增强在企业内部网中运行的JEE上的AEM Forms的安全性。

本文介绍了为保护在JEE上运行AEM Forms的服务器而提供的建议和最佳实践。 这不是适用于您的操作系统和应用程序服务器的全面的主机强化文档。 相反,本文介绍了您应该实施的各种安全强化设置,以增强在公司内部网内运行的JEE上AEM Forms的安全性。 但是,为了确保JEE应用程序服务器上的AEM Forms保持安全,您还应实施安全监控、检测和响应过程。

本文介绍了在安装和配置生命周期的以下阶段应用的硬化技术:

  • 安装前: 在JEE上安装AEM Forms之前,请使用这些技术。
  • 安装: 在JEE上的AEM Forms安装过程中使用这些技术。
  • 安装后: 安装后使用这些技术,之后会定期使用。

AEM Forms on JEE是高度可自定义的,并且可以在许多不同的环境中工作。 某些建议可能不符合您组织的需求。

预安装

在JEE上安装AEM Forms之前,您可以将安全解决方案应用到网络层和操作系统。 本节介绍了一些问题,并就减少这些领域的安全漏洞提出建议。

在UNIX和Linux上安装和配置

您不应在JEE上使用根Shell安装或配置AEM Forms。 默认情况下,文件安装在/opt目录下,执行安装的用户需要在/opt目录下拥有所有文件权限。 或者,也可以在单个用户的/user目录下执行安装,在该目录下,他们已经拥有所有文件权限。

在Windows上安装和配置

如果您在JBoss的JEE上使用统包方法安装AEM Forms,或者您正在安装PDF生成器,则您应以管理员身份在Windows上执行安装。 此外,在具有本机应用程序支持的Windows上安装PDF生成器时,必须与安装Microsoft Office的Windows用户一样运行安装。 有关安装权限的更多信息,请参阅在JEE上安装和部署AEM Forms文档,以了解您的应用程序服务器。

网络层安全性

网络安全漏洞是任何面向Internet或面向Intranet的应用程序服务器的首要威胁之一。 本节介绍如何针对这些漏洞强化网络上的主机。 它解决了网络分段、传输控制协议/互联网协议(TCP/IP)堆栈强化以及防火墙用于主机保护的问题。

下表描述了减少网络安全漏洞的常见过程。

带有 OS 剪贴板

描述

隔离区(DMZ)

在隔离区(DMZ)内部署表单服务器。 分段应至少存在于两个级别中,应用程序服务器用于在JEE上运行AEM Forms,位于内部防火墙之后。 将外部网络与包含Web服务器的DMZ分隔开,Web服务器又必须与内部网络分隔开。 使用防火墙来实现分层。 对通过每个网络层的流量进行分类和控制,以确保仅允许绝对最小的所需数据。

专用IP地址

在AEM Forms应用程序服务器上将网络地址转换(NAT)与RFC 1918专用IP地址结合使用。 分配专用IP地址(10.0.0.0/8、172.16.0.0/12和192.168.0.0/16),使攻击者更难通过Internet路由NAT内部主机与NAT内部主机之间的通信。

防火墙

使用以下标准选择防火墙解决方案:

  • 实施支持代理服务器和/或状态检查的防火墙,而不是简单的数据包过滤解决方案。

  • 使用支持拒绝除明确允许的安全范例之外的所有服务的防火墙。

  • 实施双宿主或多宿主的防火墙解决方案。 此架构可提供最高级别的安全性,并有助于防止未经授权的用户绕过防火墙安全性。

数据库端口

请勿对数据库使用默认监听端口(MySQL - 3306、Oracle- 1521、MS SQL - 1433)。 有关更改数据库端口的信息,请参阅数据库文档。

使用其他数据库端口会影响JEE上的整个AEM Forms配置。 如果更改默认端口,则必须在其他配置区域(例如JEE上的AEM Forms的数据源)中进行相应的修改。

有关在JEE上的AEM Forms中配置数据源的信息,请参阅AEM Forms用户指南中的在JEE上安装和升级AEM Forms或在JEE上升级到AEM Forms以获取应用程序服务器。

操作系统安全性

下表描述了在操作系统中发现的一些尽可能减少安全漏洞的潜在方法。

带有 OS 剪贴板

描述

安全修补程序

如果供应商安全补丁和升级未及时应用,则未经授权的用户可能获得对应用程序服务器的访问权,这种风险增加。 在将安全修补程序应用到生产服务器之前,请先测试这些修补程序。

此外,还应创建策略和程序,以定期检查和安装修补程序。

病毒防护软件

病毒扫描程序可以通过扫描签名或监视异常行为来识别受感染的文件。 扫描程序将其病毒签名保留在文件中,该文件通常存储在本地硬盘上。 由于经常发现新病毒,因此您应该经常更新此文件,以便病毒扫描程序识别所有当前病毒。

网络时间协议(NTP)

要进行法证分析,请在表单服务器上保留准确的时间。 使用NTP来同步所有直接连接到Internet的系统上的时间。

有关操作系统的其他安全信息,请参阅"操作系统安全信息"

安装

本节介绍在AEM Forms安装过程中可用于减少安全漏洞的技术。 在某些情况下,这些技术会使用安装过程中包含的选项。 下表介绍了这些技术。

带有 OS 剪贴板

描述

权限

使用安装软件所需的最少权限数。 使用“管理员”组中未包含的帐户登录到您的计算机。 在Windows上,您可以使用“运行方式”命令在JEE安装程序上以管理用户身份运行AEM Forms。 在UNIX和Linux系统上,使用sudo之类的命令来安装软件。

软件源

请勿在JEE上从不受信任的源下载或运行AEM Forms。

恶意程序可能包含以多种方式违反安全的代码,包括数据窃取、修改和删除以及拒绝服务。 在JEE上从AdobeDVD或仅从可信来源安装AEM Forms。

磁盘分区

将AEM Forms置于JEE上的专用磁盘分区上。 磁盘分段是一个过程,它会将服务器上的特定数据保留在单独的物理磁盘上,以增强安全性。 以这种方式安排数据可降低目录遍历攻击的风险。 计划创建一个与系统分区分开的分区,您可以在JEE内容目录上安装AEM Forms。 (在Windows上,系统分区包含system32目录或引导分区。)

组件

评估现有服务,并禁用或卸载任何不需要的服务。 请勿安装不必要的组件和服务。

应用程序服务器的默认安装可能包含您不需要的服务。 您应在部署之前禁用所有不必要的服务,以最大限度地减少攻击的入口点。 例如,在JBoss上,您可以在META-INF/jboss-service.xml描述符文件中注释掉不必要的服务。

跨域策略文件

服务器上存在crossdomain.xml文件可能会立即削弱该服务器。 建议您尽可能限制域列表。 使用指南(已弃用)时,请勿将开发期间使用的crossdomain.xml文件放入生产中。 对于使用Web服务的指南,如果服务位于提供该指南的同一服务器上,则根本不需要crossdomain.xml文件。 但是,如果服务位于另一台服务器上,或者如果涉及群集,则需要存在crossdomain.xml文件。 有关crossdomain.xml文件的更多信息,请参阅https://kb2.adobe.com/cps/142/tn_14213.html

操作系统安全设置

如果需要在Solaris平台上使用192位或256位XML加密,请确保安装pkcs11_softtoken_extra.so而不是pkcs11_softtoken.so

安装后步骤

在JEE上成功安装AEM Forms后,务必从安全角度定期维护环境。

以下部分详细介绍为保护已部署的表单服务器而建议执行的不同任务。

AEM Forms安全

以下推荐设置适用于管理Web应用程序以外的JEE服务器上的AEM Forms。 要降低服务器的安全风险,请在JEE上安装AEM Forms后立即应用这些设置。

安全修补程序

如果供应商安全补丁和升级未及时应用,则未经授权的用户可能会获得对应用程序服务器的访问权限,这种风险会增加。 在将安全修补程序应用到生产服务器之前,先测试这些修补程序,以确保应用程序的兼容性和可用性。 此外,还应创建策略和程序,以定期检查和安装修补程序。 AEM Forms on JEE更新位于企业产品下载网站上。

服务帐户(仅Windows上的JBoss统包)

AEM Forms on JEE默认使用LocalSystem帐户安装服务。 内置的LocalSystem用户帐户具有高级别的可访问性;它属于管理员组。 如果工作进程标识作为LocalSystem用户帐户运行,则该工作进程拥有对整个系统的完全访问权限。

要使用特定的非管理帐户运行部署了JEE上的AEM Forms的应用程序服务器,请按照以下说明操作:

  1. 在Microsoft管理控制台(MMC)中,为表单服务器服务创建本地用户以登录为:

    • 选择​用户无法更改密码
    • 在​成员​选项卡上,确保列出​用户​组。
    注意

    无法更改PDF生成器的此设置。

  2. 选择​开始 > 设置 > 管理工具 > 服务

  3. 双击JEE上的JBoss for AEM Forms并停止服务。

  4. 在​登录​选项卡上,选择​此帐户,浏览您创建的用户帐户,然后输入该帐户的密码。

  5. 在MMC中,打开​本地安全设置,然后选择​本地策略 > 用户权限分配

  6. 将以下权限分配给表单服务器在下运行的用户帐户:

    • 通过终端服务拒绝登录
    • 拒绝本地登录
    • 以服务身份登录(应已设置)
  7. 为新用户帐户授予对以下目录的修改权限:

    • 全局文档存储(GDS)目录:GDS目录的位置在AEM Forms安装过程中手动配置。如果位置设置在安装期间保持为空,则位置默认为[JBoss root]/server/[type]/svcnative/DocumentStorage应用程序服务器安装下的目录
    • CRX-Repository目录:默认位置为 [AEM-Forms-installation-location]\crx-repository
    • AEM Forms临时目录:
      • (Windows)在环境变量中设置的TMP或TEMP路径
      • (AIX、Linux或Solaris)登录用户的主目录
        在基于UNIX的系统上,非根用户可以使用以下目录作为临时目录:
      • (Linux)/var/tmp或/usr/tmp
      • (AIX)/tmp或/usr/tmp
      • (Solaris)/var/tmp或/usr/tmp
  8. 为以下目录授予新的用户帐户写入权限:

    • [JBoss-directory]\standalone\deployment
    • [JBoss-directory]\standalone\
    • [JBoss-directory]\bin\
    注意

    JBoss应用程序服务器的默认安装位置:

    • Windows:C:\Adobe\Adobe_Experience_Manager_Forms\jboss
    • Linux:/opt/jboss/
  9. 启动应用程序服务器。

禁用Configuration Manager引导Servlet

配置管理器使用部署在应用程序服务器上的servlet在JEE数据库上执行AEM Forms的引导。 由于配置管理器在配置完成之前访问此servlet,因此对授权用户的访问尚未获得安全,并且在您成功使用配置管理器在JEE上配置AEM Forms后,应该禁用此Servlet。

  1. 解压缩adobe-livecycle-[appserver].ear文件。

  2. 打开META-INF/application.xml文件。

  3. 搜索adobe-bootstrapper.war部分:

    <!-- bootstrapper start --> 
    <module id="WebApp_adobe_bootstrapper"> 
        <web> 
            <web-uri>adobe-bootstrapper.war</web-uri> 
            <context-root>/adobe-bootstrapper</context-root> 
        </web> 
    </module> 
    <module id="WebApp_adobe_lcm_bootstrapper_redirector"> 
        <web> 
            <web-uri>adobe-lcm-bootstrapper-redirector.war</web-uri> 
            <context-root>/adobe-lcm-bootstrapper</context-root> 
        </web> 
    </module> 
    <!-- bootstrapper end-->
    
  4. 停止AEM Forms服务器。

  5. 注释掉adobe-bootstrapper.war和adobe-lcm-bootstrapper-redirectory。 战争模块如下:

    <!-- bootstrapper start --> 
    <!-- 
    <module id="WebApp_adobe_bootstrapper"> 
        <web> 
            <web-uri>adobe-bootstrapper.war</web-uri> 
            <context-root>/adobe-bootstrapper</context-root> 
        </web> 
    </module> 
    <module id="WebApp_adobe_lcm_bootstrapper_redirector"> 
        <web> 
            <web-uri>adobe-lcm-bootstrapper-redirector.war</web-uri> 
            <context-root>/adobe-lcm-bootstrapper</context-root> 
        </web> 
    </module> 
    --> 
    <!-- bootstrapper end-->
    
  6. 保存并关闭META-INF/application.xml文件。

  7. 压缩EAR文件,并将其重新部署到应用程序服务器。

  8. 启动AEM Forms服务器。

  9. 在浏览器中键入以下URL以测试更改并确保其不再有效。

    https://<localhost>:<port>/adobe-bootstrapper/bootstrap

锁定对信任存储的远程访问

配置管理器允许您将Acrobat Reader DC扩展凭据上传到JEE信任存储上的AEM Forms。 这意味着,默认情况下已启用通过远程协议(SOAP和EJB)访问信任存储凭据服务的功能。 在您使用配置管理器上传权限凭据后或者如果您决定稍后使用管理控制台来管理凭据,则不再需要此访问。

您可以按照禁用对服务的非基本远程访问部分中的步骤,禁用对所有信任存储服务的远程访问。

禁用所有非必需的匿名访问

某些表单服务器服务具有可由匿名调用者调用的操作。 如果不需要匿名访问这些服务,请按照禁用对服务的非必要匿名访问中的步骤禁用它。

更改默认管理员密码

安装JEE上的AEM Forms时,会为用户Super Administrator/login-id Administrator配置一个默认用户帐户,其默认密码为​password。 您应使用配置管理器立即更改此密码。

  1. 在Web浏览器中键入以下URL:

    https://[host name]:[port]/adminui
    

    默认端口号为以下端口之一:

    JBoss: 8080

    WebLogic服务器: 7001

    WebSphere: 9080。

  2. 在​用户名​字段中,键入administrator,在​密码​字段中,键入password

  3. 单击​设置 > 用户管理 > 用户和组

  4. 在​Find​字段中键入administrator,然后单击​Find

  5. 从用户列表中单击​Super Administrator

  6. 单击“编辑用户”页上的​更改密码

  7. 指定新密码,然后单击​Save

此外,还建议通过执行以下步骤来更改CRX管理员的默认密码:

  1. 使用默认的用户名/密码登录https://[server]:[port]/lc/libs/granite/security/content/useradmin.html
  2. 在搜索字段中键入Administrator ,然后单击​Go
  3. 从搜索结果中选择​Administrator ,然后单击用户界面右下方的​编辑​图标。
  4. 在​New Password​字段中指定新密码,在​Your Password​字段中指定旧密码。
  5. 单击用户界面右下方的保存图标。

禁用WSDL生成

Web服务定义语言(WSDL)生成应仅为开发环境启用,开发人员在开发环境中使用WSDL生成来构建其客户端应用程序。 可以选择在生产环境中禁用WSDL生成,以避免公开服务的内部详细信息。

  1. 在Web浏览器中键入以下URL:

    https://[host name]:[port]/adminui
    
  2. 单击​设置>核心系统设置>配置

  3. 取消选择​启用WSDL​并单击​确定

应用程序服务器安全性

下表介绍了在安装JEE应用程序上的AEM Forms后保护应用程序服务器的一些技术。

带有 OS 剪贴板

描述

应用程序服务器管理控制台

在应用程序服务器的JEE上安装、配置和部署AEM Forms后,您应该禁用对应用程序服务器管理控制台的访问。 有关详细信息,请参阅应用程序服务器文档。

应用程序服务器Cookie设置

应用程序Cookie由应用程序服务器控制。 部署应用程序时,应用程序服务器管理员可以在服务器范围或特定于应用程序的基础上指定Cookie首选项。 默认情况下,服务器设置会首选。

应用程序服务器生成的所有会话Cookie都应包含HttpOnly属性。 例如,使用JBoss应用程序服务器时,可以将SessionCookie元素修改为WEB-INF/web.xml文件中的httpOnly="true"

您可以限制使用仅限HTTPS发送Cookie。 因此,不会通过HTTP发送这些文件并对其进行未加密。 应用程序服务器管理员应全局启用服务器的安全Cookie。 例如,使用JBoss应用程序服务器时,可以将连接器元素修改为server.xml文件中的secure=true

有关Cookie设置的更多详细信息,请参阅应用程序服务器文档。

目录浏览

当有人请求不存在的页面或请求控制器名称(请求字符串以正斜杠(/)结尾)时,应用程序服务器不应返回该目录的内容。 要防止出现这种情况,您可以禁用应用程序服务器上的目录浏览。 您应该为管理控制台应用程序以及服务器上运行的其他应用程序执行此操作。

对于JBoss,请在web.xml文件中将DefaultServlet属性的列表初始化参数的值设置为false,如以下示例所示:

<servlet>

<servlet-name>默认</servlet-name>

<servlet-class>

org.apache.catalina.servlets.DefaultServlet

</servlet-class>

<init-param>

<param-name>列表</param-name>

<param-value>false</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

对于WebSphere,将ibm-web-ext.xmi文件中的directoryBrowsingEnabled属性设置为false

对于WebLogic,将weblogic.xml文件中的index-directories属性设置为false,如以下示例所示:

<container-descriptor>

<index-directory-enabled>false

</index-directory-enabled>

</container-descriptor>

数据库安全

在保护数据库时,应实施数据库供应商描述的措施。 您应当为数据库用户分配最低要求的数据库权限,该权限授予AEM Forms在JEE上使用的权限。 例如,请勿使用具有数据库管理员权限的帐户。

在Oracle时,您使用的数据库帐户只需要CONNECT、资源和“创建视图”权限。 有关其他数据库的类似要求,请参阅准备在JEE(单服务器)上安装AEM Forms

在Windows上为JBoss配置SQL Server的集成安全性

  1. 修改[JBOSS_HOME]\standalone\configuration\lc_{datasource.xml}以将integratedSecurity=true添加到连接URL,如以下示例所示:

     jdbc:sqlserver://<serverhost>:<port>;databaseName=<dbname>;integratedSecurity=true
    
  2. 将sqljdbc_auth.dll文件添加到运行应用程序服务器的计算机上的Windows系统路径中。 sqljdbc_auth.dll文件与Microsoft SQL JDBC 6.2.1.0驱动程序安装一起找到。

  3. 将“从本地系统登录为”的JBoss Windows服务(JBoss for AEM Forms on JEE)属性修改为具有AEM Forms数据库和最低权限集的登录帐户。 如果您从命令行而不是作为Windows服务运行JBoss,则无需执行此步骤。

  4. 将​混合​模式的SQL Server安全设置为​仅Windows身份验证

在Windows上为WebLogic配置SQL Server的集成安全性

  1. 通过在Web浏览器的URL行中键入以下URL,启动WebLogic服务器管理控制台:

    https://[host name]:7001/console
    
  2. 在“更改中心”下,单击​锁定并编辑

  3. 在“域结构”下,单击​[base_domain] > 服务 > JDBC > 数据源,然后在右侧窗格中单击​IDP_DS

  4. 在下一个屏幕的​Configuration​选项卡上,单击​连接池​选项卡,然后在​Properties​框中,键入integratedSecurity=true

  5. 在“域结构”下,单击​[base_domain] > 服务 > JDBC > 数据源,然后在右侧窗格中单击​RM_DS

  6. 在下一个屏幕的​Configuration​选项卡上,单击​连接池​选项卡,然后在​Properties​框中,键入integratedSecurity=true

  7. 将sqljdbc_auth.dll文件添加到运行应用程序服务器的计算机上的Windows系统路径中。 sqljdbc_auth.dll文件与Microsoft SQL JDBC 6.2.1.0驱动程序安装一起找到。

  8. 将​混合​模式的SQL Server安全设置为​仅Windows身份验证

在Windows上为WebSphere配置SQL Server的集成安全性

在WebSphere上,仅当使用外部SQL Server JDBC驱动程序时,才能配置集成安全,而不是使用WebSphere嵌入的SQL Server JDBC驱动程序时。

  1. 登录到WebSphere管理控制台。
  2. 在导航树中,单击​资源 > JDBC > 数据源,然后在右窗格中单击​IDP_DS
  3. 在右窗格的“其他属性”下,单击​自定义属性,然后单击​新建
  4. 在​名称​框中,键入integratedSecurity,在​​框中,键入true
  5. 在导航树中,单击​资源 > JDBC > 数据源,然后在右窗格中单击​RM_DS
  6. 在右窗格的“其他属性”下,单击​自定义属性,然后单击​新建
  7. 在​名称​框中,键入integratedSecurity,在​​框中,键入true
  8. 在安装了WebSphere的计算机上,将sqljdbc_auth.dll文件添加到Windows系统路径(C:\Windows)中。 sqljdbc_auth.dll文件与Microsoft SQL JDBC 1.2驱动程序安装位置相同(默认为​[InstallDir]/sqljdbc_1.2/enu/auth/x86)。
  9. 选择​开始 > 控制面板 > 服务,右键单击WebSphere的Windows服务(IBM WebSphere应用程序服务器<version> - <node>),然后选择​属性
  10. 在“属性”对话框中,单击​登录​选项卡。
  11. 选择​此帐户​并提供设置要使用的登录帐户所需的信息。
  12. 在SQL Server上将安全性从​混合​模式设置为​仅Windows身份验证

保护对数据库中敏感内容的访问

AEM Forms数据库模式包含有关系统配置和业务流程的敏感信息,应隐藏在防火墙之后。 数据库应视为与表单服务器位于同一信任边界内。 为防止信息泄漏和业务数据失窃,数据库必须由数据库管理员(DBA)配置,以仅允许授权管理员访问。

为此,应当考虑使用数据库供应商专用工具来加密包含以下数据的表中的列:

  • Rights Management文档键
  • 信任存储HSM PIN加密密钥
  • 本地用户密码哈希

有关特定于供应商的工具的信息,请参阅"数据库安全信息"

LDAP安全

轻型目录访问协议(LDAP)目录通常由JEE上的AEM Forms用作企业用户和组信息的源,以及执行密码验证的方法。 您应确保LDAP目录配置为使用安全套接字层(SSL),并且JEE上的AEM Forms配置为使用其SSL端口访问LDAP目录。

LDAP拒绝服务

使用LDAP的常见攻击涉及攻击者故意多次未能进行身份验证。 这会强制LDAP目录服务器将用户从所有依赖LDAP的服务中锁定。

您可以设置当用户多次无法对AEM Forms进行身份验证时,AEM Forms实施的失败尝试次数和随后的锁定时间。 在管理控制台中,选择低值。 在选择失败尝试次数时,请务必了解,在进行所有尝试后,AEM Forms会在LDAP目录服务器之前锁定用户。

设置自动帐户锁定

  1. 登录到管理控制台。
  2. 单击​设置 > 用户管理 > 域管理
  3. 在自动帐户锁定设置下,将​最大连续身份验证失败数​设置为低数,如3。
  4. 单击​保存

审核和日志记录

正确且安全地使用应用程序审核和日志记录有助于确保尽快跟踪和检测安全和其他异常事件。 在应用程序内有效使用审核和日志记录包括跟踪成功登录和失败登录等项目,以及关键应用程序事件(如创建或删除关键记录)。

您可以使用审核来检测多种类型的攻击,包括:

  • 暴力密码攻击
  • 拒绝服务攻击
  • 脚本攻击的恶意输入和相关类的攻击

此表介绍了可用于减少服务器漏洞的审核和日志记录技术。

带有 OS 剪贴板

描述

日志文件ACL

在JEE日志文件访问控制列表(ACL)中设置相应的AEM Forms。

设置适当的凭据有助于防止攻击者删除文件。

对于管理员和系统组,日志文件目录的安全权限应为“完全控制”。 AEM Forms用户帐户应仅具有读取和写入权限。

日志文件冗余

如果资源允许,请实时将日志发送到攻击者无法访问的其他服务器(仅写入),方法是使用Syslog、Tivoli、Microsoft Operations Manager(MOM)Server或其他机制。

以这种方式保护日志有助于防止篡改。 此外,在中央存储库中存储日志有助于进行关联和监控(例如,如果使用了多个表单服务器,并且在多台计算机上对每台计算机查询密码进行了猜测攻击)。

允许非管理员用户运行PDF生成器

您可以让非管理员用户使用PDF生成器。 通常,只有具有管理权限的用户才能使用PDF生成器。 执行以下步骤,使非管理员用户能够运行PDF生成器:

  1. 创建环境变量名称PDFG_NON_ADMIN_ENABLED。

  2. 将变量的值设置为TRUE。

  3. 重新启动AEM Forms实例。

在JEE上配置AEM Forms以访问企业以外的

在JEE上成功安装AEM Forms后,务必定期维护环境的安全性。 本节介绍为维护JEE生产服务器上AEM Forms的安全性而建议执行的任务。

为Web访问设置反向代理

可以使用​反向代理​来确保JEE Web应用程序上AEM Forms的一组URL可供外部和内部用户使用。 此配置比允许用户直接连接到JEE上运行AEM Forms的应用程序服务器更加安全。 反向代理为在JEE上运行AEM Forms的应用程序服务器执行所有HTTP请求。 用户只能通过网络访问反向代理,并且只能尝试反向代理支持的URL连接。

AEM Forms(在JEE根URL上),用于反向代理服务器

JEE Web应用程序上每个AEM Forms的以下应用程序根URL。 您应该配置反向代理,以便仅向最终用户显示要提供的Web应用程序功能的URL。

某些URL会作为面向最终用户的Web应用程序突出显示。 为了通过反向代理访问外部用户,您应避免公开Configuration Manager的其他URL。

根URL

用途和/或关联的Web应用程序

基于Web的界面

最终用户访问权限

/ReaderExtensions/*

Acrobat Reader DC扩展最终用户web应用程序,用于对PDF文档应用使用权限

/edc/*

Rights Management最终用户Web应用程序

/edcws/*

用于Rights Management的Web服务URL

/pdfgui/*

PDF生成器管理Web应用程序

/工作区/*

工作区最终用户Web应用程序

/workspace-server/*

工作区客户端应用程序需要的Servlet和数据服务

/adobe-bootstrapper/*

用于在JEE存储库上引导AEM Forms的Servlet

/soap/*

表单服务器Web服务的信息页

/soap/services/*

所有表单服务器服务的Web服务URL

/edc/admin/*

Rights Management管理Web应用程序

/adminui/*

管理控制台主页

/TruststoreComponent/

已保护/*

“信任存储管理”页

/FormsIVS/*

Forms IVS应用程序,用于测试和调试表单渲染

/OutputIVS/*

输出IVS应用在测试和调试输出服务中

/rmws/*

用于Rights Management的REST URL

/OutputAdmin/*

输出管理页面

/FormServer/*

Forms Web应用程序文件

/FormServer/GetImage

Servlet

用于在HTML转换期间获取JavaScript

/FormServerAdmin/*

Forms管理页面

/repository/*

用于WebDAV(调试)访问的URL

/AACComponent/*

应用程序和服务用户界面

/WorkspaceAdmin/*

工作区管理页面

/rest/*

Rest支持页面

/CoreSystemConfig/*

AEM Forms on JEE核心配置设置页面

/um/

用户管理身份验证

/um/*

用户管理管理界面

/DoumentManager/*

在启用了HTTP文档的SOAP传输或EJB传输上,上传和下载在访问远程端点、SOAP WSDL端点和Java SDK时要处理的文档。

防止跨站点请求伪造攻击

跨站点请求伪造(CSRF)攻击利用网站对用户的信任来传输未经授权和无意的命令。 攻击的设置方式是:在网页中包含链接或脚本,或在电子邮件中包含URL,以访问用户已经通过身份验证的其他网站。

例如,您可能在同时浏览其他网站的同时登录到管理控制台。 其中一个网页可以包括具有src属性的HTML图像标记,该属性针对受害者网站上的服务器端脚本。 攻击网站利用Web浏览器提供的基于Cookie的会话身份验证机制,可以向此受害服务器端脚本发送恶意请求,伪装成合法用户。 有关更多示例,请参阅https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)#Examples

CSRF具有以下共性:

  • 涉及依赖用户身份的网站。
  • 利用站点对该身份的信任。
  • 诱使用户的浏览器向目标站点发送HTTP请求。
  • 涉及具有副作用的HTTP请求。

AEM Forms on JEE使用反向链接过滤器功能阻止CSRF攻击。 本节使用以下术语来描述反向链接过滤机制:

  • 允许的反向链接: 反向链接是指向服务器发送请求的源页面的地址。对于JSP页或表单,反向链接通常是浏览历史记录中的上一页。 图像的反向链接通常是显示图像的页面。 您可以通过将服务器资源添加到允许的反向链接列表来识别允许访问这些资源的反向链接。
  • 允许的反向链接例外: 您可能希望限制允许的反向链接列表中特定反向链接的访问范围。要强制实施此限制,您可以将该反向链接的单个路径添加到允许的反向链接例外列表。 阻止从允许的反向链接例外列表中的路径发起的请求在表单服务器上调用任何资源。 您可以为特定应用程序定义允许的反向链接例外,还可以使用适用于所有应用程序的例外的全局列表。
  • 允许的URI: 这是在不检查反向链接标头的情况下提供的资源列表。例如,不会导致服务器上状态更改的帮助页面,可以将资源添加到此列表。 反向链接筛选器从不阻止允许的URI列表中的资源,而不管反向链接是谁。
  • Null反向链接: 与父网页无关联或不源自父网页的服务器请求被视为来自Null反向链接的请求。例如,当您打开新的浏览器窗口,键入地址并按Enter时,发送到服务器的反向链接为Null。 桌面应用程序(.NET或SWING)向Web服务器发出HTTP请求,也会向服务器发送空反向链接。

反向链接过滤

反向链接过滤过程可描述如下:

  1. 表单服务器检查用于调用的HTTP方法:

    1. 如果是POST,表单服务器将执行反向链接标题检查。
    2. 如果是GET,则Forms服务器会绕过反向链接检查,除非将​CSRF_CHECK_GETS​设置为true,在这种情况下,它会执行反向链接标头检查。 CSRF_CHECK_GETS是在 应用程序的web. xml 文件中指定的。
  2. 表单服务器检查请求的URI是否存在于允许列表中:

    1. 如果URI被列入允许列表,则服务器接受该请求。
    2. 如果未请求的URI列入允许列表,则服务器将检索请求的反向链接。
  3. 如果请求中存在反向链接,则服务器会检查它是否为允许的反向链接。 如果允许,则服务器会检查是否存在反向链接异常:

    1. 如果是异常,则阻止请求。
    2. 如果不是例外,则会传递请求。
  4. 如果请求中没有反向链接,则服务器会检查是否允许空反向链接:

    1. 如果允许Null反向链接,则会传递请求。
    2. 如果不允许空反向链接,则服务器会检查请求的URI是否为空反向链接的例外,并相应地处理该请求。

管理反向链接过滤

AEM Forms on JEE提供了反向链接过滤器,用于指定允许访问您的服务器资源的反向链接。 默认情况下,反向链接过滤器不会过滤使用安全HTTP方法(例如GET)的请求,除非将​CSRF_CHECK_GETS​设置为true。 如果允许的反向链接条目的端口号设置为0,则JEE上的AEM Forms将允许来自该主机的具有反向链接的所有请求,而不考虑端口号。 如果未指定端口号,则仅允许从默认端口80(HTTP)或端口443(HTTPS)发出请求。 如果删除了允许的反向链接列表中的所有条目,则会禁用反向链接过滤。

首次安装Document Services时,将使用安装Document Services的服务器的地址更新允许的反向链接列表。 服务器的条目包括服务器名称、IPv4地址、启用IPv6时的IPv6地址、环回地址和本地主机条目。 主机操作系统会返回添加到允许的反向链接列表的名称。 例如,IP地址为10.40.54.187的服务器将包含以下条目:https://server-name:0, https://10.40.54.187:0, https://127.0.0.1:0, http://localhost:0。 对于由主机操作系统重新调整的任何不合格名称(没有IPv4地址、IPv6地址或合格域名的名称),允许列表不会更新。 修改允许的反向链接列表以适合您的业务环境。 请勿在生产环境中使用默认允许的反向链接列表部署表单服务器。 修改任何允许的反向链接、反向链接例外或URI后,确保重新启动服务器以使更改生效。

管理允许的反向链接列表

您可以从管理控制台的用户管理界面管理允许的反向链接列表。 用户管理界面提供了创建、编辑或删除列表的功能。 有关使用允许的反向链接列表的更多信息,请参阅​管理帮助​的* 防止CSRF攻击*​部分。

管理允许的反向链接异常和允许的URI列表

AEM Forms on JEE提供了用于管理允许的反向链接异常列表和允许的URI列表的API。 您可以使用这些API来检索、创建、编辑或删除列表。 以下是可用API列表:

  • createAllowedURIsList
  • getAllowedURIsList
  • updateAllowedURIsList
  • deleteAllowedURIsList
  • addAllowedRefererExceptions
  • getAllowedRefererExceptions
  • updateAllowedRefererExceptions
  • deleteAllowedRefererExceptions

有关API的更多信息,请参阅* Jee API参考上的AEM Forms* 。

在全局级别使用​LC_GLOBAL_ALLOWED_REFERER_EXCEPTION​列表,以定义适用于所有应用程序的例外。 此列表仅包含具有绝对路径(例如,/index.html)或相对路径(例如/sample/)。 您还可以在相对URI(例如,/sample/(.)*

LC_GLOBAL_ALLOWED_REFERER_EXCEPTION​列表ID在com.adobe.idp.um.api命名空间的UMConstants类中定义为常量,该类位于adobe-usermanager-client.jar中。 您可以使用AEM Forms API创建、修改或编辑此列表。 例如,要创建全局允许的反向链接例外列表,请使用:

addAllowedRefererExceptions(UMConstants.LC_GLOBAL_ALLOWED_REFERER_EXCEPTION, Arrays.asList("/index.html", "/sample/(.)*"))

对于特定于应用程序的异常,请使用​CSRF_ALLOWED_REFERER_EXCEPTIONS​列表。

禁用反向链接过滤器

如果反向链接过滤器完全阻止对表单服务器的访问,并且您无法编辑允许的反向链接列表,则可以更新服务器启动脚本并禁用反向链接过滤。

在启动脚本中包含-Dlc.um.csrffilter.disabled=true JAVA参数并重新启动服务器。 确保在正确重新配置允许的反向链接列表后删除JAVA参数。

自定义WAR文件的反向链接过滤

您可能已创建自定义WAR文件以在JEE上与AEM Forms一起使用,以满足您的业务要求。 要为自定义WAR文件启用反向链接过滤,请在WAR的类路径中包含​adobe-usermanager-client.jar,并在* web.xml*文件中包含一个过滤器条目,并包含以下参数:

CSRF_CHECK_GETS控制 对GET请求进行反向链接检查。如果未定义此参数,则默认值设置为false。 仅当您想要过滤GET请求时,才应包含此参数。

CSRF_ALLOWED_REFERER_EXCEPTIONS是“允 许的反向链接例外”列表的ID。反向链接过滤器可阻止来自由列表ID标识的列表中反向链接的请求在表单服务器上调用任何资源。

CSRF_ALLOWED_URIS_LIST_NAME是 允许的URI列表的ID。反向链接过滤器不会阻止对列表ID标识的列表中任何资源的请求,而与请求中反向链接标头的值无关。

当反向链接为空或不存 在时,CSRF_ALLOW_NULL_REFERER控制反向链接过滤器行为。如果未定义此参数,则默认值设置为false。 仅当您希望允许空反向链接时,才包含此参数。 允许空反向链接可能会允许某些类型的跨站点请求伪造攻击。

CSRF_NULL_REFERER_EXCEPTIONS是URI的列 表,当反向链接为空时,不会对其执行反向链接检查。仅当​CSRF_ALLOW_NULL_REFERER​设置为false时,才启用此参数。 在列表中用逗号分隔多个URI。

以下是​SAMPLE WAR文件​web.xml​文件中过滤器条目的示例:

<filter> 
       <filter-name> filter-name </filter-name> 
       <filter-class> com.adobe.idp.um.auth.filter.RemoteCSRFFilter </filter-class> 
     <!-- default is false --> 
     <init-param> 
      <param-name> CSRF_ALLOW_NULL_REFERER </param-name> 
      <param-value> false </param-value> 
     </init-param> 
     <!-- default is false --> 
     <init-param> 
      <param-name> CSRF_CHECK_GETS </param-name> 
      <param-value> true </param-value> 
     </init-param> 
     <!-- Optional --> 
     <init-param> 
       <param-name> CSRF_NULL_REFERER_EXCEPTIONS </param-name> 
       <param-value> /SAMPLE/login, /SAMPLE/logout  </param-value> 
     </init-param> 
     <!-- Optional --> 
     <init-param> 
      <param-name> CSRF_ALLOWED_REFERER_EXCEPTIONS </param-name> 
      <param-value> SAMPLE_ALLOWED_REF_EXP_ID </param-value> 
     </init-param> 
     <!-- Optional --> 
     <init-param> 
      <param-name> CSRF_ALLOWED_URIS_LIST_NAME </param-name> 
      <param-value> SAMPLE_ALLOWED_URI_LIST_ID     </param-value> 
     </init-param> 
</filter> 
    ........ 
    <filter-mapping> 
      <filter-name> filter-name </filter-name> 
      <url-pattern>/*</url-pattern> 
    </filter-mapping>

疑难解答

如果CSRF筛选器阻止了合法的服务器请求,请尝试以下任一操作:

  • 如果被拒绝的请求具有反向链接标头,请仔细考虑将其添加到允许的反向链接列表。 仅添加您信任的反向链接。
  • 如果被拒绝的请求没有反向链接标头,请修改您的客户端应用程序以包含反向链接标头。
  • 如果客户端可以在浏览器中工作,请尝试该部署模型。
  • 作为最后的选择,您可以将资源添加到允许的URI列表。 这不是推荐的设置。

安全网络配置

本节介绍AEM Forms on JEE所需的协议和端口,并提供了在安全网络配置中部署AEM Forms on JEE的建议。

AEM Forms在JEE上使用的网络协议

如上节所述,当您配置安全网络架构时,在JEE上的AEM Forms与企业网络中的其他系统之间进行交互时,需要以下网络协议。

协议

用法

HTTP

  • 浏览器显示配置管理器和最终用户Web应用程序

  • 所有SOAP连接

SOAP

  • Web服务客户端应用程序,如.NET应用程序

  • Adobe Reader®在JEE服务器Web服务上使用AEM Forms的SOAP

  • AdobeFlash®应用程序使用SOAP来提供表单服务器Web服务

  • AEM Forms(在SOAP模式中使用时)

  • Workbench设计环境

RMI

在企业JavaBeans(EJB)模式中使用时,JEE上的AEM Forms SDK调用

IMAP / POP3

  • 基于电子邮件的服务输入(电子邮件端点)

  • 通过电子邮件发送用户任务通知

UNC文件IO

AEM Forms on JEE监控已监视文件夹以输入到服务(已监视文件夹端点)

LDAP

  • 目录中组织用户和组信息的同步

  • 交互式用户的LDAP身份验证

JDBC

  • 在使用JDBC服务执行进程期间对外部数据库进行的查询和过程调用

  • JEE存储库上的内部访问AEM Forms

WebDAV

允许任何WebDAV客户端在JEE设计时存储库(表单、片段等)上远程浏览AEM Forms

AMF

AdobeFlash应用程序,其中JEE服务器服务上的AEM Forms配置了远程处理端点

JMX

AEM Forms on JEE公开MBean以使用JMX进行监控

应用程序服务器的端口

本节介绍支持的每种类型应用程序服务器的默认端口(和备用配置范围)。 必须在内部防火墙上启用或禁用这些端口,具体取决于您希望允许连接到在JEE上运行AEM Forms的应用程序服务器的客户端的网络功能。

注意

默认情况下,服务器会在adobe.com命名空间下公开多个JMX MBean。 只有对服务器运行状况监控有用的信息才会公开。 但是,为防止信息泄露,您应防止不受信任的网络中的呼叫者查找JMX MBean并访问运行状况量度。

JBoss端口

用途

端口

访问Web应用程序

[JBOSS_Root]/standalone/configuration/lc_[database].xml

HTTP/1.1连接器端口8080

AJP 1.3连接器端口8009

SSL/TLS连接器端口8443

CORBA支持

[JBoss根]/server/all/conf/jacorb.properties

OAPort 3528

OASSLPort 3529

WebLogic端口

用途

端口

访问Web应用程序

  • 管理服务器侦听端口:默认值为7001

  • 管理服务器SSL侦听端口:默认值为7002

  • 为托管服务器配置的端口,例如8001

在JEE上访问AEM Forms不需要WebLogic管理端口

  • 托管服务器侦听端口:可从1到65534进行配置

  • 托管服务器SSL侦听端口:可从1到65534进行配置

  • 节点管理器监听端口:默认值为5556

WebSphere端口

有关JEE上的AEM Forms所需的WebSphere端口的信息,请转到WebSphere应用程序服务器UI中的端口号设置。

配置SSL

有关JEE物理架构🔗上的AEM Forms部分中描述的物理架构,您应当为计划使用的所有连接配置SSL。 具体而言,所有SOAP连接都必须通过SSL进行,以防止用户凭据在网络上泄露。

有关如何在JBoss、WebLogic和WebSphere上配置SSL的说明,请参阅管理帮助中的“配置SSL”。

有关如何将证书导入为AEM Forms服务器配置的JVM(Java虚拟机)的说明,请参阅AEM Forms Workbench帮助中的“相互身份验证”部分。

配置SSL重定向

在将应用程序服务器配置为支持SSL后,必须确保对应用程序和服务的所有HTTP流量都强制执行,以使用SSL端口。

要为WebSphere或WebLogic配置SSL重定向,请参阅您的应用程序服务器文档。

  1. 打开命令提示符,导航到/JBOSS_HOME/standalone/configuration目录,然后执行以下命令:

    keytool -genkey -alias jboss7 -keyalg RSA -keystore server.keystore -validity 10950

  2. 打开JBOSS_HOME/standalone/configuration/standalone.xml文件进行编辑。

    在<subsystem xmlns="urn:jboss:domain:web:1.1" native="false" default-virtual-server="default-host">元素之后,添加以下详细信息:

    <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" enabled="true" secure="true" />

  3. 在https连接器元素中添加以下代码:

    <connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true" enabled="true"> 
     <ssl name="jboss7_ssl" key-alias="jboss71" password="Tibco321" certificate-key-file="../standalone/configuration/server.keystore" protocol="TLSv1"/> 
     </connector>
    

    保存并关闭standalone.xml文件。

特定于Windows的安全建议

本节包含特定于Windows的安全建议,当这些建议用于在JEE上运行AEM Forms时。

JBoss服务帐户

默认情况下, JEE上的AEM Forms统包安装使用本地系统帐户来设置服务帐户。 内置的本地系统用户帐户具有高级别的可访问性;它属于管理员组。 如果工作进程标识作为本地系统用户帐户运行,则该工作进程拥有对整个系统的完全访问权限。

使用非管理帐户运行应用程序服务器

  1. 在Microsoft管理控制台(MMC)中,为表单服务器服务创建本地用户以登录为:

    • 选择​用户无法更改密码
    • 在​成员​选项卡上,确保列出用户组。
  2. 选择​设置 > 管理工具 > 服务

  3. 双击应用程序服务器服务并停止该服务。

  4. 在​登录​选项卡上,选择​此帐户,浏览您创建的用户帐户,然后输入该帐户的密码。

  5. 在“本地安全设置”窗口的“用户权限分配”下,为表单服务器在下运行的用户帐户提供以下权限:

    • 通过终端服务拒绝登录
    • 拒绝本地登录xx
    • 以服务身份登录(应已设置)
  6. 为新用户帐户授予对以下目录的修改权限:

    • 全局文档存储(GDS)目录:GDS目录的位置在AEM Forms安装过程中手动配置。如果位置设置在安装期间保持为空,则位置默认为[JBoss root]/server/[type]/svcnative/DocumentStorage应用程序服务器安装下的目录
    • CRX-Repository目录:默认位置为 [AEM-Forms-installation-location]\crx-repository
    • AEM Forms临时目录:
      • (Windows)在环境变量中设置的TMP或TEMP路径
      • (AIX、Linux或Solaris)登录用户的主目录
        在基于UNIX的系统上,非根用户可以使用以下目录作为临时目录:
      • (Linux)/var/tmp或/usr/tmp
      • (AIX)/tmp或/usr/tmp
      • (Solaris)/var/tmp或/usr/tmp
  7. 为以下目录授予新的用户帐户写入权限:

    • [JBoss-directory]\standalone\deployment
    • [JBoss-directory]\standalone\
    • [JBoss-directory]\bin\
    注意

    JBoss应用程序服务器的默认安装位置:

    • Windows:C:\Adobe\Adobe_Experience_Manager_Forms\jboss
    • Linux:/opt/jboss/。
  8. 启动应用程序服务器服务。

文件系统安全性

AEM Forms on JEE通过以下方式使用文件系统:

  • 存储处理文档输入和输出时使用的临时文件
  • 将用于支持已安装解决方案组件的文件存储在全局存档存储中
  • 监视文件夹存储从文件系统文件夹位置用作服务输入的已丢弃文件

使用监视文件夹作为通过表单服务器服务发送和接收文档的方式时,请对文件系统安全性采取额外的预防措施。 当用户在已监视文件夹中放置内容时,该内容将通过已监视文件夹公开。 在这种情况下,服务不会验证实际的最终用户。 相反,它依赖在文件夹级别设置的ACL和共享级别安全性来确定谁可以有效地调用服务。

特定于JBoss的安全建议

本节包含特定于JBoss 7.0.6的应用程序服务器配置建议,当这些建议用于在JEE上运行AEM Forms时。

禁用JBoss管理控制台和JMX控制台

在JBoss上的JEE上使用统包安装方法安装AEM Forms时,已配置对JBoss管理控制台和JMX控制台的访问权限(禁用JMX监视)。 如果您使用自己的JBoss应用程序服务器,请确保对JBoss管理控制台和JMX监控控制台的访问是安全的。 在名为jmx-invoker-service.xml的JBoss配置文件中设置对JMX监控控制台的访问权限。

禁用目录浏览

登录到管理控制台后,可以通过修改URL浏览控制台的目录列表。 例如,如果将URL更改为以下URL之一,则可能会显示目录列表:

https://<servername>:8080/adminui/secured/ 
https://<servername>:8080/um/

特定于WebLogic的安全建议

本节包含有关在JEE上运行AEM Forms时保护WebLogic 9.1的应用程序服务器配置建议。

禁用目录浏览

将weblogic.xml文件中的index-directories属性设置为false,如以下示例所示:

<container-descriptor> 
    <index-directory-enabled>false 
    </index-directory-enabled> 
</container-descriptor>

启用WebLogic SSL端口

默认情况下, WebLogic不启用默认的SSL侦听端口7002。 在配置SSL之前,请在WebLogic服务器管理控制台中启用此端口。

特定于WebSphere的安全建议

本节包含有关保护在JEE上运行AEM Forms的WebSphere的应用程序服务器配置建议。

禁用目录浏览

将ibm-web-ext.xml文件中的directoryBrowsingEnabled属性设置为false

启用WebSphere管理安全性

  1. 登录到WebSphere管理控制台。
  2. 在导航树中,转到​Security > Global Security
  3. 选择​启用管理安全
  4. 取消选择​启用应用程序安全​和​使用Java 2安全
  5. 单击​确定​或​应用
  6. 在​消息​框中,单击​直接保存到主控配置

在此页面上