强化AEM Forms的JEE环境

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

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

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

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

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

预安装

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

在UNIX和Linux上安装和配置

您不应使用根Shell在JEE上安装或配置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地址

将网络地址转换(NAT)与AEM Forms应用程序服务器上的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 剪贴板

描述

权限

使用安装软件所需的最少权限数。 使用不在“Administrators”(管理员)组中的帐户登录到计算机。 在Windows上,您可以使用“运行为”命令以管理用户身份在JEE安装程序上运行AEM Forms。 在UNIX和Linux系统上,使用sudo等命令安装软件。

软件源

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

恶意项目可能包含以多种方式违反安全性的代码,包括数据盗窃、修改和删除以及拒绝服务。 从Adobe DVD或仅从受信任的源在JEE上安装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用户帐户具有高度的可访问性;它是管理员组的一部分。 如果worker-process标识作为LocalSystem用户帐户运行,则该worker进程对整个系统具有完全访问权限。

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

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

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

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

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

  3. 多次在JEE上单击JBoss for AEM Forms并停止服务。

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

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

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

    • 通过终端服务拒绝登录
    • 拒绝本地登录
    • 以服务身份登录(应已设置)
  7. 为新用户帐户授予AEM Forms的“在JEE Web内容目录上读取和执行”、“列表文件夹内容”和“读取”权限。

  8. 开始应用程序服务器。

禁用Configuration Manager引导servlet

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

  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://

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

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

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

禁用所有非基本匿名访问

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

更改默认管理员密码

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

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

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

    默认端口号为以下任一值:

    JBoss: 8080

    WebLogic Server: 7001

    WebSphere: 9080。

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

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

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

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

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

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

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

  1. 使用默认用户名/密码登录https://[server]:[port]/lc/libs/granite/security/content/useradmin.html
  2. 在搜索字段中键入Administrator并单击​Go
  3. 从搜索结果中选择​Administrator ,然后单击用户界面右下角的​编辑​图标。
  4. 在​新密码​字段中指定新密码,在​您的密码​字段中指定旧密码。
  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 Application Server时,可将SessionCookie元素修改为WEB-INF/web.xml文件中的httpOnly="true"

您可以限制使用仅HTTPS发送Cookie。 因此,不会通过HTTP发送未加密的文件。 应用程序服务器管理员应全局为服务器启用安全Cookie。 例如,使用JBoss Application Server时,可以将连接器元素修改为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>假</param-value>

</init-param>

<load-on-startup>3</load-on-startup>

</servlet>

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

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

<container-descriptor>

<index-directory-enabled>假

</index-directory-enabled>

</container-descriptor>

数据库安全

在保护数据库时,应执行数据库供应商描述的度量。 您应分配具有授予AEM Forms在JEE上使用所需最低数据库权限的数据库用户。 例如,请勿使用具有数据库管理员权限的帐户。

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

为JBoss在Windows上的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上的SQL Server配置WebLogic的集成安全性

  1. 开始WebLogic服务器管理控制台,方法是在Web浏览器的URL行中键入以下URL:

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

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

  4. 在下一个屏幕上,在​Configuration​选项卡上,单击​Connection Pool​选项卡,在​Properties​框中,键入integratedSecurity=true

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

  6. 在下一个屏幕上,在​Configuration​选项卡上,单击​Connection Pool​选项卡,在​Properties​框中,键入integratedSecurity=true

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

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

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

在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 Application Server <版本> - <节点>)并选择​属性
  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或其他机制将日志实时发送到攻击者无法访问的其他服务器(仅写入)。

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

在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扩展功能将使用权限应用于PDF文档的最终用户Web应用程序

