Trafikfilterregler inklusive WAF-regler traffic-filter-rules-including-waf-rules

Trafikfilterregler kan användas för att blockera eller tillåta förfrågningar i CDN-lagret, vilket kan vara användbart i scenarier som:

  • Begränsa åtkomsten till specifika domäner till intern företagstrafik innan en ny webbplats publiceras
  • Fastställande av hastighetsgränser som är mindre mottagliga för volymetriska DoS-attacker
  • Förhindra att IP-adresser som du vet är skadliga riktas mot dina sidor

De flesta av dessa trafikfilterregler är tillgängliga för alla AEM as a Cloud Service webbplatser och Forms-kunder. De arbetar huvudsakligen med egenskaper för begäran och begäranrubriker, inklusive IP, värdnamn, sökväg och användaragent.

En underkategori av trafikfilterregler kräver antingen en förbättrad säkerhetslicens eller en licens för WAF-DDoS-skydd. Dessa kraftfulla regler kallas för trafikfilterregler för WAF (Web Application Firewall) (eller för korta WAF-regler) och har tillgång till WAF-flaggor beskrivs senare i den här artikeln.

Trafikfilterregler kan distribueras via Cloud Managers konfigurationspipelines för att dev, stage och produktionsmiljötyper i produktionsprogram (icke-sandlådeprogram). Stöd för de regionala utvecklingsföretagen kommer i framtiden.

Följ igenom en självstudiekurs för att snabbt bygga upp konkreta expertkunskaper om den här funktionen.

NOTE
Intresserad av andra alternativ för att konfigurera trafik vid leveransnätverket, inklusive redigering av begäran/svar, deklarering av omdirigeringar och proxing till ett icke-AEM ursprung? Lär dig hur man gör genom att gå med i det tidiga adopterprogrammet.

Hur den här artikeln ordnas how-organized

Den här artikeln är indelad i följande avsnitt:

  • Trafikskydd - översikt: Lär dig hur du skyddas mot skadlig trafik.
  • Föreslagen process för att konfigurera regler: Läs om en högnivåmetod för att skydda er webbplats.
  • Inställningar: Upptäck hur du konfigurerar, konfigurerar och distribuerar trafikfilterregler, inklusive avancerade WAF-regler.
  • Regelsyntax: Läs om hur du deklarerar trafikfilterregler i cdn.yaml konfigurationsfil. Detta omfattar både trafikfilterreglerna som är tillgängliga för alla Sites- och Forms-kunder och underkategorin med WAF-regler för dem som licensierar den funktionen.
  • Exempel på regler: Se exempel på deklarerade regler som hjälper dig att komma igång.
  • Regler för hastighetsbegränsning: Lär dig hur du använder hastighetsbegränsande regler för att skydda din webbplats från attacker med stora volymer.
  • CDN-loggar: Se vilka regler och WAF-flaggor som matchar er trafik.
  • Kontrollpanelsverktyg: Analysera dina CDN-loggar och hitta nya trafikfilterregler.
  • Rekommenderade startregler: En uppsättning regler att komma igång med.
  • Självstudiekurs: Praktisk kunskap om funktionen, inklusive hur du använder kontrollpanelsverktyg för att deklarera rätt regler.

Adobe inbjuder dig att ge feedback eller ställa frågor om trafikfilterregler genom att skicka e-post aemcs-waf-adopter@adobe.com.

Trafikskydd - översikt traffic-protection-overview

I det digitala landskapet är skadlig trafik ett hot som aldrig tidigare förekommit. Adobe inser hur allvarlig risken är och erbjuder flera strategier för att skydda kundtillämpningar och mildra attacker när de inträffar.

Vid kanten absorberar det hanterade CDN-nätverket DoS-attacker i nätverkslagret (lager 3 och 4), inklusive översvämnings- och reflektions-/amplifieringsattacker.

Som standard vidtar Adobe åtgärder för att förhindra prestandaförsämringar på grund av oväntat höga trafikökningar över ett visst tröskelvärde. Om det inträffar en DoS-attack som påverkar webbplatsens tillgänglighet larmas Adobe ledningsgrupper och vidtar åtgärder för att minska risken.

Kunderna kan vidta förebyggande åtgärder för att mildra attacker i programlager (lager 7) genom att konfigurera regler i olika lager i innehållsleveransflödet.

På exempelvis lagret Apache kan man konfigurera antingen Dispatcher-modul eller ModSecurity för att begränsa åtkomsten till visst innehåll.

