Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Что делать, если пришел DDoS или Antiflood для бедных / Юрий Колесов (security-gu.ru)

832 views

Published on

1. Введение
Тема DDoS атак “сетевого” уровня (L4 и ниже) заезжена и раскрыта. Обычно эти атаки такой мощности, что справиться с ними server-side невозможно — они забивают канал на 100%.
Но есть атаки, которые влезают в канал и наносят не меньший урон. Это DDoS атаки на приложение, http flood. В случае атак на приложение сайт/сервер обычно ложится значительно раньше, чем будет забит канал. Такая атака тоже может забить канал, например, с помощью worpress xml rpc amplification (https://blog.sucuri.net/2015/10/brute-force-amplification-attacks-against-wordpress-xmlrpc.html). В этом случае меры борьбы такие же, как с атаками сетевого уровня.
Даже если вы используете сервис, который вас проксированием защищает от DDoS, этот материал будет полезен — сервисы часто пропускают флуд в количествах, достаточных чтобы вы испытывали трудности.

Далее - http://junior.highload.ru/2016/abstracts/2058.html

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Что делать, если пришел DDoS или Antiflood для бедных / Юрий Колесов (security-gu.ru)

  1. 1. Что делать если пришел DDoS Юрий Колесов http://security-gu.ru security-guru@mail.ru +7 (926) 55-99-824 v2.3
  2. 2. Ничего не работает Почему не работает? Как быстро прикинуть в чем проблема?
  3. 3. Ничего не работает Почему не работает? Как быстро прикинуть в чем проблема? ● На сервере
  4. 4. Ничего не работает Почему не работает? Как быстро прикинуть в чем проблема? ● На сервере ● Мониторинг
  5. 5. Ничего не работает Почему не работает? Как быстро прикинуть в чем проблема? ● На сервере ● Мониторинг Точно DDoS?
  6. 6. Ничего не работает Почему не работает? Как быстро прикинуть в чем проблема? ● На сервере ● Мониторинг Точно DDoS? ● Хабраэффект
  7. 7. Ничего не работает Почему не работает? Как быстро прикинуть в чем проблема? ● На сервере ● Мониторинг Точно DDoS? ● Хабраэффект ● Неудачное обновление
  8. 8. Первым делом
  9. 9. Первым делом ● Не паниковать
  10. 10. Первым делом ● Не паниковать ● Отключить бэкенд (то что создает нагрузку)
  11. 11. Первым делом ● Не паниковать ● Отключить бэкенд (то что создает нагрузку) ● Изучить логи
  12. 12. Первым делом ● Не паниковать ● Отключить бэкенд (то, что создает нагрузку) ● Изучить логи ● Предположить или установить причину
  13. 13. Best practice
  14. 14. Best practice ● Парсим логи
  15. 15. Best practice ● Парсим логи ● Баним (iptables/ipset)
  16. 16. Best practice ● Парсим логи ● Баним (iptables/ipset) ПЛОХО!
  17. 17. Что же делать?
  18. 18. Что же делать? ● Подумать заранее!
  19. 19. Что же делать? ● Подумать заранее! ● Адекватный датацентр
  20. 20. Что же делать? ● Подумать заранее! ● Адекватный датацентр ● Резервный канал/IPMI консоль
  21. 21. Что же делать? ● Подумать заранее! ● Адекватный датацентр ● Резервный канал/IPMI консоль ● Запас по ресурсам
  22. 22. Что же делать? ● Подумать заранее! ● Адекватный датацентр ● Резервный канал/IPMI консоль ● Запас по ресурсам ● Используем nginx
  23. 23. Ускорение сайта Медленный сайт — проблемы и без DDoSа
  24. 24. Разнесение location
  25. 25. Разнесение location ● Статика
  26. 26. Разнесение location ● Статика ● Динамика (бэкенд)
  27. 27. Разнесение location ● Статика ● Динамика (бэкенд) ● AJAX
  28. 28. Разнесение location ● Статика ● Динамика (бэкенд) ● AJAX ● Медленные (или, наоборот, быстрые) url
  29. 29. Запрет неиспользуемых методов location / { limit_except GET HEAD { allow 10.1.15.6/32; #trusted ip deny all; } … }
  30. 30. Лимиты
  31. 31. Лимиты ● Число коннектов
  32. 32. Лимиты ● Число коннектов ● Число запросов в секунду
  33. 33. Число запросов в секунду limit_req_zone $binary_remote_addr zone=lreq:10m rate=1r/s limit_req zone=lreq burst=10; #БЕЗ nodelay
  34. 34. Число запросов в секунду limit_req_zone $binary_remote_addr zone=lreq:10m rate=1r/s limit_req zone=lreq burst=10; #БЕЗ nodelay NAT!
  35. 35. geoip log_format main '$host $remote_addr $geoip_country_code … $request_time- $upstream_response_time'
  36. 36. geoip log_format main '$host $remote_addr $geoip_country_code … $request_time- $upstream_response_time' География клиентов!
  37. 37. Бонусы и грабли koleso.ru 199.21.99.196 US - [13/May/2016:23:09:18 +0300] "GET … 1.475-1.475 klg.koleso.ru 93.159.238.14 RU - [13/May/2016:23:08:25 +0300] "GET … 0.114-0.114 koleso.ru 141.8.143.201 US - [13/May/2016:23:08:28 +0300] "GET … 0.601-0.601 koleso.ru 141.8.143.203 US - [13/May/2016:23:09:19 +0300] "GET ... 0.411-0.411 koleso.ru 128.74.79.45 RU - [13/May/2016:23:08:49 +0300] "GET ... 0.017-0.017
  38. 38. Кэширование proxy_cache_lock on proxy_cache_use_stale error timeout updating invalid_header http_500 http_502 http_503 http_504 http_403 http_404
  39. 39. Можно кэшировать POST proxy_cache_methods GET POST
  40. 40. Можно кэшировать POST proxy_cache_methods GET POST Кэшировать на сутки не стоит
  41. 41. Можно кэшировать POST proxy_cache_methods GET POST Кэшировать на сутки не стоит Планировать и тестировать заранее
  42. 42. Ключ кэша (упрощенный пример) DDoS запросами вида “POST /?randomstring” proxy_cache_methods POST # НЕ КЭШИРУЕМ GET proxy_cache_key "1|$host|$uri|$request_body" # используем не $request_uri (с аргументами), а $uri – без аргументов
  43. 43. Запрет части функционала
  44. 44. Запрет части функционала ● Работающие полсайта лучше неработающего целиком
  45. 45. Запрет части функционала ● Работающие полсайта лучше неработающего целиком ● Половина клиентов лучше, чем ни одного
  46. 46. Выводы, мудрость Не паникуйте
  47. 47. Выводы, мудрость Не паникуйте Мониторинг
  48. 48. Выводы, мудрость Не паникуйте Мониторинг План реагирования
  49. 49. Выводы, мудрость Не паникуйте Мониторинг План реагирования Включайте мозг
  50. 50. Выводы, мудрость Не паникуйте Мониторинг План реагирования Включайте мозг Присмотрите сервис защиты
  51. 51. Выводы, мудрость Не паникуйте Мониторинг План реагирования Включайте мозг Присмотрите сервис защиты Вопросы? Юрий Колесов http://security-gu.ru security-guru@mail.ru +7 (926) 55-99-824

×