The Dispatcher Security Checklist the-dispatcher-security-checklist
ÃÛ¶¹ÊÓƵ recommends that you complete the following checklist before going on production.
Use the Latest Version of Dispatcher use-the-latest-version-of-dispatcher
Install the latest available version that is available for your platform. Upgrade your Dispatcher instance to use the latest version to take advantage of product and security enhancements. See Installing Dispatcher.
[Thu Apr 30 17:30:49 2015] [I] [23171(140735307338496)] Dispatcher initialized (build 4.1.9)
httpd.conf
.Restrict Clients that Can Flush Your Cache restrict-clients-that-can-flush-your-cache
ÃÛ¶¹ÊÓƵ recommends that you limit the clients that can flush your cache.
Enable the HTTPS for transport layer security enable-https-for-transport-layer-security
ÃÛ¶¹ÊÓƵ recommends enabling the HTTPS transport layer on both author and publishing instances.
Restrict Access restrict-access
When configuring the Dispatcher, restrict external access as much as possible. See Example /filter Section in the Dispatcher documentation.
Make Sure Access to Administrative URLs is Denied make-sure-access-to-administrative-urls-is-denied
Make sure you use filters to block external access to any administrative URLs, such as the Web Console.
See Testing Dispatcher Security for a list of URLs that must be blocked.
Use Allowlists Instead Of Blocklists use-allowlists-instead-of-blocklists
Allowlists are a better way of providing access control since inherently, they assume that all access requests should be denied unless they are explicitly part of the allowlist. This model provides more restrictive control over new requests that might not have been reviewed yet or considered during a certain configuration stage.
Run Dispatcher with a Dedicated System User run-dispatcher-with-a-dedicated-system-user
When configuring the Dispatcher, ensure that the web server is ran by a dedicated user with least privileges. It is recommended that you only grant write access to the Dispatcher cache folder.
Also, IIS users must configure their website as follows:
- In the physical path setting for your web site, select Connect as a specific user.
- Set the user.
Prevent Denial of Service (DoS) Attacks prevent-denial-of-service-dos-attacks
A denial of service (DoS) attack is an attempt to make a computer resource unavailable to its intended users.
At the Dispatcher level, there are two methods of configuring to prevent DoS attacks: Filters
-
Use the mod_rewrite module (for example, ) to perform URL validations (if the URL pattern rules are not too complex).
-
Prevent the Dispatcher from caching URLs with spurious extensions by using filters.
For example, change the caching rules to limit caching to the expected mime types, such as:.html
.jpg
.gif
.swf
.js
.doc
.pdf
.ppt
An example configuration file can be seen for restricting external access. It includes restrictions for mime types.
To enable full functionality on the publish instances, configure filters to prevent access to the following nodes:
/etc/
/libs/
Then, configure filters to allow access to the following node paths:
-
/etc/designs/*
-
/etc/clientlibs/*
-
/etc/segmentation.segment.js
-
/libs/cq/personalization/components/clickstreamcloud/content/config.json
-
/libs/wcm/stats/tracker.js
-
/libs/cq/personalization/*
(JS, CSS, and JSON) -
/libs/cq/security/userinfo.json
(CQ user information) -
/libs/granite/security/currentuser.json
(data must not be cached) -
/libs/cq/i18n/*
(Internalization)
Configure Dispatcher to prevent CSRF Attacks configure-dispatcher-to-prevent-csrf-attacks
AEM provides a framework aimed at preventing Cross-Site Request Forgery attacks. To make proper use of this framework, allowlist CSRF token support in the Dispatcher by doing the following:
- Creating a filter to allow the
/libs/granite/csrf/token.json
path; - Add the
CSRF-Token
header to theclientheaders
section of the Dispatcher configuration.
Prevent Clickjacking prevent-clickjacking
To prevent clickjacking, ÃÛ¶¹ÊÓƵ recommends that you configure your webserver to provide the X-FRAME-OPTIONS
HTTP header set to SAMEORIGIN
.
For more information on clickjacking, see the .
Perform a Penetration Test perform-a-penetration-test
ÃÛ¶¹ÊÓƵ strongly recommends performing a penetration test of your AEM infrastructure before going on production.