Som beskrivs i den här artikeln kan trafikfilterregler distribueras till hanterat CDN i Adobe med hjälp av Cloud Managers konfigurationsflöde. Utöver trafikfilterregler som baseras på egenskaper som IP-adress, sökväg och rubriker, eller regler som baseras på att hastighetsgränser anges, kan kunder även licensiera en kraftfull underkategori av trafikfilterregler som kallas WAF-regler.

Föreslagen process suggested-process

Nedan följer en högnivårekommenderad process från början till slut för att komma fram till rätt trafikfilterregler:

  1. Konfigurera icke-produktion- och produktionskonfigurationspipelines enligt beskrivningen i Inställningar -avsnitt.
  2. Kunder som har licensierat underkategorin för reglerna för WAF-trafikfilter bör aktivera dem i Cloud Manager.
  3. Läs igenom och prova självstudiekursen för att få en större förståelse för hur du använder trafikfilterregler, inklusive WAF-regler om de har licensierats. Självstudiekursen leder dig genom att distribuera regler till en utvecklingsmiljö, simulera skadlig trafik, ladda ned CDN-loggaroch analysera dem i kontrollpanelsverktyg.
  4. Kopiera de rekommenderade startreglerna till cdn.yaml och distribuera konfigurationen till produktionsmiljön i loggläge.
  5. Analysera resultatet efter att ha samlat in viss trafik med kontrollpanelsverktyg för att se om det fanns några träffar. Leta upp felaktiga positiva inställningar och gör eventuella nödvändiga justeringar för att aktivera startreglerna i blockläge.
  6. Lägg till anpassade regler baserat på analys av CDN-loggarna, först testning med simulerad trafik i utvecklingsmiljöer innan driftsättning i scen- och produktionsmiljöer i loggläge, sedan blockläge.
  7. Övervaka trafiken kontinuerligt och ändra reglerna allteftersom hotbilden utvecklas.

Inställningar setup

  1. Skapa först följande mapp- och filstruktur för mappen på den översta nivån i projektet i Git:

    code language-none
    config/
         cdn.yaml
    
  2. cdn.yaml ska innehålla metadata och en lista med trafikfilterregler och WAF-regler.

    code language-none
    kind: "CDN"
    version: "1"
    metadata:
      envTypes: ["dev"]
    data:
      trafficFilters:
        rules:
        # Block simple path
        - name: block-path
          when:
            allOf:
              - reqProperty: tier
                matches: "author|publish"
              - reqProperty: path
                equals: '/block/me'
          action: block
    

The kind parametern ska anges till CDN och versionen ska anges till schemaversionen, som är 1. Se följande exempel.

  1. Om WAF-regler är licensierade bör du aktivera funktionen i Cloud Manager, enligt beskrivningen nedan för både nya och befintliga programscenarier.

    1. Om du vill konfigurera WAF för ett nytt program ska du kontrollera WAF-DDOS-skydd kryssruta på Säkerhet när du lägga till ett produktionsprogram.

    2. Så här konfigurerar du WAF för ett befintligt program: redigera ditt program och Säkerhet avmarkera eller kontrollera WAF-DDOS när som helst.

  2. För andra miljötyper än RDE skapar du en riktad distributionskonfiguration i Cloud Manager.

För RDE används kommandoraden, men RDE stöds inte för närvarande.

Anteckningar

  • Du kan använda yq för att lokalt validera YAML-formateringen i konfigurationsfilen (till exempel yq cdn.yaml).

Syntax för trafikfilterregler rules-syntax

Du kan konfigurera traffic filter rules för att matcha på mönster som IP, användaragent, begäranrubriker, värdnamn, geo och url.

Kunder som licensierar erbjudandet Förbättrat skydd eller skydd via WAF-DDoS kan också konfigurera en särskild kategori trafikfilterregler som kallas för WAF traffic filter rules (eller WAF-regler för korta) som hänvisar till en eller flera WAF-flaggor.

Här är ett exempel på en uppsättning trafikfilterregler, som även innehåller en WAF-regel.

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: "path-rule"
        when:
          allOf:
            - { reqProperty: path, equals: /block-me }
            - { reqProperty: tier, equals: publish }
        action:
          type: block
      - name: "Enable-SQL-Injection-and-XSS-waf-rules-globally"
        when: { reqProperty: path, like: "*" }
        action:
          type: block
          wafFlags: [ SQLI, XSS]

