68
Distributed Denial of Service VS Caching & Loadbalancing Stefan Behte Armin Pech Babiel GmbH curl [email protected]/2016/02/23?no=2 talk@

Distributed Denial of Service VS Caching & Loadbalancing · only-if-cached . no-store no-cache . no-cache no-store If-Modified-Since If-Match ETag Last-Modified . Revalidation . NOW

  • Upload
    vandien

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Distributed Denial of Service VS Caching & Loadbalancing Stefan Behte

Armin Pech

Babiel GmbH

curl [email protected]/2016/02/23?no=2

talk@

Agenda Distributed Denial of Service Caching & Loadbalancing Q&A, Diskussion

2

Agenda Distributed Denial of Service Kurzeinführung Angriffsarten Erkennung Abwehr Aussicht

3

Distributed Denial of Service Was ist DDoS? Dienste-Verweigerung Verteilt

4

Motivation

5

Vorzeichen Politische Geschehnisse Social Media Twitter-Meldungen

Facebook

Pastebin

Verteilung vk.com

6

Angriff klassisch Layer 3 IP ICMP

Layer 4 TCP

UDP

7

TCP vs. UDP TCP/IP UDP/IP

8

TCP SYN-Flood

9

UDP Amplification

10

Layer 7 Serverlast erzeugen „Low-and-Slow“ POST

Offene Verbindungen

Langsame Downloads

Slowloris

12

Angriff: Web-LOIC

13

Angriff: Web-LOIC GET /?id=1300380622178&msg=We%20Are%20Legion! HTTP/1.1

Host: www.bundestag.de

User-Agent: Mozilla/5.0 (X11; Linux x86_64) Firefox/8.0

Accept: image/png,image/*;q=0.8,*/*;q=0.5

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip, deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Connection: keep-alive

Referer: http://pastebin.com/RrsXbQ.html

14

Angriff: Layer 7 Botnet 10k Bots 10Mio Req/s Layer 7 Angriff goo.gl/mpsmXR

24GBit/s Downloads

15

Angriff: Layer 7 Amplification Downloads Reflection Wordpress xmlrpc

Joomla

16

Erkennung Detection Anomalien Pakete pro Sekunde

Bandbreite

Tools Icinga

NetFlow, Sflow 17

Erkennung Monitoring

18

Erkennung Anomalieerkennung FastNetMon Andrisoft WanGuard

Appliance: Arbor, Fortinet, Huawei …

19

Gegenmaßnahmen - Don‘t netstat –antpl | awk … | sort …

Einzelne IPs blocken Code auf Webserver

20

Gegenmaßnahmen - Do

21

Gegenmaßnahmen - Maybe Null-Routing BGP-Community Deaktivieren

Wirtschaftlichkeit

SLA

DNS Fast-Flux

22

Gegenmaßnahmen - Do On-Premise 1GE/10GE Performance erhöhen Appliance

Horizontal skalieren Mehr Hardware, VMs

Frühstmöglich blockieren Loadbalancer Meldung an vorgeschaltete Firewall 23

Gegenmaßnahmen - Do Personal schulen DDoS-Workshops mit Hardware

Extern

24

Gegenmaßnahmen - Do Transitprovider Transit ACL Separieren DDoS-Appliance Prävention

Proxy-Provider CloudFlare Akamai

25

Gegenmaßnahmen - Do Eigene Cloud Origin-Schutz Latenz

DDoS-Provider BGP-Announcements

Anycast

26

CloudFlare Anycast

27

Gegenmaßnahmen - Do L7 Üblich

Redirect Javascript Captcha

Möglich geoip Proof-of-Work

Präventiv POST WordPress Pingback XMLRPC

28

Gegenmaßnahmen Funktoniert nicht immer L7 schwierig DDoS oder Ereignis?

29

Gegenmaßnahmen Reflection und L7-Angriff Kontakt whois

CERT

ISP

30

Gegenmaßnahmen Reflection

31

2014 2016

Aussicht Aussicht Volumenattacken werden größer Bandbreitenausbau

L7 gefährlich

32

Q & A Fragen? Anregungen?

33

Pause Lüften + Aufstehen Noch 'nen Kaffee? Kurze Stärkung!

34

Agenda Caching & Loadbalancing HTTP Skalierung Caching Loadbalancing Ausblick

35

HTTP

36

C

C

Web- Server

HTTP

HTTP: Protokoll Zustandslos Requests On-Demand Latenz + Verfügbarkeit

Gleiche Ressourcen in mehreren Seiten Optimierungen Pipelining + Keep-Alive

Caching, Seiten aufteilen 37

HTTP: Request Header GET /homepage HTTP/1.1

Host: www.babiel.com

User-Agent: Mozilla/5.0 (X11; Linux)

