本节介绍您应采取的各种步骤,以确保AEM安装在部署时是安全的。 清单应自上而下应用。
有关Open Security Project(OWASP)](https://www.owasp.org/index.php/OWASP_Top_Ten_Project)发布的最危险安全威胁的详细信息[也可用。
在开发阶段还有一些其他安全注意事项。
有关详细信息,请参阅在生产就绪模式中运行AEM。
对于具有安全实例,必须在创作和发布实例上启用HTTPS传输层。
有关详细信息,请参阅启用HTTP over SSL部分。
确保已安装Adobe](https://helpx.adobe.com/cn/experience-manager/kb/aem63-available-hotfixes.html)提供的最新[安全修补程序。
Adobe强烈建议在安装后更改特权AEM admin
帐户的口令(在所有实例上)。
这些帐户包括:
AEM admin
帐户
更改AEM admin帐户的密码后,您在访问CRX时需要使用新密码。
OSGi Web控制台的admin
密码
此更改还将应用于用于访问Web控制台的管理员帐户,因此您在访问该控制台时需要使用相同的口令。
这两个帐户使用不同的凭据,并且每个帐户都具有不同的强口令,这对于安全部署至关重要。
可通过Granite Operations - Users控制台更改AEM管理员帐户的口令。
您可以在此编辑admin
帐户并更改密码](/docs/experience-manager-65/administering/security/granite-user-group-admin.html?lang=zh-Hans#changing-the-password-for-an-existing-user)。[
更改管理员帐户也会更改OSGi Web控制台帐户。 更改管理员帐户后,您应将OSGi帐户更改为其他帐户。
除AEM admin
帐户外,如果无法更改OSGi Web控制台密码的默认密码,则可能导致:
有关更改Web控制台口令的详细信息,请参阅下面的更改OSGi Web控制台管理员口令。
您还必须更改用于访问Web控制台的口令。 通过配置Apache Felix OSGi管理控制台的以下属性,可完成此操作:
用户 名和 密码,用于访问Apache Felix Web管理控制台本身的凭据。初始安装后必须更改密码,以确保实例的安全性。
要执行此操作:
导航到位于<server>:<port>/system/console/configMgr
的Web控制台。
导航到Apache Felix OSGi管理控制台并更改用户名和密码。
单击保存。
Adobe建议定义自定义错误处理程序页面,尤其是404和500 HTTP响应代码,以防止信息泄露。
有关更多详细信息,请参阅如何创建自定义脚本或错误处理程序知识库文章。
AEM Dispatcher是您基础架构的关键组成部分。 Adobe强烈建议您完成调度程序安全核对清单。
使用调度程序时,必须禁用“.form”选择器。
AEM的标准安装指定admin
作为默认复制代理内传输凭据的用户。 此外,管理员用户还用于在作者系统上源复制。
出于安全考虑,应更改这两种方法,以反映手头的特定用例,同时考虑到以下两个方面:
传输用户不应是管理员用户。 而是在发布系统上设置一个用户,该用户仅对发布系统的相关部分具有访问权限,并将该用户的凭据用于传输。
您可以从捆绑的复制接收者用户进行开始,并配置此用户的访问权限以匹配您的情况
复制用户或代理用户Id也不应是管理员用户,而应是只能看到应被复制内容的用户。 复制用户用于收集要在创作系统上复制的内容,然后再将其发送到发布者。
AEM 6引入了新的“操作”仪表板,旨在帮助系统操作员解决问题并监控实例的运行状况。
该仪表板还附带一组安全运行状况检查。 建议您在与生产实例一起上线之前检查所有安全运行状况检查的状态。 有关详细信息,请参阅操作仪表板文档。
所有示例内容和用户(例如Geometrixx项目及其组件)都应在生产系统上完全卸载和删除,然后才能公开访问。
应先在创作和发布生产系统上卸载这些开发OSGi捆绑包,然后再使其可访问。
AEM Developer Tools for Eclipse部署了Apache Sling Tooling Support Install(org.apache.sling.toolbing.support.install)。
应在创作和发布生产系统上卸载此OSGi捆绑包,然后再使其可访问。
AEM 6.1附带一种有助于防止跨站点请求伪造攻击的机制,称为CSRF保护框架。 有关如何使用它的详细信息,请查阅文档。
要解决CRX WebDAV和Apache Sling中跨站点请求伪造(CSRF)的已知安全问题,您需要为推荐人过滤器添加配置才能使用它。
推荐人过滤器服务是一种OSGi服务,允许您配置:
应过滤哪些http方法
是否允许空推荐人头
以及允许除服务器主机外的列表服务器。
默认情况下,服务器绑定的所有localhost和当前主机名变体都在列表中。
要配置推荐人筛选器服务,请执行以下操作:
打开Apache Felix控制台(Configurations):
https://<server>:<port_number>/system/console/configMgr
以admin
身份登录。
在配置菜单中,选择:
Apache Sling Referrer Filter
在Allow Hosts
字段中,输入允许用作推荐人的所有主机。 每个条目都必须是表单
<protocol>://<server>:<port>
例如:
https://allowed.server:80
允许来自此服务器的所有具有给定端口的请求。0
作为端口号。如果要允许空/缺少推荐人标头,请检查Allow Empty
字段。
建议在使用命令行工具(如cURL
)时提供推荐人,而不是允许空值,因为该值可能会使您的系统遭受CSRF攻击。
编辑此过滤器应用于检查Filter Methods
字段的方法。
单击保存以保存更改。
某些OSGI设置是默认设置,以便更轻松地调试应用程序。 您需要在发布和创作生产实例时更改这些内容,以避免内部信息泄露给公众。
除The Day CQ WCM Debug Filter外,以下所有设置都自动由生产就绪模式覆盖。 因此,我们建议在高效环境中部署实例之前先查看所有设置。
对于以下每项服务,需要更改指定的设置:
有关详细信息,请参阅OSGi配置设置。
与AEM合作时,有多种方法管理此类服务的配置设置;请参阅配置OSGi以了解更多详细信息和建议的做法。
拒绝服务(DoS)攻击是试图使计算机资源对其预期用户不可用。 这通常是通过超载资源来实现的;例如:
来自外部源的大量请求。
请求的信息比系统可以成功传送的信息多。
例如,整个存储库的JSON表示形式。
通过请求具有不限数量URL的内容页面,URL可以包括句柄、某些选择器、扩展和后缀——其中任何一个都可以修改。
例如,.../en.html
也可以请求为:
.../en.ExtensionDosAttack
.../en.SelectorDosAttack.html
.../en.html/SuffixDosAttack
调度程序将对所有有效变量(例如返回200
响应并配置为缓存)进行缓存,最终将生成完整的文件系统,并且不提供用于进一步请求的服务。
防止此类攻击有许多配置点,此处我们只讨论与AEM直接相关的攻击。
配置Sling以防止DoS
Sling是以内容为中心的。 这意味着,当每个(HTTP)请求以JCR资源(存储库节点)的形式映射到内容时,处理将集中在内容上:
这在Sling请求处理中有更详细的介绍。
这种方法使Sling功能强大且非常灵活,但与以往一样,需要谨慎管理的灵活性。
为帮助防止DoS滥用,您可以:
在应用程序级加入控件;由于可能的变量数,默认配置不可行。
在您的应用程序中,您应:
404
。检查默认呈示器的配置,该呈示器可能是问题区域。
尤其是JSON渲染器,它可以跨多个级别横向于树结构。
例如,请求:
http://localhost:4502/.json
可以将整个存储库转储为JSON表示形式。 这会导致严重的服务器问题。 因此,Sling对最大结果数设置限制。 要限制JSON渲染的深度,您可以为以下对象设置值:
JSON最大结果 ( json.maximumresults
)
在Apache SlingGETServlet的配置中。 超过此限制时,渲染将折叠。 AEM中的Sling的默认值为200
。
作为预防措施,禁用其他默认呈示器(HTML、纯文本、XML)。 再次通过配置Apache SlingGETServlet。
请勿禁用JSON渲染器,这是AEM正常操作所必需的。
使用防火墙过滤对实例的访问。
缓解使用表单选择器导致的DoS
此缓解措施应仅对不使用Forms的AEM环境执行。
由于AEM不为FormChooserServlet
提供现成索引,在查询中使用表单选择器将触发代价高昂的存储库遍历,通常会使AEM实例陷入停顿。 表单选择器可以通过存在*.form来检测。*字符串(查询)。
要减轻此问题,请执行以下步骤:
将浏览器指向https://<serveraddress>:<serverport>/system/console/configMgr,转到Web控制台
搜索Day CQ WCM表单选择器Servlet
单击该条目后,请在以下窗口中禁用高级搜索要求。
单击保存。
缓解由资产下载Servlet引起的DoS
AEM中默认的资产下载Servlet允许经过身份验证的用户发出任意大的并发下载请求,以创建对他们可见的资产的ZIP文件,这些文件可能会使服务器和/或网络过载。
为了减轻此功能导致的潜在DoS风险,默认情况下,对于最新AEM版本上的发布实例,AssetDownloadServlet
OSGi组件处于禁用状态。
如果您的设置要求启用资产下载服务器,请参阅此文章以了解更多信息。
应在创作和发布环境上禁用WebDAV。 这可以通过停止相应的OSGi包来完成。
连接到运行于以下位置的Felix管理控制台:
https://<*host*>:<*port*>/system/console
例如http://localhost:4503/system/console/bundles
。
在包的列表中,找到名为:
Apache Sling Simple WebDAV Access to repositories (org.apache.sling.jcr.webdav)
单击“停止”按钮(在“操作”列中)以停止此捆绑。
在包的列表中,找到名为:
Apache Sling DavEx Access to repositories (org.apache.sling.jcr.davex)
单击停止按钮以停止此捆绑。
不需要重新启动AEM。
通过确保不在存储库用户主路径中显示任何个人识别信息,保护用户非常重要。
自AEM 6.1起,用户(也称为可授权)ID节点名称的存储方式会随着AuthorizableNodeName
接口的新实现而改变。 新界面将不再在节点名称中显示用户ID,而是生成随机名称。
无需执行任何配置即可启用它,因为现在这是在AEM中生成可授权ID的默认方式。
尽管不推荐,但您可以禁用它,以防需要旧的实现以向后兼容现有应用程序。 为此,您需要:
转到Web控制台,从Apache Jackrabbit Oak Security提供者的属性requiredServicePids中删除 org.apache.jackrabbit.oak.security.user.RandomAuthorizableNodeName条目。
您还可以在OSGi配置中查找org.apache.jackrabbit.oak.security.internal.SecurityProviderRegistration PID,找到Oak安全提供商。
从Web控制台中删除Apache Jackrabbit Oak随机可授权节点名称 OSGi配置。
为便于查找,请注意此配置的PID是org.apache.jackrabbit.oak.security.user.RandomAuthorizableNodeName。
有关详细信息,请参阅可授权节点名称生成上的Oak文档。
为防止点击劫持,我们建议您配置Web服务器以提供设置为SAMEORIGIN
的X-FRAME-OPTIONS
HTTP头。
有关点击劫持的更多信息,请参阅OWASP站点。
某些AEM功能和身份验证方案要求您在所有AEM实例中复制加密密钥。
在执行此操作之前,请注意,密钥复制在不同版本之间的操作方式不同,因为6.3和更早版本之间存储密钥的方式不同。
有关更多信息,请参见下文。
而在旧版本中,复制密钥存储在存储库中,从AEM 6.3开始,它们存储在文件系统中。
因此,为了跨实例复制密钥,您需要将它们从源实例复制到文件系统上目标实例的位置。
更具体地说,您需要:
访问AEM实例,通常是包含要复制的关键材料的作者实例;
在本地文件系统中找到com.adobe.granite.crypto.file捆绑。 例如,在此路径下:
<author-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21
每个文件夹中的bundle.info
文件将标识捆绑名称。
导航到数据文件夹。 例如:
<author-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21/data
复制HMAC和主控文件。
然后,转到要将HMAC密钥重复到的目标实例,并导航到数据文件夹。 例如:
<publish-aem-install-dir>/crx-quickstart/launchpad/felix/bundle21/data
粘贴之前复制的两个文件。
如果目标 实例已运行,请刷新Crypto Bundle。
对要将密钥复制到的所有实例重复上述步骤。
您可以在首次安装AEM时添加以下参数,还原到6.3之前存储密钥的方法:
-Dcom.adobe.granite.crypto.file.disable=true
在AEM 6.2及更早版本中,密钥存储在/etc/key
节点下的存储库中。
在实例中安全复制密钥的建议方法是仅复制此节点。 您可以通过CRXDE Lite有选择地复制节点:
/etc/key
节点。Adobe强烈建议在开始生产之前对AEM基础架构执行渗透测试。
新开发必须遵循安全最佳实践,以确保AEM环境的安全。