Formatet på trafikfilterreglerna i cdn.yaml filen beskrivs nedan. Se några andra exempel i ett senare avsnitt och ett separat avsnitt på Regler för hastighetsbegränsning.

Egenskap
De flesta trafikfilterreglerna
WAF-trafikfilterregler
Typ
Standardvärde
Beskrivning
name
X
X
string
-
Regelnamn (64 tecken långt, får bara innehålla alfanumeriska tecken och - )
när
X
X
Condition
-
Den grundläggande strukturen är:

{ <getter>: <value>, <predicate>: <value> }

Se Syntax för villkorsstruktur nedan, som beskriver get-metoderna, predikaten och hur du kombinerar flera villkor.
åtgärd
X
X
Action
logg
log-, allow-, block- eller Action-objekt. Standard är logg
rateLimit
X
RateLimit
inte definierad
Konfiguration för hastighetsbegränsning. Hastighetsbegränsning är inaktiverad om den inte är definierad.

Det finns ett separat avsnitt nedan som beskriver rateLimit-syntaxen, tillsammans med exempel.

Villkorsstruktur condition-structure

Ett villkor kan vara antingen ett enkelt villkor eller en grupp villkor.

Enkelt villkor

Ett enkelt villkor består av en get-metod och ett predikat.

{ <getter>: <value>, <predicate>: <value> }

Gruppvillkor

En grupp villkor består av flera enkla och/eller gruppvillkor.

<allOf|anyOf>:
  - { <getter>: <value>, <predicate>: <value> }
  - { <getter>: <value>, <predicate>: <value> }
  - <allOf|anyOf>:
    - { <getter>: <value>, <predicate>: <value> }
Egenskap
Typ
Betydelse
allOf
array[Condition]
och operation. true om alla angivna villkor returnerar true
anyOf
array[Condition]
eller operation. true om något av villkoren i listan returnerar true

Getter

Egenskap
Typ
Beskrivning
reqProperty
string

Request-egenskap.

En av:

  • path: Returnerar den fullständiga sökvägen till en URL utan frågeparametrarna.
  • queryString: Returnerar frågedelen av en URL
  • method: Returnerar HTTP-metoden som används i begäran.
  • tier: Returnerar ett av author, preview, eller publish.
  • domain: Returnerar egenskapen domain (enligt definitionen i Host sidhuvud) i gemener
  • clientIp: Returnerar klient-IP.
  • clientCountry: Returnerar en kod med två bokstäver (Regional indikatorsymbol) som anger i vilket land kunden befinner sig.
reqHeader
string
Returnerar begärandehuvud med angivet namn
queryParam
string
Returnerar frågeparameter med angivet namn
reqCookie
string
Returnerar cookie med angivet namn
postParam
string
Returnerar Post-parametern med det angivna namnet från begärandetexten. Fungerar bara när brödtexten är av innehållstyp application/x-www-form-urlencoded

Förutse

Egenskap
Typ
Betydelse
är lika med
string
true om get-resultatet är lika med det angivna värdet
doesNotEqual
string
true om get-resultatet inte är lika med det angivna värdet
gilla
string
true om get-resultatet matchar angivet mönster
notLike
string
true om get-resultatet inte matchar det angivna mönstret
matchar
string
true om get-resultatet matchar angivet regex
doesNotMatch
string
true om get-resultatet inte matchar angivet regex
in
array[string]
true om den angivna listan innehåller get-resultat
notIn
array[string]
true om den angivna listan inte innehåller get-resultat
exists
boolean
true om värdet är true och egenskapen finns eller om värdet är false och egenskapen inte finns

Anteckningar

  • Egenskapen request clientIp kan bara användas med följande predikat: equals, doesNotEqual, in, notIn. clientIp kan också jämföras med IP-intervall när du använder in och notIn predikar. I följande exempel implementeras ett villkor för att utvärdera om en klient-IP ligger i IP-intervallet 192.168.0.0/24 (från 192.168.0.0 till 192.168.0.255):
when:
  reqProperty: clientIp
  in: [ "192.168.0.0/24" ]
  • Adobe rekommenderar att man använder regex101 och Snabb vänteläge när du arbetar med regex. Du kan även läsa mer om hur Fastly hanterar regex i detta artikel.

Åtgärdsstruktur action-structure

An action kan antingen vara en sträng som anger åtgärden (tillåt, blockera eller logg), eller ett objekt som består av både åtgärdstypen (tillåt, blockera eller logg) och alternativ som wafFlags och/eller status.

Åtgärdstyper

