34
DDoS: практическое руководство к выживанию. Александр Лямин <la@highloadlab .com>

DDоS практическое руководство к выживанию (Александр Лямин)

  • Upload
    ontico

  • View
    4.413

  • Download
    6

Embed Size (px)

Citation preview

Page 1: DDоS практическое руководство к выживанию (Александр Лямин)

DDoS: практическое руководство к выживанию.

Александр Лямин<[email protected]>

Page 2: DDоS практическое руководство к выживанию (Александр Лямин)

Часть 2: Работа над ошибками.

Александр Лямин

Page 3: DDоS практическое руководство к выживанию (Александр Лямин)

Q1 2012• Всего атак: 365• Макс. в день: 12• Средний размер ботнета: 2637• Макс. размер ботнета: 37834

Page 4: DDоS практическое руководство к выживанию (Александр Лямин)

По дням недели

Пон Вт Ср Чeтв Пят Суб Вос0.00%

2.00%

4.00%

6.00%

8.00%

10.00%

12.00%

14.00%

16.00%

18.00%

20.00%

15.89%

14.52%

17.26%

14.25%

16.71%

9.59%

11.78%

Page 5: DDоS практическое руководство к выживанию (Александр Лямин)

По дням

1/1/1

2

1/4/1

2

1/7/1

2

1/10/1

2

1/13/1

2

1/16/1

2

1/19/1

2

1/22/1

2

1/25/1

2

1/28/1

2

1/31/1

2

2/3/1

2

2/6/1

2

2/9/1

2

2/12/1

2

2/15/1

2

2/18/1

2

2/21/1

2

2/24/1

2

2/27/1

2

3/1/1

2

3/4/1

2

3/7/1

2

3/10/1

2

3/13/1

2

3/16/1

2

3/19/1

2

3/22/1

2

3/25/1

2

3/28/1

2

3/31/1

20

1

2

3

4

5

6

7

8

9

10

11

12

Page 6: DDоS практическое руководство к выживанию (Александр Лямин)

По месяцам

41.37%

32.88%

25.75%

Январь Февраль

Март

Page 7: DDоS практическое руководство к выживанию (Александр Лямин)

Скоростные атаки

3.56%96.44%

> 1Gbps < 1Gbps

Page 8: DDоS практическое руководство к выживанию (Александр Лямин)

Типы атак

22.74%

77.26%

Cетевой флуд Приложение

Page 9: DDоS практическое руководство к выживанию (Александр Лямин)

Особые случаи

• DNS: NIC, Masterhost, FastVPS.• Хостинги: Крок, WAhome.• «Невидимые» ботнеты.• Minerbot.

Page 10: DDоS практическое руководство к выживанию (Александр Лямин)

Новая коньюктура• 1k ботов - 100-160 USD.• Доступный готовый инструментарий.• Падение цен - 20 USD/сутки.

Page 11: DDоS практическое руководство к выживанию (Александр Лямин)

Новая коньюктура

Page 12: DDоS практическое руководство к выживанию (Александр Лямин)

Apache mod_evasive

Page 13: DDоS практическое руководство к выживанию (Александр Лямин)

Apache mod_evasive<IfModule mod_evasive20.c>DOSHashTableSize 3097DOSPageCount 8DOSSiteCount 100DOSPageInterval 2DOSSiteInterval 2DOSBlockingPeriod 600DOSEmailNotify [email protected]</IfModule>

Page 14: DDоS практическое руководство к выживанию (Александр Лямин)

Apache mod_evasiveПлюсы Минусы

Работает Apache

Page 15: DDоS практическое руководство к выживанию (Александр Лямин)

Iptables --string

Page 16: DDоS практическое руководство к выживанию (Александр Лямин)

Iptables --stringiptables -A INPUT -p tcp -m tcp --dport 80 -m string --string "GET / HTTP" --algo kmp --to 1024 -m recent --set --name httpddos --rsource

iptables -A INPUT -p tcp -m tcp --dport 80 -m string --string "GET / HTTP" --algo kmp --to 1024 -m recent --update --seconds 10 --hitcount 2 --name httpddos --rsource -j DROP

Page 17: DDоS практическое руководство к выживанию (Александр Лямин)

Iptables --stringПлюсы Минусы

Работает.

Быстро.

Не всегда работает. (фрагментация)

Не всегда быстро. (kmp по телу пакета)

