Что делать если пришел DDoS
Юрий Колесов
http://security-gu.ru
+7 (926) 55-99-824
v2.3
Ничего не работает
Почему не работает?
Как быстро прикинуть в чем проблема?
● На сервере
● Мониторинг
Ничего не работает
Почему не работает?
Как быстро прикинуть в чем проблема?
● На сервере
● Мониторинг
Точно DDoS?
Ничего не работает
Почему не работает?
Как быстро прикинуть в чем проблема?
● На сервере
● Мониторинг
Точно DDoS?
● Хабраэффект
Ничего не работает
Почему не работает?
Как быстро прикинуть в чем проблема?
● На сервере
● Мониторинг
Точно DDoS?
● Хабраэффект
● Неудачное обновление
Первым делом
● Не паниковать
● Отключить бэкенд (то, что создает нагрузку)
● Изучить логи
● Предположить или установить причину
Что же делать?
● Подумать заранее!
● Адекватный датацентр
● Резервный канал/IPMI консоль
● Запас по ресурсам
Что же делать?
● Подумать заранее!
● Адекватный датацентр
● Резервный канал/IPMI консоль
● Запас по ресурсам
● Используем nginx
Запрет неиспользуемых методов
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
Кэшировать на сутки не стоит
Планировать и тестировать заранее
Ключ кэша (упрощенный пример)
DDoS запросами вида “POST /?randomstring”
proxy_cache_methods POST # НЕ КЭШИРУЕМ GET
proxy_cache_key "1|$host|$uri|$request_body" # используем не $request_uri(с аргументами), а $uri – без аргументов
Запрет части функционала
● Работающие полсайта лучше неработающего целиком
● Половина клиентов лучше, чем ни одного
Выводы, мудрость
Не паникуйте
Мониторинг
План реагирования
Включайте мозг
Присмотрите сервис защиты
Вопросы?
Юрий Колесов
http://security-gu.ru
+7 (926) 55-99-824