Åtgärderna prioriteras utifrån deras typer i följande tabell, som ordnas för att återspegla den ordning som åtgärderna utförs:

Namn
Tillåtna egenskaper
Betydelse
tillåt
wafFlags (valfritt), alert (valfritt, ännu inte släppt)
om wafFlags inte finns avbryter ytterligare regelbearbetning och fortsätter att ge svar. Om det finns wafFlags inaktiverar den angivna WAF-skyddet och fortsätter till ytterligare regelbearbetning.
Om en varning anges skickas ett meddelande från Åtgärdscenter om regeln aktiveras 10 gånger i ett 5 minuter långt fönster. Den här funktionen har inte släppts ännu. Se Varningar om trafikfilterregler om du vill ha information om hur du går med i programmet för tidiga användare.
block
status, wafFlags (frivilligt och ömsesidigt uteslutande), alert (valfritt, ännu inte släppt)
Om wafFlags inte finns returnerar HTTP-fel utan att alla andra egenskaper skickas, definieras felkoden av statusegenskapen eller så är standardvärdet 406. Om det finns wafFlags aktiverar det angivna WAF-skyddet och fortsätter till ytterligare regelbearbetning.
Om en varning anges skickas ett meddelande från Åtgärdscenter om regeln aktiveras 10 gånger i ett 5 minuter långt fönster. Den här funktionen har inte släppts ännu. Se Varningar om trafikfilterregler om du vill ha information om hur du går med i programmet för tidiga användare.
logg
wafFlags (valfritt), alert (valfritt, ännu inte släppt)
loggar det faktum att regeln utlöstes, annars påverkas inte bearbetningen. wafFlags har ingen effekt.
Om en varning anges skickas ett meddelande från Åtgärdscenter om regeln aktiveras 10 gånger i ett 5 minuter långt fönster. Den här funktionen har inte släppts ännu. Se Varningar om trafikfilterregler om du vill ha information om hur du går med i programmet för tidiga användare.

WAF-flagglista waf-flags-list

The wafFlags egenskapen, som kan användas i de licensbara reglerna för WAF-trafikfilter, kan referera till följande:

Flagga-ID
Flaggnamn
Beskrivning
SQLI
SQL-inmatning
SQL Injection är ett försök att få åtkomst till ett program eller få privilegierad information genom att köra godtyckliga databasfrågor.
BAKDOOR
Bakdörr
En bakdörrssignal är en begäran som försöker avgöra om det finns en gemensam bakdörrsfil i systemet.
CMDEXE
Kommandokörning
Kommandokörning är ett försök att få kontroll över eller skada ett målsystem genom godtyckliga systemkommandon med hjälp av användarindata.
CMDEXE-NO-BIN
Kommandokörning utom på /bin/
Tillhandahåll samma skyddsnivå som CMDEXE när false-positiv inaktiverades på /bin på grund av AEM.
XSS
Skript för flera webbplatser
Korsskriptning mellan webbplatser är ett försök att kapa en användares konto eller webbläsarsession via skadlig JavaScript-kod.
TRAVERSAL
Kataloggenomgång
Directory Traversal är ett försök att navigera i behöriga mappar i ett system för att kunna hämta känslig information.
USERAGENT
Attackverktyg
Attack Tooling är användning av automatiserad programvara för att identifiera säkerhetsproblem eller för att försöka utnyttja en upptäckt säkerhetslucka.
LOG4J-JNDI
Log4J JNDI
Log4J JNDI-attacker försöker utnyttja Log4Shell-sårbarhet finns i Log4J-versioner tidigare än 2.16.0
BHH
Felaktiga Hop-huvuden
Felaktiga Hop-huvuden anger ett försök till HTTP-smuggling via en felformaterad Transfer-Encoding (TE) eller Content-Length (CL)-rubrik, eller en korrekt formaterad TE- och CL-rubrik
KODEINJEKTION
Kodinmatning
Kodinjektion är ett försök att få kontroll över eller skada ett målsystem genom godtyckliga programkodkommandon som användaren anger.
ABNORMALPATH
Onormal bana
Onormal bana anger att den ursprungliga banan skiljer sig från den normaliserade banan (till exempel /foo/./bar normaliseras till /foo/bar)
DUBBELKODNING
Dubbel kodning
Dubbel kodning används för att kontrollera om HTML-tecken med dubbel kodning kan användas
NOTUTF8
Ogiltig kodning
Ogiltig kodning kan göra att servern översätter skadliga tecken från en begäran till ett svar, vilket kan orsaka denial of service eller XSS
JSON-ERROR
JSON-kodningsfel
En begärandetext för POST, PUT eller PATCH som har angetts som innehåller JSON i begärandehuvudet för Content-Type men som innehåller JSON-tolkningsfel. Detta beror ofta på ett programmeringsfel eller en automatiserad eller skadlig begäran.
MALFORMED-DATA
Felformaterade data i begärandetexten
En begärandetext för POST, PUT eller PATCH som har fel format enligt begärandehuvudet Content-Type. Om en begäranderubrik av typen"Content-Type: application/x-www-form-urlencoded" anges och innehåller en POST som är json. Detta är ofta ett programmeringsfel, en automatiserad eller skadlig begäran. Kräver agent 3.2 eller högre.
SANS
Skadlig IP-trafik
SANS Internet Storm Center lista över rapporterade IP-adresser som deltar i skadlig aktivitet.
INNEHÅLLSTYP
Begäranhuvudet Content-Type saknas
En POST-, PUT- eller PATCH-begäran som inte har någon Content-Type-begäranderubrik. Som standard ska programservrar anta"Content-Type: text/plain; charset=us-ascii" i det här fallet. Många automatiska och skadliga förfrågningar kanske saknar"Innehållstyp".
NOUA
Ingen användaragent
Många automatiserade och skadliga förfrågningar använder falska eller saknade användaragenter för att göra det svårt att identifiera vilken typ av enhet som framställningarna görs på.
TORNODE
Tor Traffic
Tor är programvara som döljer en användares identitet. En spik i Tor-trafiken kan indikera en angripare som försöker maskera sin plats.
NULLBYTE
Null byte
Null-byte visas normalt inte i en begäran och anger att begäran är felformaterad och potentiellt skadlig.
PRIVATEFILE
Privata filer
Privata filer är konfidentiella, till exempel Apache .htaccess eller en konfigurationsfil som kan läcka känslig information
SKANNER
Skanner
Identifierar vanliga skanningstjänster och verktyg
RESPONSESPLIST
HTTP-svarsdelning
Identifierar när CRLF-tecken skickas som indata till programmet för att mata in rubriker i HTTP-svaret
XML-FEL
XML-kodningsfel
En begärandetext för POST, PUT eller PATCH som har angetts som innehållande XML i begärandehuvudet för Content-Type men som innehåller XML-tolkningsfel. Detta beror ofta på ett programmeringsfel eller en automatiserad eller skadlig begäran.

Överväganden considerations

  • När två konfliktskapande regler skapas har alltid de tillåtna reglerna företräde framför blockreglerna. Om du till exempel skapar en regel som blockerar en viss sökväg och en regel som tillåter en viss IP-adress, tillåts förfrågningar från den IP-adressen på den blockerade sökvägen.

  • Om en regel matchas och blockeras svarar CDN med en 406 returkod.

  • Konfigurationsfilerna bör inte innehålla hemligheter eftersom de skulle kunna läsas av alla som har åtkomst till Git-databasen.

  • IP-tillåtelselista som definieras i Cloud Manager har företräde framför trafikfilterregler.

  • WAF-regelmatchningar visas bara i CDN-loggar för CDN-missar och -pass, inte träffar.

Exempel på regler examples

Vissa regelexempel följer. Se rabattgränssektion närmare anges om det finns exempel på regler för avgiftsgränser.

Exempel 1

Den här regeln blockerar förfrågningar som kommer från IP 192.168.1.1:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
     rules:
       - name: "block-request-from-ip"
         when: { reqProperty: clientIp, equals: "192.168.1.1" }
         action:
           type: block

Exempel 2

Den här regeln blockerar begäran på sökvägen /helloworld vid publicering med en användaragent som innehåller Chrome:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: "block-request-from-chrome-on-path-helloworld-for-publish-tier"
        when:
          allOf:
          - { reqProperty: path, equals: /helloworld }
          - { reqProperty: tier, equals: publish }
          - { reqHeader: user-agent, matches: '.*Chrome.*'  }
        action:
          type: block

Exempel 3

Den här regeln blockerar begäranden vid publicering som innehåller frågeparametern foo, men tillåter alla förfrågningar från IP 192.168.1.1:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: "block-request-that-contains-query-parameter-foo"
        when:
          allOf:
            - { queryParam: url-param, equals: foo }
            - { reqProperty: tier, equals: publish }
        action:
          type: block
      - name: "allow-all-requests-from-ip"
        when: { reqProperty: clientIp, equals: 192.168.1.1 }
        action:
          type: allow