Открытые сокеты + retransmit.

Требует conntrack.

Page 18: DDоS практическое руководство к выживанию (Александр Лямин)

NGINX testcookie_module

Page 19: DDоS практическое руководство к выживанию (Александр Лямин)

JS

Page 20: DDоS практическое руководство к выживанию (Александр Лямин)

Cookie/Redirect

Page 21: DDоS практическое руководство к выживанию (Александр Лямин)

NGINX testcookie_module testcookie_name BPC; testcookie_secret keepmescret; testcookie_session $remote_addr; testcookie_arg attempt; testcookie_max_attempts 3; testcookie_fallback /cookies.html?backurl=http://$host$request_uri; testcookie_get_only on;location / { testcookie on; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://127.0.0.1:8080; }ДАЛЕЕ: http://habrahabr.ru/post/139931/

Page 22: DDоS практическое руководство к выживанию (Александр Лямин)

NGINX testcookie_moduleПлюсы Минусы

Работает.NGINX.Быстро.Предсказуемо.Расширяемо.

Не осуществляет блокировку.*Изменяет UX.Не работает против FBS.

* И не должно.

Page 23: DDоS практическое руководство к выживанию (Александр Лямин)

Нейронная сеть PyBrain

Page 24: DDоS практическое руководство к выживанию (Александр Лямин)

Нейронная сеть PyBrainЗапрос:0.0.0.0 - - [20/Dec/2011:15:00:03 +0400] "GET /forum/rss.php?topic=347425 HTTP/1.0" 200 1685 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0»

Cловарь:['__UA___OS_U', '__UA_EMPTY', '__REQ___METHOD_POST', '__REQ___HTTP_VER_HTTP/1.0', '__REQ___URL___NETLOC_', '__REQ___URL___PATH_/forum/rss.php', '__REQ___URL___PATH_/forum/index.php', '__REQ___URL___SCHEME_', '__REQ___HTTP_VER_HTTP/1.1', '__UA___VER_Firefox/3.0', '__REFER___NETLOC_www.mozilla-europe.org', '__UA___OS_Windows', '__UA___BASE_Mozilla/5.0', '__CODE_503', '__UA___OS_pl', '__REFER___PATH_/', '__REFER___SCHEME_http', '__NO_REFER__', '__REQ___METHOD_GET', '__UA___OS_Windows NT 5.1', '__UA___OS_rv:1.9', '__REQ___URL___QS_topic', '__UA___VER_Gecko/2008052906’

Далее: http://habrahabr.ru/post/136237/

Page 25: DDоS практическое руководство к выживанию (Александр Лямин)

Нейронная сеть PyBrainПлюсы Минусы

Работает.Приз зрительских симпатий.

Может и не работать.Нет истории запросов.

Page 26: DDоS практическое руководство к выживанию (Александр Лямин)

tcpdump

Page 27: DDоS практическое руководство к выживанию (Александр Лямин)

tcpdumptcpdump -v -n -w attack.log dst port 80 -c 250tcpdump -nr attack.log |awk '{print $3}' |grep -oE '[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}\.[0-9]{1,}' |sort |uniq -c |sort -rn

Page 28: DDоS практическое руководство к выживанию (Александр Лямин)

tcpdumpПлюсы Минусы

Работает. Зачем tcpdump?

Page 29: DDоS практическое руководство к выживанию (Александр Лямин)

Итого• Работает все.• Но не всегда.• И не для всех.• РАБОТАЕТ > НЕ_РАБОТАЕТ.

Page 30: DDоS практическое руководство к выживанию (Александр Лямин)

СЧАСТЬЕ• Минимальные FALSE POSITIVES.• Отсутствие очевидных уязвимостей.• Адекватность текущим вызовам.

Page 31: DDоS практическое руководство к выживанию (Александр Лямин)

NGINX testcookie_module

Page 32: DDоS практическое руководство к выживанию (Александр Лямин)

One last thing…

3.56%96.44%

> 1Gbps < 1Gbps

22.74%

77.26%

Cетевой флуд

Приложение

Page 33: DDоS практическое руководство к выживанию (Александр Лямин)

Прокатимся?

Page 34: DDоS практическое руководство к выживанию (Александр Лямин)

Домашнее задание.

1. Настроенные nginx/ipset на сервере.

2. Выключенный conntrack.

3. Выделенный ip для публикуемых сервисов

4. Представление о связности хостера.