CRS toevoegen aan Dispatcher-projectmodule

  1. De download en haalt recentste Reeks van de Regel van de Kern van OWASP ModSecurity.

    # 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 in dispatcher/src/conf.d/ in de code van uw AEM-project. Bijvoorbeeld, in het lokale exemplaar van het project van de Plaatsen van AEM WKND.

    omslag CRS binnen het projectcode van AEM - ModSecurity

  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.

    # 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 het projectcode van AEM - ModSecurity

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.
    # 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 platformspecifieke weguitzonderingen van AEM aan het onlangs anders genoemde dossier toe.
    ########################################################
    # 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
Zorg er bij de configuratie op AEM 6.5 voor dat u de bovenstaande paden vervangt door de respectievelijke AMS- of on-prem-paden die de status van de AEM (ook wel bekend als hartslagpaden) controleren.

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.

    # 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 toe buiten het <VirtualHost> -blok.

    # 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 4} tutorial/enable-modsecurity-crs-bescherming van het Project van de Plaatsen van AEM 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 AEM SDK Dispatcher Tools.

# 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 monsternemer van het Verzoek van de Pagina van het avontuur HTTP bij die uw milieu URL van de testAEM aanpassen. Bekijk andere details van het JMeter-voorbeeldscript.

    HTTP- Verzoek JMetere van de Naam van de Server van AEM - 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 publiceer Dispatcher.

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

    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.