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.

TIP
Het is belangrijk om nota te nemen, voldoet AEM as a Cloud Service beheerde CDNaan de prestaties en de veiligheidsvereisten van de meeste klant. Nochtans, verstrekt ModSecurity een extra laag van veiligheid en staat klant-specifieke regels, en configuraties toe.

CRS toevoegen aan Dispatcher-projectmodule

  1. 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
    
  2. Maak de modsec/crs mappen binnen dispatcher/src/conf.d/ in de code van uw AEM project. Bijvoorbeeld, in het lokale exemplaar van het AEM WKND project van Plaatsen.

    omslag CRS binnen AEM projectcode - ModSecurity {width="200" modal="regular"}

  3. Kopieer de map coreruleset-X.Y.Z/rules van het gedownloade CRS-releasepakket naar de map dispatcher/src/conf.d/modsec/crs .

  4. Kopieer het coreruleset-X.Y.Z/crs-setup.conf.example -bestand van het gedownloade CRS-releasepakket naar de dispatcher/src/conf.d/modsec/crs -map en geef het bestand een andere naam in crs-setup.conf .

  5. Schakel alle gekopieerde CRS-regels uit vanuit de dispatcher/src/conf.d/modsec/crs/rules door ze een andere naam te geven als XXXX-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.

    Gehandicapte regels CRS binnen AEM projectcode - ModSecurity {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:

  1. Schakel de beveiligingsregel van het besturingssysteem in door de naam van de REQUEST-912-DOS-PROTECTION.conf.disabled te wijzigen in REQUEST-912-DOS-PROTECTION.conf (of de .disabled uit de extensie van de liniaal te verwijderen) in de map dispatcher/src/conf.d/modsec/crs/rules .

  2. Vorm de regel door DOS_COUNTER_THRESHOLD, DOS_BURST_TIME_SLICE, DOS_BLOCK_TIMEOUT variabelen te bepalen.

    1. Maak een crs-setup.custom.conf -bestand in de map dispatcher/src/conf.d/modsec/crs .
    2. 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'"
    

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.

WARNING
Om de aangewezen waarden voor uw behoeften te bepalen, werk met uw team van de Veiligheid van het Web samen.

CRS initialiseren

Om CRS te initialiseren, verwijder gemeenschappelijke valse positieven, en voeg lokale uitzonderingen voor uw plaats toe volg de onderstaande stappen:

  1. Om CRS te initialiseren, verwijder .disabled uit het VERZOEK-901-INITIALIZATION dossier. Met andere woorden, wijzig de naam van het REQUEST-901-INITIALIZATION.conf.disabled -bestand in REQUEST-901-INITIALIZATION.conf .

  2. Om gemeenschappelijke valse positieven zoals lokale IP (127.0.0.1) te verwijderen pingelt, verwijder .disabled uit het VERZOEK-905-COMMON-UITZONDERINGEN dossier.

  3. 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 in REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf

    1. 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                     #
    ########################################################
    ...
    
  4. Ook, verwijder .disabled uit VERZOEK-910-IP-REPUTATION.conf.disabled voor IP de controle van het reputatieblok en REQUEST-949-BLOCKING-EVALUATION.conf.disabled voor anomalie scorecontrole.

TIP
Wanneer het vormen op AEM 6.5 zorg ervoor om de bovengenoemde wegen met respectieve AMS of op-prem wegen te vervangen die de gezondheid van de AEM (alias hartslagwegen) verifiëren.

ModSecurity Apache-configuratie toevoegen

Voer de volgende stappen uit om ModSecurity (ook wel mod_security Apache-module genoemd) in te schakelen:

  1. Maak modsecurity.conf op dispatcher/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
    
  2. Selecteer de gewenste .vhost in de Dispatcher-module van uw AEM project dispatcher/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:

  1. download Apache JMeteren installeerhet plaatselijk

  2. Looppashet plaatselijk gebruikend het jmeter manuscript van de <JMETER-INSTALL-DIR>/bin folder.

  3. Open het steekproef WKND-DoS-Attack-Simulation-TestJMX manuscript in JMeter gebruikend het Open hulpmiddelmenu.

    open steekproefWKND JMX van de Test JMX- ModSecurity

  4. 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.

    AEM de Naam van de Server HTTP- Verzoek JMetere - ModSecurity

  5. 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.

    voert Manuscript JMeter uit - ModSecurity

  6. De Resultaten van de Mening in Lijst JMeter luisteraar toont Ontbroken reactiestatus voor verzoekaantal ~ 53 en verder.

    Ontbroken Reactie in Resultaten van de Mening in Lijst JMeter - ModSecurity

  7. 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.

    503 Reactie JMeter - ModSecurity

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:

  1. Download en open het httpderror logboekdossier van Publish Dispatcher.

  2. Onderzoek naar woord burst in het logboekdossier, om de fout lijnen te zien

    code 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"]
    
  3. 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.

recommendation-more-help
c92bdb17-1e49-4e76-bcdd-89e4f85f45e6