Gebruik ModSecurity om uw AEM site te beschermen tegen DoS-aanvallen
Leer hoe te om ModSecurity toe te laten om uw plaats tegen Ontkenning van de aanvallen van de Dienst (Dos) te beschermen gebruikend de Reeks van de Regel van de Kern ModSecurity ModSecurity (CRS) op Adobe Experience Manager (AEM) Publish Dispatcher.
Overzicht
De Open stichting van de Veiligheid Project® van de Toepassing van het Web van de Toepassing (OWASP)verstrekt de Hoogste 10 van de ASPISschetterend de tien meest kritieke veiligheidszorgen voor Webtoepassingen.
ModSecurity is een open-source oplossing voor meerdere platforms die bescherming biedt tegen een reeks aanvallen op webtoepassingen. Het staat ook voor het verkeer van HTTP controle, registreren, en analyse in real time toe.
OWSAP® verstrekt ook de Reeks van de Regel van de Kern OWASP® ModSecurity (CRS). CRS is een reeks generische aanvalsopsporing regels voor gebruik met ModSecurity. CRS is er dus op gericht webtoepassingen te beschermen tegen een breed scala aan aanvallen, waaronder de OWASP Top Tien, met een minimum aan valse waarschuwingen.
Dit leerprogramma toont aan hoe te om DOS-BESCHERMING regel van CRS toe te laten en te vormen om uw plaats tegen een potentiële aanval van Dos te beschermen.
CRS toevoegen aan Dispatcher-projectmodule
-
De download en haalt recentste Reeks van de Regel van de Kern van OWASP ModSecurity.
code language-shell # Replace the X.Y.Z with relevent version numbers. $ wget https://github.com/coreruleset/coreruleset/archive/refs/tags/vX.Y.Z.tar.gz # For version v3.3.5 when this tutorial is published $ wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.5.tar.gz # Extract the downloaded file $ tar -xvzf coreruleset-3.3.5.tar.gz
-
Maak de
modsec/crs
mappen binnendispatcher/src/conf.d/
in de code van uw AEM project. Bijvoorbeeld, in het lokale exemplaar van het AEM WKND project van Plaatsen.{width="200" modal="regular"}
-
Kopieer de map
coreruleset-X.Y.Z/rules
van het gedownloade CRS-releasepakket naar de mapdispatcher/src/conf.d/modsec/crs
. -
Kopieer het
coreruleset-X.Y.Z/crs-setup.conf.example
-bestand van het gedownloade CRS-releasepakket naar dedispatcher/src/conf.d/modsec/crs
-map en geef het bestand een andere naam incrs-setup.conf
. -
Schakel alle gekopieerde CRS-regels uit vanuit de
dispatcher/src/conf.d/modsec/crs/rules
door ze een andere naam te geven alsXXXX-XXX-XXX.conf.disabled
. U kunt de onderstaande opdrachten gebruiken om de naam van alle bestanden tegelijk te wijzigen.code language-shell # Go inside the newly created rules directory within the dispathcher module $ cd dispatcher/src/conf.d/modsec/crs/rules # Rename all '.conf' extension files to '.conf.disabled' $ for i in *.conf; do mv -- "$i" "$i.disabled"; done
Zie anders genoemd regels CRS en configuratiedossier in de WKND projectcode.
{width="200" modal="regular"}
De de beschermingsregel van de Ontkenning van de Dienst (Dos) toelaten en vormen
Om de de beschermingsregel van de Ontkenning van de Dienst (Dos) toe te laten en te vormen, volg de volgende stappen:
-
Schakel de beveiligingsregel van het besturingssysteem in door de naam van de
REQUEST-912-DOS-PROTECTION.conf.disabled
te wijzigen inREQUEST-912-DOS-PROTECTION.conf
(of de.disabled
uit de extensie van de liniaal te verwijderen) in de mapdispatcher/src/conf.d/modsec/crs/rules
. -
Vorm de regel door DOS_COUNTER_THRESHOLD, DOS_BURST_TIME_SLICE, DOS_BLOCK_TIMEOUT variabelen te bepalen.
- Maak een
crs-setup.custom.conf
-bestand in de mapdispatcher/src/conf.d/modsec/crs
. - Voeg het onderstaande regelfragment toe aan het nieuwe bestand.
code language-none # The Denial of Service (DoS) protection against clients making requests too quickly. # When a client is making more than 25 requests (excluding static files) within # 60 seconds, this is considered a 'burst'. After two bursts, the client is # blocked for 600 seconds. SecAction \ "id:900700,\ phase:1,\ nolog,\ pass,\ t:none,\ setvar:'tx.dos_burst_time_slice=60',\ setvar:'tx.dos_counter_threshold=25',\ setvar:'tx.dos_block_timeout=600'"
- Maak een
In deze configuratie van de voorbeeldregel, DOS_COUNTER_THRESHOLD is 25, DOS_BURST_TIME_SLICE is 60 seconden, en DOS_BLOCK_TIMEOUT onderbreking is 600 seconden. Deze configuratie identificeert meer dan twee voorkomen van 25 verzoeken, exclusief statische dossiers, binnen 60 seconden kwalificeert als aanval van Dos, resulterend in de het verzoeken cliënt om voor 600 seconden (of 10 minuten) te worden geblokkeerd.
CRS initialiseren
Om CRS te initialiseren, verwijder gemeenschappelijke valse positieven, en voeg lokale uitzonderingen voor uw plaats toe volg de onderstaande stappen:
-
Om CRS te initialiseren, verwijder
.disabled
uit het VERZOEK-901-INITIALIZATION dossier. Met andere woorden, wijzig de naam van hetREQUEST-901-INITIALIZATION.conf.disabled
-bestand inREQUEST-901-INITIALIZATION.conf
. -
Om gemeenschappelijke valse positieven zoals lokale IP (127.0.0.1) te verwijderen pingelt, verwijder
.disabled
uit het VERZOEK-905-COMMON-UITZONDERINGEN dossier. -
Als u lokale uitzonderingen wilt toevoegen, zoals het AEM platform of uw sitespecifieke paden, wijzigt u de naam
REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example
inREQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
- Voeg AEM platformspecifieke weguitzonderingen aan het onlangs anders genoemde dossier toe.
code language-none ######################################################## # AEM as a Cloud Service exclusions # ######################################################## # Ignoring AEM-CS Specific internal and reserved paths SecRule REQUEST_URI "@beginsWith /systemready" \ "id:1010,\ phase:1,\ pass,\ nolog,\ ctl:ruleEngine=Off" SecRule REQUEST_URI "@beginsWith /system/probes" \ "id:1011,\ phase:1,\ pass,\ nolog,\ ctl:ruleEngine=Off" SecRule REQUEST_URI "@beginsWith /gitinit-status" \ "id:1012,\ phase:1,\ pass,\ nolog,\ ctl:ruleEngine=Off" ######################################################## # ADD YOUR SITE related exclusions # ######################################################## ...
-
Ook, verwijder
.disabled
uit VERZOEK-910-IP-REPUTATION.conf.disabled voor IP de controle van het reputatieblok enREQUEST-949-BLOCKING-EVALUATION.conf.disabled
voor anomalie scorecontrole.
ModSecurity Apache-configuratie toevoegen
Voer de volgende stappen uit om ModSecurity (ook wel mod_security
Apache-module genoemd) in te schakelen:
-
Maak
modsecurity.conf
opdispatcher/src/conf.d/modsec/modsecurity.conf
met de onderstaande sleutelconfiguraties.code language-none # Include the baseline crs setup Include conf.d/modsec/crs/crs-setup.conf # Include your customizations to crs setup if exist IncludeOptional conf.d/modsec/crs/crs-setup.custom.conf # Select all available CRS rules: #Include conf.d/modsec/crs/rules/*.conf # Or alternatively list only specific ones you want to enable e.g. Include conf.d/modsec/crs/rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf Include conf.d/modsec/crs/rules/REQUEST-901-INITIALIZATION.conf Include conf.d/modsec/crs/rules/REQUEST-905-COMMON-EXCEPTIONS.conf Include conf.d/modsec/crs/rules/REQUEST-910-IP-REPUTATION.conf Include conf.d/modsec/crs/rules/REQUEST-912-DOS-PROTECTION.conf Include conf.d/modsec/crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf # Start initially with engine off, then switch to detection and observe, and when sure enable engine actions #SecRuleEngine Off #SecRuleEngine DetectionOnly SecRuleEngine On # Remember to use relative path for logs: SecDebugLog logs/httpd_mod_security_debug.log # Start with low debug level SecDebugLogLevel 0 #SecDebugLogLevel 1 # Start without auditing SecAuditEngine Off #SecAuditEngine RelevantOnly #SecAuditEngine On # Tune audit accordingly: SecAuditLogRelevantStatus "^(?:5|4(?!04))" SecAuditLogParts ABIJDEFHZ SecAuditLogType Serial # Remember to use relative path for logs: SecAuditLog logs/httpd_mod_security_audit.log # You might still use /tmp for temporary/work files: SecTmpDir /tmp SecDataDir /tmp
-
Selecteer de gewenste
.vhost
in de Dispatcher-module van uw AEM projectdispatcher/src/conf.d/available_vhosts
,wknd.vhost
bijvoorbeeld, en voeg de onderstaande vermelding buiten het<VirtualHost>
-blok toe.code language-none # Enable the ModSecurity and OWASP CRS <IfModule mod_security2.c> Include conf.d/modsec/modsecurity.conf </IfModule> ... <VirtualHost *:80> ServerName "publish" ... </VirtualHost>
Al bovengenoemde CRS ModSecurity en DOS-BESCHERMING configuraties zijn beschikbaar op de AEM 4} tutorial/enable-modsecurity-crs-bescherming van het Project van de Plaatsen WKND 🔗 tak voor uw overzicht.
Dispatcher-configuratie valideren
Wanneer het werken met AEM as a Cloud Service, alvorens uw configuratie van Dispatcher veranderingen op te stellen, wordt het geadviseerd om hen plaatselijk te bevestigen gebruikend validate
manuscript van de AEM Dispatcher Tools van SDK.
# Go inside Dispatcher SDK 'bin' directory
$ cd <YOUR-AEM-SDK-DIR>/<DISPATCHER-SDK-DIR>/bin
# Validate the updated Dispatcher configurations
$ ./validate.sh <YOUR-AEM-PROJECT-CODE-DIR>/dispatcher/src
Implementeren
Stel de plaatselijk bevestigde configuraties van Dispatcher op gebruikend de Cloud Manager Rij van het Webof Volledige pijpleiding van de Stapel. U kunt het Snelle Milieu van de Ontwikkelingvoor snellere het doorgeven tijd ook gebruiken.
Verifiëren
Om de bescherming van Dos, in dit voorbeeld te verifiëren, verzenden meer dan 50 verzoeken (25 verzoekdrempel keer twee voorkomen) binnen een spanwijdte van 60 seconden. Nochtans, zouden deze verzoeken door AEM as a Cloud Service moeten overgaan ingebouwdof om het even welk andere CDNdie uw website vooraf gaat.
Één techniek om CDN over:geven-door te bereiken moet een vraagparameter met a nieuwe willekeurige waarde op elk verzoek van de plaatspagina toevoegen.
Om een groter aantal verzoeken (50 of meer) binnen een korte periode (als 60 seconden) teweeg te brengen, kan Apache JMeterof Benchmark of het hulpmiddel van Abworden gebruikt.
DoS-aanval simuleren met JMeter-script
Volg de onderstaande stappen om een DoS-aanval met JMeter te simuleren:
-
download Apache JMeteren installeerhet plaatselijk
-
Looppashet plaatselijk gebruikend het
jmeter
manuscript van de<JMETER-INSTALL-DIR>/bin
folder. -
Open het steekproef WKND-DoS-Attack-Simulation-TestJMX manuscript in JMeter gebruikend het Open hulpmiddelmenu.
-
Werk de Naam van de Server of IP gebiedswaarde in de Pagina van het Huis en de Steekproef van het Verzoek van de Pagina van het avontuur HTTP die uw milieu URL van het AEM aanpassen. Bekijk andere details van het JMeter-voorbeeldscript.
-
Voer het manuscript uit door de knoop van het Begin van het hulpmiddelmenu te drukken. Het manuscript verzendt 50 HTTP- verzoeken (5 gebruikers en 10 lijnaantallen) tegen de WebND- plaats Pagina van het Huis en Pagina van het avontuur. Aldus een totaal van 100 verzoeken aan niet-statische dossiers, kwalificeert het de aanval van Dos per DOS-BESCHERMING de regeldouaneconfiguratie van CRS.
-
De Resultaten van de Mening in Lijst JMeter luisteraar toont Ontbroken reactiestatus voor verzoekaantal ~ 53 en verder.
-
De 503 code van de Reactie van HTTP is teruggekeerd voor de ontbroken verzoeken, kunt u de details bekijken gebruikend de boom van de Resultaten van de Mening JMeter luisteraar.
Revisielogboeken
De modSecurity logger configuratie registreert de details van het de aanvalsincident van Dos. Voer de volgende stappen uit om de details weer te geven:
-
Download en open het
httpderror
logboekdossier van Publish Dispatcher. -
Onderzoek naar woord
burst
in het logboekdossier, om de fout lijnen te ziencode language-none Tue Aug 15 15:19:40.229262 2023 [security2:error] [pid 308:tid 140200050567992] [cm-p46652-e1167810-aem-publish-85df5d9954-bzvbs] [client 192.150.10.209] ModSecurity: Warning. Operator GE matched 2 at IP:dos_burst_counter. [file "/etc/httpd/conf.d/modsec/crs/rules/REQUEST-912-DOS-PROTECTION.conf"] [line "265"] [id "912170"] [msg "Potential Denial of Service (DoS) Attack from 192.150.10.209 - # of Request Bursts: 2"] [ver "OWASP_CRS/3.3.5"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "paranoia-level/1"] [tag "attack-dos"] [tag "OWASP_CRS"] [tag "capec/1000/210/227/469"] [hostname "publish-p46652-e1167810.adobeaemcloud.com"] [uri "/content/wknd/us/en/adventures.html"] [unique_id "ZNuXi9ft_9sa85dovgTN5gAAANI"] ... Tue Aug 15 15:19:40.515237 2023 [security2:error] [pid 309:tid 140200051428152] [cm-p46652-e1167810-aem-publish-85df5d9954-bzvbs] [client 192.150.10.209] ModSecurity: Access denied with connection close (phase 1). Operator EQ matched 0 at IP. [file "/etc/httpd/conf.d/modsec/crs/rules/REQUEST-912-DOS-PROTECTION.conf"] [line "120"] [id "912120"] [msg "Denial of Service (DoS) attack identified from 192.150.10.209 (1 hits since last alert)"] [ver "OWASP_CRS/3.3.5"] [tag "application-multi"] [tag "language-multi"] [tag "platform-multi"] [tag "paranoia-level/1"] [tag "attack-dos"] [tag "OWASP_CRS"] [tag "capec/1000/210/227/469"] [hostname "publish-p46652-e1167810.adobeaemcloud.com"] [uri "/us/en.html"] [unique_id "ZNuXjAN7ZtmIYHGpDEkmmwAAAQw"]
-
Herzie de details als cliëntIP adres, actie, foutenmelding, en verzoekdetails.
Prestatieeffect van ModSecurity
Het toelaten van ModSecurity en de bijbehorende regels heeft sommige prestatiesimplicaties, zodat ben bewust van welke regels worden vereist, overtollig, en overgeslagen. De partner met uw deskundigen van de Veiligheid van het Web om, de regels toe te laten en aan te passen CRS.
Aanvullende regels
Dit leerprogramma laat slechts toe en past de DOS-BESCHERMING regel van CRS voor demonstratiedoeleinden aan. Het wordt geadviseerd om met de deskundigen van de Veiligheid van het Web samen te werken om, aangewezen regels te begrijpen te herzien en te vormen.