Exempel 4

Den här regeln blockerar begäranden till sökväg /block-me vid publicering och blockerar alla förfrågningar som matchar SQLI eller XSS mönster. I det här exemplet finns det en regel för WAF-trafikfilter som refererar till SQLI och XSS WAF-flaggoroch därför krävs en separat licens.

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: "path-rule"
        when:
          allOf:
            - { reqProperty: path, equals: /block-me }
            - { reqProperty: tier, equals: publish }
        action:
          type: block
      - name: "Enable-SQL-Injection-and-XSS-waf-rules-globally"
        when: { reqProperty: path, like: "*" }
        action:
          type: block
          wafFlags: [ SQLI, XSS]

Exempel 5

Den här regeln blockerar åtkomst till OFAC-länder:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: block-ofac-countries
        when:
          allOf:
            - reqProperty: tier
              matches: "author|publish"
            - reqProperty: clientCountry
              in:
                - SY
                - BY
                - MM
                - KP
                - IQ
                - CD
                - SD
                - IR
                - LR
                - ZW
                - CU
                - CI
        action: block

Regler för hastighetsbegränsning

Ibland är det önskvärt att blockera trafik om den överskrider en viss frekvens av inkommande begäranden, baserat på ett visst villkor. Ange ett värde för rateLimit Egenskapen begränsar hastigheten för de begäranden som matchar regelvillkoret.

Regler för hastighetsbegränsning kan inte referera till WAF-flaggor. De är tillgängliga för alla Sites- och Forms-kunder.

Kursen beräknas per CDN POP. Anta till exempel att POP i Montreal, Miami och Dublin har en trafikfrekvens på 80, 90 respektive 120 förfrågningar per sekund. Regeln för hastighetsbegränsning är satt till en gräns på 100. I så fall skulle endast trafiken till Dublin begränsas.

Hastighetsgränserna utvärderas baserat på antingen trafik som faller i kanten, trafik som faller i origo eller antalet fel.

rateLimit-struktur ratelimit-structure

Egenskap
Typ
Standard
MENING
limit
heltal mellan 10 och 10000
obligatoriskt
Begärandefrekvens (per CDN POP) i begäranden per sekund som regeln aktiveras för.
window
heltal: 1, 10 eller 60
10
Provningsfönstret i sekunder för vilket begärandehastigheten beräknas. Räknarnas noggrannhet beror på fönstrets storlek (större fönsternoggrannhet). Du kan till exempel förvänta dig 50 % noggrannhet för det sekundära fönstret och 90 % noggrannhet för det 60-sekundersfönstret.
påföljd
heltal mellan 60 och 3600
300 (5 minuter)
En period i sekunder för vilken matchande begäranden blockeras (avrundat till närmaste minut).
antal
alla, hämtningar, fel
alla
utvärderas baserat på edge-trafik (all), ursprungstrafik (hämtningar) eller antalet fel (fel).
groupBy
array[Getter]
ingen
Räknaren för hastighetsbegränsning sammanställs av en uppsättning egenskaper för begäran (till exempel clientIp).

Exempel ratelimiting-examples

Exempel 1

Den här regeln blockerar en klient i 5 millisekunder när den överskrider ett genomsnitt på 60 req/sek (per CDN-POP) under de senaste 10 sektionerna:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
    - name: limit-requests-client-ip
      when:
        reqProperty: tier
        matches: "author|publish"
      rateLimit:
        limit: 60
        window: 10
        penalty: 300
        count: all
        groupBy:
          - reqProperty: clientIp
      action: block

Exempel 2

Blockera begäranden på sökvägen/critical/resource i 60 sekunder när det överskrider ett genomsnitt på 100 begäranden till ursprungsläget per sekund (per CDN POP) i ett tidsfönster på tio sekunder:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: rate-limit-example
        when:
          allOf:
            - { reqProperty: path, equals: /critical/resource }
            - { reqProperty: tier, equals: publish }
        action:
          type: block
        rateLimit: { limit: 100, window: 10, penalty: 60, count: fetches }

Varningar om trafikfilterregler traffic-filter-rules-alerts

NOTE
Den här funktionen har inte släppts ännu. För att få tillgång till informationen via e-post aemcs-waf-adopter@adobe.com.

En regel kan konfigureras att skicka ett meddelande från Åtgärdscenter om det aktiveras tio gånger inom ett 5 minuter långt fönster. En sådan regel varnar dig när vissa trafikmönster förekommer så att du kan vidta nödvändiga åtgärder. Läs mer om Actions Center, inklusive hur du konfigurerar de meddelandeprofiler som krävs för att ta emot e-postmeddelanden.