Accept: text/html;q=0.9,*/*;q=0.8

Accept-Encoding: gzip, deflate

Connection: keep-alive

38

HTTP: Response Header HTTP/1.1 200 OK

Date: Sat, 20 Feb 2016 15:21:18 GMT

Content-Type: text/html;charset=UTF-8

Vary: Accept-Encoding

Content-Encoding: gzip

Content-Length: 4142

39

Skalierung Caching Statische Inhalte HTML, JS, CSS Images, Blobs

Loadbalancing Backend-Server bündeln Dynamische Inhalte Formulare, Login

40

Skalierung

41 Loadbalancing aller Inhalte

Caching statischer Inhalte

B B B B B

C

C

C

C

C

HTML

PNG

Caching

42

C

C

Web- Server Cache

Caching: Warum + wie? Backend Hits & Last reduzieren Latenz verringern Verfügbarkeit bei Ausfall Puffer statischer Ressourcen (RAM, HDD) Reverse Proxys (Shared Cache) CDNs Browser Cache (Private Cache)

43

Caching: Matching Wann darf ein Cache ausliefern? – Matching:

Effektive URI http:// www.babiel.com /sites/home.html

HTTP Methode Caching Header Request Header (Vary) Response Freshness / Revalidierung

44

Caching: Header Cache-Control Feinkontrolle

Pragma: no-cache Caching bei HTTP/1.0 verhindern

Expires Ablaufdatum eines Objekts

Age Alter eines Objekts im Cache

45

Caching: Setup

46

Backend Client

Cache

NOW Zeit -60 Zeit +60

Caching: Setup

47

fresh stale

Backend Client

Cache

Zeit -60 Zeit +60

Request

Response

Objekt im Cache

NOW

Caching: Response Timings

48

s-maxage=100 [Prio 1]

max-age=80 [Prio 2]

Expires: +110 [Prio 3]

no-store

fresh stale

no-store

max-age

max-age

Expires

Backend Client

Cache

Zeit -60 Zeit +60 NOW

Caching: Response Timings

49

Backend Client

Cache

Zeit -60 Zeit +60

no-cache

Revalidation

proxy|must-revalidate

200 304

public

private

no-cache

must-revalidate

public

private

weitere Requests

NOW

Caching: Request Timings

50

Backend Client

Cache

Zeit -60 Zeit +60

Age=90

Age=40

Age=70

min-fresh=60 30

max-age=60

max-age=60

NOW

Caching: Request Timings

51

Backend Client

Cache

Zeit -60 Zeit +60

504 only-if-cached

no-store

no-cache no-cache

no-store

If-Modified-Since

If-Match ETag

Last-Modified

Revalidation

NOW

Caching: Stopper POST-Request GET-Parameter: Variationen HTTP Authentication Hostnames ([www.] domain.de) HTTP Header Cache-Control, Pragma

Set-Cookies

52

Caching: Beispiele /page/start.html /search/query.php?string=squid /Formular.html?list_id=16

/news/status?_ts=1455134349 /sid_3B01823B471E7BD/news/index.html /render.css;jsessionid=24C2DABA15F?v=3 POST-Requests (Suche, Polling)

53

Caching: Response Debugging X-Cache: MISS from squid

X-Cache-Lookup: MISS from squid:80

Via: 1.1 varnish

Date: Sat, 20 Feb 2016 17:21:00 GMT

Last-Modified: Sat, 20 Feb 2016 17:20:00 GMT

Age: 60 54

Caching: Browser-Verhalten Browser: F5 Keine Caching Request Header Daten ggf. aus Cache

Browser: Strg + F5 Cache-Control / Pragma: no-cache Daten vom Backend

55

Caching: Angriffe POST statt GET Variation GET-Parameter Vary ausnutzen 400er HTTP Codes Zufälliger Request-Inhalt

56

Loadbalancing

57

B

B

B

Cache Load-

Balancer

C

C

C

Loadbalancing: Setup Backends optimal nutzen Ausfälle / Lastspitzen Backend-Anbindung HTTP / internes Protokoll Healthchecks

Verteilung der Client-Anfragen

58

Loadbalancing: Setup

59

Loadbalancer Loadbalancer

A B A A

65%

A 35%

Active / Backup

Weights

Loadbalancing: Setup

60

B

Loadbalancer

A A A A

/admin /user

Kontext / Service basierend

Loadbalancing: Setup

61

Loadbalancer Loadbalancer Loadbalancer

NET

A A B A

Loadbalancing & Netzwerk Hardware

DNS

Loadbalancing: Dispatcher Verteilung der Requests über Backends:

Round Robin / Random Cookies / Session IDs (App) Client IP Backend Performance Redispatching bei Fehlern

62

Loadbalancing & Caching

63

Cache

Loadbalancer

Backend Backend

Loadbalancer

Cache

Cache & LB: Ausblick Komplexität Abstimmung mit Entwicklern Verhalten der Anwendung kennen Request Auswertung / Tracking Caching oder Loadbalancing tunen?

64

Cache & LB: Ausblick Source-IP vs. X-Forwarded-For HTTP Codes 3XX, 4XX, 5XX cachen? Vary & User-Agent = Response Variation Fehlerseite mit Code 200 ;-( HTTPS & Caching?

65

Links und Referenzen https://tools.ietf.org/html/rfc7230 https://tools.ietf.org/html/rfc7232 https://tools.ietf.org/html/rfc7234

66

Q & A Fragen? Anregungen?

67

Vielen Dank für euer Interesse! talk.babiel.com/2/lb-ddos (Folien)

Verbunden bleiben: [email protected] twitter.com/Babiel facebook.com/babiel.gmbh

68