Что делать, если пришел ddos или antiflood для бедных / Юрий...

53
Что делать если пришел DDoS Юрий Ко лесов hp://security-gu.ru [email protected] +7 (926) 55-99-824 v2.3

Upload: ontico

Post on 16-Apr-2017

614 views

Category:

Engineering


2 download

TRANSCRIPT

Что делать если пришел DDoS

Юрий Колесов

http://security-gu.ru

[email protected]

+7 (926) 55-99-824

v2.3

Ничего не работает

Почему не работает?

Как быстро прикинуть в чем проблема?

Ничего не работает

Почему не работает?

Как быстро прикинуть в чем проблема?

● На сервере

Ничего не работает

Почему не работает?

Как быстро прикинуть в чем проблема?

● На сервере

● Мониторинг

Ничего не работает

Почему не работает?

Как быстро прикинуть в чем проблема?

● На сервере

● Мониторинг

Точно DDoS?

Ничего не работает

Почему не работает?

Как быстро прикинуть в чем проблема?

● На сервере

● Мониторинг

Точно DDoS?

● Хабраэффект

Ничего не работает

Почему не работает?

Как быстро прикинуть в чем проблема?

● На сервере

● Мониторинг

Точно DDoS?

● Хабраэффект

● Неудачное обновление

Первым делом

Первым делом

● Не паниковать

Первым делом

● Не паниковать

● Отключить бэкенд (то что создает нагрузку)

Первым делом

● Не паниковать

● Отключить бэкенд (то что создает нагрузку)

● Изучить логи

Первым делом

● Не паниковать

● Отключить бэкенд (то, что создает нагрузку)

● Изучить логи

● Предположить или установить причину

Best practice

Best practice

● Парсим логи

Best practice

● Парсим логи

● Баним (iptables/ipset)

Best practice

● Парсим логи

● Баним (iptables/ipset)

ПЛОХО!

Что же делать?

Что же делать?

● Подумать заранее!

Что же делать?

● Подумать заранее!

● Адекватный датацентр

Что же делать?

● Подумать заранее!

● Адекватный датацентр

● Резервный канал/IPMI консоль

Что же делать?

● Подумать заранее!

● Адекватный датацентр

● Резервный канал/IPMI консоль

● Запас по ресурсам

Что же делать?

● Подумать заранее!

● Адекватный датацентр

● Резервный канал/IPMI консоль

● Запас по ресурсам

● Используем nginx

Ускорение сайта

Медленный сайт — проблемы и без DDoSа

Разнесение location

Разнесение location

● Статика

Разнесение location

● Статика

● Динамика (бэкенд)

Разнесение location

● Статика

● Динамика (бэкенд)

● AJAX

Разнесение location

● Статика

● Динамика (бэкенд)

● AJAX

● Медленные (или, наоборот, быстрые) url

Запрет неиспользуемых методов

location / { limit_except GET HEAD { allow 10.1.15.6/32; #trusted ip deny all; }…}

Лимиты

Лимиты

● Число коннектов

Лимиты

● Число коннектов

● Число запросов в секунду

Число запросов в секунду

limit_req_zone $binary_remote_addr zone=lreq:10mrate=1r/s

limit_req zone=lreq burst=10; #БЕЗ nodelay

Число запросов в секунду

limit_req_zone $binary_remote_addr zone=lreq:10mrate=1r/s

limit_req zone=lreq burst=10; #БЕЗ nodelay

NAT!

geoip

log_format main '$host $remote_addr$geoip_country_code … $request_time-$upstream_response_time'

geoip

log_format main '$host $remote_addr$geoip_country_code … $request_time-$upstream_response_time'

География клиентов!

Бонусы и грабли

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

Кэширование

proxy_cache_lock on

proxy_cache_use_stale error timeout updatinginvalid_header http_500 http_502 http_503 http_504http_403 http_404

Можно кэшировать POST

proxy_cache_methods GET POST

Можно кэшировать POST

proxy_cache_methods GET POST

Кэшировать на сутки не стоит

Можно кэшировать POST

proxy_cache_methods GET POST

Кэшировать на сутки не стоит

Планировать и тестировать заранее

Ключ кэша (упрощенный пример)

DDoS запросами вида “POST /?randomstring”

proxy_cache_methods POST # НЕ КЭШИРУЕМ GET

proxy_cache_key "1|$host|$uri|$request_body" # используем не $request_uri(с аргументами), а $uri – без аргументов

Запрет части функционала

Запрет части функционала

● Работающие полсайта лучше неработающего целиком

Запрет части функционала

● Работающие полсайта лучше неработающего целиком

● Половина клиентов лучше, чем ни одного

Выводы, мудрость

Не паникуйте

Выводы, мудрость

Не паникуйте

Мониторинг

Выводы, мудрость

Не паникуйте

Мониторинг

План реагирования

Выводы, мудрость

Не паникуйте

Мониторинг

План реагирования

Включайте мозг

Выводы, мудрость

Не паникуйте

Мониторинг

План реагирования

Включайте мозг

Присмотрите сервис защиты

Выводы, мудрость

Не паникуйте

Мониторинг

План реагирования

Включайте мозг

Присмотрите сервис защиты

Вопросы?

Юрий Колесов

http://security-gu.ru

[email protected]

+7 (926) 55-99-824