/edc/*

Rights Management最终用户Web应用程序

/edcws/*

用于Rights Management的Web服务URL

/pdfgui/*

PDF Generator管理Web应用程序

/工作区/*

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

/workspace-server/*

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

/adobe-bootstrapper/*

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

/soap/*

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

/soap/services/*

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

/edc/admin/*

Rights Management管理Web应用程序

/admui/*

管理控制台主页

/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/*

用户管理界面

/DocumentManager/*

在启用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”列表中的资源从不被推荐人过滤器阻止,而不管推荐人是谁。
  • 空推荐人: 未与父网页关联或未源自父网页的服务器请求被视为来自空推荐人的请求。例如,当您打开新的浏览器窗口,键入地址,然后按enter键时,发送到服务器的推荐人为null。 向Web服务器发出HTTP请求的桌面应用程序(.NET或SWING)也会向服务器发送空推荐人。

推荐人过滤

“推荐人过滤”过程可描述如下:

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

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

    1. 如果URI被列入允许列表,则服务器接受该请求。
    2. 如果未请求的列入允许列表URI,服务器将检索请求的推荐人。
  3. 如果请求中有推荐人,则服务器将检查该请求是否为允许推荐人。 如果允许,服务器将检查推荐人异常:

    1. 如果是例外,则阻止请求。
    2. 如果不是例外,则会传递请求。
  4. 如果请求中没有推荐人,则服务器将检查是否允许Null推荐人:

    1. 如果允许使用Null推荐人,则会传递请求。
    2. 如果不允许Null推荐人,则服务器将检查所请求的URI是否为Null推荐人的例外,并相应地处理该请求。

管理推荐人筛选

AEM Forms on JEE提供了一个推荐人过滤器,用于指定允许访问您的服务器资源的推荐人。 默认情况下,推荐人过滤器不过滤使用安全HTTP方法(例如GET)的请求,除非​CSRF_CHECK_GETS​设置为true。 如果允许的推荐人项的端口号设置为0,则AEM Forms on JEE将允许来自该主机的所有具有推荐人的请求,而不管端口号。 如果未指定端口号,则仅允许来自默认端口80(HTTP)或端口443(HTTPS)的请求。 如果“允许的推荐人”列表中的所有条目都被删除,则“推荐人过滤”将被禁用。

首次安装文档服务时,“允许的推荐人”列表将更新为安装了文档服务的服务器的地址。 服务器的条目包括服务器名称、IPv4地址、启用IPv6时的IPv6地址、环回地址和localhost条目。 添加到允许的推荐人列表的名称由主机操作系统返回。 例如,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提供API来管理允许的推荐人异常列表和允许的URI列表。 您可以使用这些API来检索、创建、编辑或删除列表。 以下是可用API的列表:

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

有关API的详细信息,请参阅* AEM Forms on JEE API Reference*。

在全局级别使用​LC_GLOBAL_ALLOWED_REFERER_EXCEPTION​列表进行允许的推荐人异常,即定义适用于所有应用程序的异常。 此列表仅包含具有绝对路径(例如,/index.html)或相对路径(例如/sample/)。 您还可以在相对URI的末尾附加一个常规表达式,例如/sample/(.)*

LC_GLOBAL_ALLOWED_REFERER_EXCEPTION​列表ID在adobe-usermanager-client.jar中的com.adobe.idp.um.api命名空间的UMConstants类中定义为常量。 您可以使用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_列表_ NAME是允许的URI列表的ID。推荐人过滤器不阻止对由列表ID标识的列表中任何资源的请求,而不管请求中推荐人头的值。

CSRF_ALLOW_NULL_REFERER在推荐人为 null或不存在推荐人时控制“过滤器”行为。如果未定义此参数,则将默认值设置为false。 仅当要允许Null推荐人时,才包含此参数。 允许空推荐人可能允许某些类型的跨站点请求伪造攻击。

CSRF_NULL_REFERER_EXCEPTIONS是URI的列表, 当推荐人为null时,不对其执行推荐人检查。仅当将​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所需的协议和端口,并为在JEE上以安全网络配置部署AEM Forms提供建议。

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

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

协议

用法

HTTP

  • 浏览器显示Configuration Manager和最终用户Web应用程序

  • 所有SOAP连接

SOAP

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

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

  • Adobe Flash®应用程序使用SOAP表单服务器Web服务

  • AEM Forms在SOAP模式中使用时,JEE SDK调用

  • 工作台设计环境

RMI

AEM Forms on JEE SDK在企业JavaBeans(EJB)模式中使用时

IMAP / POP3

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

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

UNC文件IO

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

LDAP

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

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

JDBC

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

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

WebDAV

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

AMF

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

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 root]/server/all/conf/jacorb.properties

OAPort 3528

OASSLPort 3529

WebLogic端口

用途

端口

访问Web应用程序

  • Admin Server侦听端口:默认值为7001

  • Admin Server SSL侦听端口:默认值为7002

  • 为Managed Server配置的端口,例如8001

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

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

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

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

WebSphere端口

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

配置SSL

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

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

配置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的安全建议

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

JBoss服务帐户

默认情况下,AEM Forms on JEE turnkey安装使用本地系统帐户设置服务帐户。 内置的本地系统用户帐户具有高度的可访问性;它是管理员组的一部分。 如果工作进程标识作为本地系统用户帐户运行,则该工作进程对整个系统具有完全访问权限。

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

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

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

  3. 多次单击应用程序服务器服务并停止该服务。

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

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

    • 通过终端服务拒绝登录
    • 拒绝本地登录
    • 以服务身份登录(应已设置)
  6. 为JEE Web内容目录上的AEM Forms赋予新的用户帐户“读取并执行”、“列表文件夹内容”和“读取”权限。

  7. 开始应用程序服务器服务。

文件系统安全性

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

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

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

特定于JBoss的安全建议

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

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

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

禁用目录浏览

登录Administration Console后,可以通过修改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. 在​消息​框中,单击​直接保存到主控配置

On this page