Blockera DoS- och DDoS-attacker med trafikfilterregler
Lär dig hur du blockerar DoS-attacker (Denial of Service) och DDoS-attacker (Distributed Denial of Service) med trafikfilter för hastighetsbegränsning regler och andra strategier på AEM as a Cloud Service (AEMCS) som hanteras av CDN. Dessa attacker orsakar trafiktoppar vid CDN och eventuellt vid AEM Publish Service (även kallat origin) och kan påverka webbplatsens tillgänglighet och tillgänglighet.
Den här självstudiekursen fungerar som en guide om analysera dina trafikmönster och konfigurera hastighetsbegränsning trafikfilterregler för att mildra dessa attacker. I självstudiekursen beskrivs även hur du konfigurera aviseringar så att du meddelas när en misstänkt attack inträffar.
Förstå skydd
Lär dig mer om standardskyddet för DDoS på din AEM webbplats:
- Cachelagring: Med bra cachelagringsprinciper är effekten av en DDoS-attack mer begränsad eftersom CDN förhindrar att de flesta förfrågningar kommer till början och orsakar prestandaförsämring.
- Automatisk skalning: AEM skapar och publicerar tjänster automatiskt för att hantera trafiktoppar, även om de fortfarande kan påverkas av plötsliga, stora trafikökningar.
- Blockering: CDN i Adobe blockerar trafik till ursprungsläget om den överskrider en Adobe-definierad frekvens från en viss IP-adress, per CDN-postleverantör (Point of Presence).
- Varning: Åtgärdscentret skickar en trafiktopp på grund av varningsmeddelanden när trafiken överskrider en viss nivå. Denna varning utlöses när trafiken till en viss CDN PoP överstiger en Adobe-definierad begärandefrekvens per IP-adress. Se Varningar om trafikfilterregler för mer information.
Dessa inbyggda skydd bör betraktas som en baslinje för en organisations förmåga att minimera prestandapåverkan av en DDoS-attack. Eftersom varje webbplats har olika prestandaegenskaper och kan se att prestandan försämras innan hastighetsgränsen för Adobe har uppnåtts bör du utöka standardskyddet genom att kundkonfiguration.
Låt oss titta på några ytterligare, rekommenderade åtgärder som kunderna kan vidta för att skydda sina webbplatser mot DDoS-attacker:
- Deklarera regler för trafikfilter för hastighetsbegränsning för att blockera trafik som överskrider en viss hastighet från en enda IP-adress, per PoP. Dessa är vanligtvis ett lägre tröskelvärde än den Adobe-definierade hastighetsgränsen.
- Konfigurera varningar om regler för hastighetsbegränsning för trafikfilter genom en varningsåtgärd, så att ett meddelande från Åtgärdscenter skickas när regeln aktiveras.
- Öka cachemängden genom att deklarera begäranomvandlingar för att ignorera frågeparametrar.
Variationer i trafikregler för hastighetsbegränsning rate-limit-variations
Det finns två variationer av trafikreglerna för avgiftsbegränsning:
- Edge - blockbegäranden baserade på hastigheten för all trafik (inklusive den som kan betjänas från CDN-cache) för en viss IP-adress, per PoP.
- Ursprung - blockera förfrågningar baserat på andelen trafik som är avsedd för ursprunget, för en given IP-adress, per PoP.
Kundresa
Stegen nedan visar den process som kunderna troligtvis bör gå igenom när det gäller att skydda sina webbplatser.
- Identifiera behovet av en trafikfilterregel för hastighetsbegränsning. Detta kan bero på att man tagit emot en trafikspike för Adobe utanför förpackningen vid ursprungsaviseringen, eller på ett förebyggande beslut att vidta försiktighetsåtgärder för att minska risken för ett framgångsrikt DDoS.
- Analysera trafikmönster med hjälp av en kontrollpanel, om webbplatsen redan är aktiv, för att fastställa de optimala tröskelvärdena för trafikfiltreringsreglerna för hastighetsbegränsning. Om sajten ännu inte är aktiv väljer du värden baserat på dina trafikförväntningar.
- Konfigurera trafikfilterregler för hastighetsbegränsning med hjälp av värdena från föregående steg. Se till att aktivera motsvarande aviseringar så att du meddelas när tröskelvärdet har uppnåtts.
- Få aviseringar om trafikfilterregler så snart det uppstår trafiktoppar, vilket ger dig värdefulla insikter om huruvida organisationen kan vara utsatt för skadlig påverkan.
- Agera vid behov. Analysera trafiken för att avgöra om spiken speglar legitima förfrågningar snarare än en attack. Öka tröskelvärdena om trafiken är legitim, eller sänka dem om inte.
Resten av den här självstudiekursen guidar dig genom den här processen.
Vi inser behovet av att konfigurera regler recognize-the-need
Som tidigare nämnts blockerar Adobe som standard trafik vid CDN som överskrider en viss nivå, men vissa webbplatser kan uppleva sämre prestanda under den tröskeln. Trafikfilterregler för hastighetsbegränsning bör därför konfigureras.
Helst konfigurerar du reglerna innan du går direkt till produktion. I praktiken deklarerar många organisationer aktivt regler endast en gång som varnats för en trafiktoppar, vilket tyder på en trolig attack.
Adobe skickar en trafikspik på ursprungsvarningen som Meddelande från Åtgärdscenter när en standardtröskel för trafik från en enda IP-adress överskrids, för en angiven PoP. Om du har fått en sådan varning rekommenderar vi att du konfigurerar en trafikfilterregel för hastighetsbegränsning. Den här standardvarningen skiljer sig från de varningar som kunderna uttryckligen måste aktivera när de definierar trafikfilterregler, som du kommer att lära dig om i ett framtida avsnitt.
Analysera trafikmönster analyze-traffic
Om webbplatsen redan är aktiv kan du analysera trafikmönstren med hjälp av CDN-loggar och instrumentpaneler från Adobe.
-
Kontrollpanel för CDN-trafik: ger insikter om trafiken via CDN och antalet förfrågningar om ursprung, felfrekvenserna 4xx och 5xx samt icke-cachelagrade förfrågningar. Ger även maximalt antal CND- och origin-begäranden per sekund per klient-IP-adress och fler insikter för att optimera CDN-konfigurationerna.
-
CDN-cacheträffrekvens: ger insikter om det totala antalet träffar i cacheminnet och det totala antalet förfrågningar från HIT-, PASS- och MISS-status. Tillhandahåller även de bästa URL:erna för HIT, PASS och MISS.
Konfigurera kontrollpanelsverktygen med något av följande alternativ:
ELK - konfigurera kontrollpanelsverktyg
The Elasticsearch, Logstash och Kibana (ELK) Instrumentpanelsverktyg från Adobe kan användas för att analysera CDN-loggarna. Verktyget innehåller en kontrollpanel som visualiserar trafikmönstren, vilket gör det enklare att fastställa optimala tröskelvärden för trafikfilterreglerna för din hastighetsbegränsning.
-
Klona AEMCS-CDN-Log-Analysis-Tooling GitHub-databas.
-
Konfigurera verktygen genom att följa följande Så här ställer du in ELK Docker-behållaren steg.
-
Som en del av konfigurationen importerar du
traffic-filter-rules-analysis-dashboard.ndjson
fil för att visualisera data. The CDN-trafik Kontrollpanelen innehåller visualiseringar som visar det maximala antalet begäranden per IP/POP vid CDN Edge och Origin. -
Från Cloud Manager's Miljö hämtar du AEMCS Publish-tjänstens CDN-loggar.
note tip TIP Det kan ta upp till 5 minuter innan de nya förfrågningarna visas i CDN-loggarna.
Segment - konfigurera instrumentpanelsverktyg
Kunder som har Splunk Log-vidarebefordran har aktiverats kan skapa nya instrumentpaneler för att analysera trafikmönstren.
Så här skapar du instrumentpaneler i Splunk: Splunk dashboards for AEMCS CDN Log Analysis steg.
Data granskas
Följande visualiseringar finns på panelerna ELK och Splunk:
-
Edge RPS per klient-IP och POP: Den här visualiseringen visar det maximala antalet begäranden per IP/POP på CDN Edge. Toppvärdet i visualiseringen anger det maximala antalet begäranden.
ELK Dashboard:
Splunk Dashboard:
-
Ursprunglig RPS per klient-IP och POP: Den här visualiseringen visar det maximala antalet begäranden per IP/POP vid ursprung. Toppvärdet i visualiseringen anger det maximala antalet begäranden.
ELK Dashboard:
Splunk Dashboard:
Välja tröskelvärden
Tröskelvärdena för trafikfiltreringsregler för hastighetsbegränsning bör baseras på ovanstående analys och säkerställa att legitim trafik inte blockeras. Se följande tabell för vägledning om hur du väljer tröskelvärden:
Den mängd som ska användas beror på dina förväntningar på normala trafiktoppar på grund av organisk trafik, kampanjer och andra händelser. En multipel mellan 5 och 10 kan vara rimlig.
Om webbplatsen ännu inte är aktiv finns det inga data att analysera, och du bör göra en kvalificerad gissning på vilka värden som är lämpliga för att ange trafikfilterreglerna för hastighetsbegränsning. Till exempel:
Konfigurera regler configure-rules
Konfigurera trafikfilter för hastighetsbegränsning regler i AEM /config/cdn.yaml
-fil, med värden som baseras på diskussionen ovan. Kontakta vid behov webbsäkerhetsteamet för att säkerställa att gränsvärdena är lämpliga och inte blockerar legitim trafik.
Se Skapa regler i ditt AEM projekt för mer information.
kind: CDN
version: '1'
metadata:
envTypes:
- dev
- stage
- prod
data:
trafficFilters:
rules:
...
# Prevent attack at edge by blocking client for 5 minutes if they make more than 500 requests per second on average
- name: prevent-dos-attacks-edge
when:
reqProperty: tier
in: ["author","publish"]
rateLimit:
limit: 500 # replace with the appropriate value
window: 10 # compute the average over 10s
penalty: 300 # block IP for 5 minutes
count: all # count all requests
groupBy:
- reqProperty: clientIp
action:
type: log
experimental_alert: true
# Prevent attack at origin by blocking client for 5 minutes if they make more than 100 requests per second on average
- name: prevent-dos-attacks-origin
when:
reqProperty: tier
in: ["author","publish"]
rateLimit:
limit: 100 # replace with the appropriate value
window: 10 # compute the average over 10s
penalty: 300 # block IP for 5 minutes
count: fetches # count only fetches
groupBy:
- reqProperty: clientIp
action:
type: log
experimental_alert: true
Observera att både origo- och edge-reglerna deklareras och att egenskapen alert är inställd på true
så att du kan få varningar varje gång tröskelvärdet uppnås, vilket sannolikt tyder på en attack.
Vi rekommenderar att åtgärdstypen är inställd på att logga initialt så att du kan övervaka trafiken under några timmar eller dagar och se till att den legitima trafiken inte överstiger dessa taxor. Efter några dagar växlar du till blockläge.
Följ stegen nedan för att distribuera ändringarna till din AEMCS-miljö:
- Verkställ och skicka ändringarna ovan till din Cloud Manager Git-databas.
- Distribuera ändringarna i AEMCS-miljön med hjälp av Cloud Managers Config-pipeline. Referens Distribuera regler via Cloud Manager för mer information.
- Verifiera trafikfilterregel för hastighetsbegränsning fungerar som väntat kan du simulera en attack enligt beskrivningen i Attacksimulering -avsnitt. Begränsa antalet begäranden till ett värde som är högre än det hastighetsgränsvärde som angetts i regeln.
Konfigurerar omformningsregler för begäran configure-request-transform-rules
Utöver trafikfilterreglerna för hastighetsbegränsning bör du använda begäranomvandlingar för att ta bort frågeparametrar som inte behövs av programmet för att minimera sätt att kringgå cacheminnet med hjälp av cachepubliceringstekniker. Om du till exempel bara vill tillåta search
och campaignId
frågeparametrar kan följande regel deklareras:
kind: "CDN"
version: "1"
metadata:
envTypes:
- dev
- stage
- prod
data:
experimental_requestTransformations:
rules:
- name: unset-all-query-params-except-those-needed
when:
reqProperty: tier
in: ["publish"]
actions:
- type: unset
queryParamMatch: ^(?!search$|campaignId$).*$
Varningar om trafikfilterregler tas emot receiving-alerts
Som nämnts ovan, om trafikfilterregeln innehåller experimentell_varning: true, tas en varning emot när regeln matchas.
Åtgärda varningar acting-on-alerts
Ibland är varningen informativ och ger en uppfattning om hur ofta attackerna sker. Det är värt att analysera dina CDN-data med den instrumentpanel som beskrivs ovan för att kontrollera att trafikökningen beror på en attack och inte bara på en ökning av den legitima trafikvolymen. Om det är det senare, överväg att höja tröskeln.
Attacksimulering attack-simulation
I det här avsnittet beskrivs metoder för att simulera en DoS-attack, som kan användas för att generera data för kontrollpanelerna som används i den här självstudiekursen och för att verifiera att konfigurerade regler blockerar attacker.
Verktyg som Apache Benchmark, Apache JMeter, Vegetaoch andra kan användas.
Kantförfrågningar
Använda följande Vegeta kan du göra många förfrågningar till din webbplats:
$ echo "GET https://<YOUR-WEBSITE-DOMAIN>" | vegeta attack -rate=120 -duration=5s | vegeta report
Ovanstående kommando gör 120 begäranden i 5 sekunder och skickar en rapport. Om man utgår ifrån att webbplatsen inte är begränsad kan det leda till en trafikökning.
Ursprungsbegäranden
Om du vill kringgå CDN-cachen och göra förfrågningar till ursprungsläget (AEM publiceringstjänsten) kan du lägga till en unik frågeparameter till URL:en. Se exempelskriptet för Apache JMeter från Simulera DoS-attack med JMeter-skript