Meddelande från Åtgärdscenter

Varningsegenskapen (som för närvarande är prefix med experimentell eftersom funktionen ännu inte har släppts kan användas på åtgärdsnoden för alla åtgärdstyper (allow, block, log).

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: "path-rule"
        when:
          allOf:
            - { reqProperty: path, equals: /block-me }
            - { reqProperty: tier, equals: publish }
        action:
          type: block
          experimental_alert: true

CDN-loggar cdn-logs

AEM as a Cloud Service ger åtkomst till CDN-loggar, som är användbara för fall som till exempel optimering av träffkvoten och konfigurering av trafikfilterregler. CDN-loggar visas i Cloud Manager Hämta loggar när du väljer Författare eller Publiceringstjänst.

CDN-loggar kan fördröjas upp till fem minuter.

The rules egenskapen beskriver vilka trafikfilterregler som matchas och har följande mönster:

"rules": "match=<matching-customer-named-rules-that-are-matched>,waf=<matching-WAF-rules>,action=<action_type>"

Till exempel:

"rules": "match=Block-Traffic-under-private-folder,Enable-SQL-injection-everywhere,waf="SQLI,SANS",action=block"

Reglerna fungerar på följande sätt:

  • Alla matchande regelnamn som har deklarerats av kunden listas i match -attribut.
  • The action -attribut avgör om reglerna blockerar, tillåter eller loggar.
  • Om WAF är licensierat och aktiverat visas waf attribut visar alla WAF-flaggor (till exempel SQLI) som har identifierats. Detta gäller oavsett om WAF-flaggorna har listats i några regler eller inte. Detta är för att ge insikter i eventuella nya regler att deklarera.
  • Om inga kunddeklarerade regler matchar och inga SWF-regler matchar rules egenskapen är tom.

Som tidigare nämnts visas matchningar av WAF-regler endast i CDN-loggar för CDN-missar och -pass, inte träffar.

Exemplet nedan visar ett exempel cdn.yaml och två CDN-loggposter:

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev"]
data:
  trafficFilters:
    rules:
      - name: "path-rule"
        when: { reqProperty: path, equals: /block-me }
        action: block
      - name: "Enable-SQL-Injection-and-XSS-waf-rules-globally"
        when: { reqProperty: path, like: "*" }
        action:
          type: block
          wafFlags: [ SQLI, XSS ]
{
"timestamp": "2023-05-26T09:20:01+0000",
"ttfb": 19,
"cli_ip": "147.160.230.112",
"cli_country": "CH",
"rid": "974e67f6",
"req_ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
"host": "example.com",
"url": "/block-me",
"method": "GET",
"res_ctype": "",
"cache": "PASS",
"status": 406,
"res_age": 0,
"pop": "PAR",
"rules": "match=path-rule,action=blocked"
}
{
"timestamp": "2023-05-26T09:20:01+0000",
"ttfb": 19,
"cli_ip": "147.160.230.112",
"cli_country": "CH",
"req_ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
"rid": "974e67f6",
"host": "example.com",
"url": "/?sqli=%27%29%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL--%20fAPK",
"method": "GET",
"res_ctype": "image/png",
"cache": "PASS",
"status": 406,
"res_age": 0,
"pop": "PAR",
"rules": "match=Enable-SQL-Injection-and-XSS-waf-rules-globally,waf=SQLI,action=blocked"
}

Loggformat cdn-log-format

Nedan finns en lista med de fältnamn som används i CDN-loggar, tillsammans med en kort beskrivning.

Fältnamn
Beskrivning
tidsstämpel
Den tidpunkt då begäran startades, efter TLS-avslutning.
ttfb
Förkortning för Tid till första byte. Tidsintervallet mellan begäran startades fram till punkten innan svarstexten började direktuppspelas.
cli_ip
Klientens IP-adress.
cli_country
Två bokstäver ISO 3166-1 alpha-2-landskod för klientlandet.
rutnät
Värdet på begärandehuvudet som används för att unikt identifiera begäran.
req_ua
Användaragenten som ansvarar för att göra en given HTTP-begäran.
värd
Den myndighet som begäran avser.
url
Den fullständiga sökvägen, inklusive frågeparametrar.
method
HTTP-metod som skickas av klienten, till exempel "GET" eller "POST".
res_type
Den innehållstyp som används för att ange resursens ursprungliga medietyp.
cache
Status för cachen. Möjliga värden är HIT, MISS eller PASS
status
HTTP-statuskoden som ett heltalsvärde.
_Bläddra
Den tid (i sekunder) som ett svar har cachelagrats (i alla noder).
pop
Datacenter för CDN-cacheservern.
regler
Namnet på matchande regler.

Anger också om matchningen resulterade i ett block.

Till exempel "match=Enable-SQL-Injection-and-XSS-waf-rules-globally,waf=SQLI,action=blocked"

Tom om inga regler matchade.

Verktyg för instrumentpanel dashboard-tooling

Adobe tillhandahåller en mekanism för att hämta instrumentpanelsverktyg till din dator för att importera CDN-loggar som hämtats via Cloud Manager. Med den här verktygen kan du analysera trafiken för att hitta rätt trafikfilterregler som ska deklareras, inklusive WAF-regler.

Kontrollpanelsverktygen kan klonas direkt från AEMCS-CDN-Log-Analysis-ELK-Tool GitHub-databas.

Tutorials finns för konkreta instruktioner om hur du använder instrumentpanelsverktygen.

Rekommenderade startregler recommended-starter-rules

Du kan kopiera de rekommenderade reglerna nedan till cdn.yaml för att komma igång. Starta i loggläge, analysera trafiken och när du är nöjd ändras den till blockläge. Du kanske vill ändra reglerna baserat på de unika egenskaperna för webbplatsens livstrafik.

kind: "CDN"
version: "1"
metadata:
  envTypes: ["dev", "stage", "prod"]
data:
  trafficFilters:
    rules:
    #  Block client for 5m when it exceeds an average of 100 req/sec to origin on a time window of 10sec
    - name: limit-origin-requests-client-ip
      when:
        reqProperty: tier
        equals: 'publish'
      rateLimit:
        limit: 100
        window: 10
        count: fetches
        penalty: 300
        groupBy:
          - reqProperty: clientIp
      action: log
    #  Block client for 5m when it exceeds an average of 500 req/sec on a time window of 10sec
    - name: limit-requests-client-ip
      when:
        reqProperty: tier
        equals: 'publish'
      rateLimit:
        limit: 500
        window: 10
        count: all
        penalty: 300
        groupBy:
          - reqProperty: clientIp
      action: log
    # Block requests coming from OFAC countries
    - name: block-ofac-countries
      when:
        allOf:
          - { reqProperty: tier, in: ["author", "publish"] }
          - reqProperty: clientCountry
            in:
              - SY
              - BY
              - MM
              - KP
              - IQ
              - CD
              - SD
              - IR
              - LR
              - ZW
              - CU
              - CI
      action: log
    # Enable recommended WAF protections (only works if WAF is licensed enabled for your environment)
    - name: block-waf-flags-globally
      when:
        reqProperty: tier
        in: ["author", "publish"]
      action:
        type: log
        wafFlags:
          - TRAVERSAL
          - CMDEXE-NO-BIN
          - XSS
          - LOG4J-JNDI
          - BACKDOOR
          - USERAGENT
          - SQLI
          - SANS
          - TORNODE
          - NOUA
          - SCANNER
          - PRIVATEFILE
          - NULLBYTE

Självstudiekurser tutorial

Det finns två självstudiekurser.

Skydda webbplatser med trafikfilterregler (inklusive WAF-regler)

Arbeta med en självstudiekurs för att få allmän, praktisk kunskap och erfarenhet om trafikfilterregler, inklusive WAF-regler.

Självstudiekursen leder dig igenom:

  • Konfigurera molnhanterarens konfigurationsflöde
  • Använda verktyg för att simulera skadlig trafik
  • Deklarera trafikfilterregler, inklusive WAF-regler
  • Analysera resultat med kontrollpanelsverktyg
  • God praxis

Blockera DoS- och DDoS-attacker med trafikfilterregler

Djupdykning i hur man blockerar Denial of Service-attacker (DoS) och DoS-attacker (Distributed Denial of Service) som använder trafikfilterregler för hastighetsbegränsning och andra strategier.

Självstudiekursen leder dig igenom:

  • skydd
  • få meddelanden när hastighetsgränserna överskrids
  • analysera trafikmönster med kontrollpanelsverktyg för att konfigurera tröskelvärden för trafikfilterregler för hastighetsbegränsning
recommendation-more-help
fbcff2a9-b6fe-4574-b04a-21e75df764ab