Борьба с DDoS в
хостинге: по обе
стороны баррикад
Константин Новаковский, Vscale
h
Почему нам больно
• 6 датацентров (6,5к м2
)
• Аренда серверов / стоек / серверных помещений / волокон
• Виртуальное приватное облако
• Облачное хранилище / CDN
• Мониторинг
• Vscale
• Anycast DNS
Проблемы
• атаки на наших клиентов
• атаки на нашу инфраструктуру
• использование нашей инфраструктуры для атак:
• “взломали” сервер клиента
• виртуалки для атак
DoS. DDoS. Коротко. А вдруг :)
● на канал (volumetric)
● на протокол
● на оборудование
● на приложение
DDoS. Коротко. А вдруг :)
● на канал (volumetric)
● на протокол
● на оборудование
● на приложение
● большой BPS
● большой PPS
● большой PPS
● небольшие числа
BPS/PPS
Отражение
1. Атакующий хост рассылает запросы от имени жертвы по всему
интернету
2. Хосты в интернете отвечают жертве
3. Жертва получает ОЧЕНЬ МНОГО неожиданных ответов
Размер ответа небольшой — как правило, равный размеру запроса.
ping -S <жертва> <host в интернете>
hping3 ...
Усиление
Основной механизм - отражение, но
● посылка маленького по размеру запроса
● генерация очень большого ответа - до 100 килобайт
• SNMP, DNS, NTP, SSDP, CS, Quake
• UDP - нет установки сессии перед запросом rfc768
12 декабря 2015
Флуд
• udp
• syn
• icmp
• etc
Мониторинг
Минимум - нагрузка на сетевых интерфейсах
серверов/роутерах
Держать weathermap перед глазами
Мониторинг
Кто?
кого?
откуда?
куда?
Netflow, IPFIX, sFlow
• сенсор
• коллектор
• анализатор
Netflow, IPFIX, sFlow
• сенсор
• коллектор
• анализатор
Netflow, IPFIX, sFlow
• Обрабатываются не все пакеты
• Может создать излишнюю нагрузку на сенсор
• Значение семплинга зависит от:
• объемов трафика
• оборудования / сенсора
Мониторим SNMP, DNS, NTP, SSDP
$ nfdump -n 50 -s dstip:p/bps 
"dst as 49505 and
(src port 53 or src port 1900 or
src port 123 or src port 161)
and pps > 500 and duration > 40"
Мониторим SNMP, DNS, NTP, SSDP
$ nfdump -n 50 -s dstip:p/bps 
"dst as 49505 and
(src port 53 or src port 1900 or
src port 123 or src port 161)
and pps > 500 and duration > 40"
Мониторим SNMP, DNS, NTP, SSDP
$ nfdump -n 50 -s dstip:p/bps 
"dst as 49505 and
(src port 53 or src port 1900 or
src port 123 or src port 161)
and pps > 500 and duration > 40"
Отчёт клиенту.
• Топ по портам назначения
• Топ портам источников трафика
• Автономные системы источников трафика
• Топы IP-адресов на основе топов портов
источников и назначения
• Количество IP-адресов в по топам портов
Реакция и смягчение. BGP Flow Spec
• Работает поверх BGP
• обрабатывается аппаратно на ASIC’ах
• опасен своей мощью
• поддерживают далеко не все операторы
BGP Flow Spec. Фильтры. RFC 5575
Destination Prefix
Source Prefix
IP Protocol
Port
Destination port
Source port
ICMP type
ICMP code
TCP flags
Packet length
DSCP
Fragment
Flow Spec. Фильтры. RFC 5575
Destination Prefix
Source Prefix
IP Protocol
Port
Destination port
Source port
ICMP type
ICMP code
TCP flags
Packet length
DSCP
Fragment
Flow Spec. Фильтры. RFC 5575
Destination Prefix
Source Prefix
IP Protocol
Port
Destination port
Source port
ICMP type
ICMP code
TCP flags
Packet length
DSCP
Fragment
Flow Spec. Реакция
traffic-rate
traffic-action
redirect
traffic-marking
Accept
Discard
Next-hop
rate-limit
etc
Fastnetmon
• NetFlow v5, v9
• IPFIX
• sFLOW v4, v5
• Port mirror/SPAN capture with PF_RING, SnabbSwitch,
NETMAP and PCAP
Fastnetmon. Пример отчёта
Attack type: syn_flood
Initial attack power: 106961 packets per second
Peak attack power: 211654 packets per second
Attack direction: outgoing
Attack protocol: tcp
Total incoming traffic: 33 mbps
Total outgoing traffic: 674 mbps
Total incoming pps: 7290 packets per second
Total outgoing pps: 106961 packets per second
Total incoming flows: 0 flows per second
Total outgoing flows: 0 flows per second
Average incoming traffic: 33 mbps
Average outgoing traffic: 674 mbps
Average incoming pps: 7290 packets per second
Average outgoing pps: 106961 packets per second
Incoming tcp traffic: 0 mbps
Outgoing tcp traffic: 1869 mbps
Incoming tcp pps: 0 packets per second
Outgoing tcp pps: 262144 packets per second
Incoming syn tcp traffic: 0 mbps
Outgoing syn tcp traffic: 1869 mbps
Incoming syn tcp pps: 0 packets per second
Outgoing syn tcp pps: 262144 packets per second
Fastnetmon. Пример отчёта
Attack type: syn_flood
Initial attack power: 106961 packets per second
Peak attack power: 211654 packets per second
Attack direction: outgoing
Attack protocol: tcp
Total incoming traffic: 33 mbps
Total outgoing traffic: 674 mbps
Total incoming pps: 7290 packets per second
Total outgoing pps: 106961 packets per second
Total incoming flows: 0 flows per second
Total outgoing flows: 0 flows per second
Average incoming traffic: 33 mbps
Average outgoing traffic: 674 mbps
Average incoming pps: 7290 packets per second
Average outgoing pps: 106961 packets per second
Incoming tcp traffic: 0 mbps
Outgoing tcp traffic: 1869 mbps
Incoming tcp pps: 0 packets per second
Outgoing tcp pps: 262144 packets per second
Incoming syn tcp traffic: 0 mbps
Outgoing syn tcp traffic: 1869 mbps
Incoming syn tcp pps: 0 packets per second
Outgoing syn tcp pps: 262144 packets per second
Open vSwitch. Openflow
Open vSwitch — программный многоуровневый коммутатор.
Обеспечивает сеть виртуальным машинам.
Openflow — протокол взаимодействия между сетевыми
устройствами (коммутаторами) программно-управляемой
сети (SDN) и централизованным контроллером
Фильтруем трафик виртуалок
DHCP
priority=39100
dl_type=0x0800
nw_proto=17
nw_dst=255.255.255.255
tp_dst=68
idle_timeout=0
action=drop
Anti Spoofing
priority=39000
dl_type=0x0800
nw_src=192.168.10.1
dl_src=52:54:00:a3:74:68
idle_timeout=0
action=normal
http://archive.openflow.org/doc/gui/org/openflow/protocol/Match.html
Фильтруем трафик виртуалок.
DHCP
priority=39100
dl_type=0x0800
nw_proto=17
nw_dst=255.255.255.255
tp_dst=68
idle_timeout=0
action=drop
Anti Spoofing
priority=39000
dl_type=0x0800
nw_src=192.168.10.1
dl_src=52:54:00:a3:74:68
idle_timeout=0
action=normal
http://archive.openflow.org/doc/gui/org/openflow/protocol/Match.html
Предотвращение атак из виртуалок
Мониторим превышение на порту виртуалок
Проверяем подозрительный трафик:
• не попадает под известные случаи
• ничего не делаем
• вредоносная активность:
• делаем небольшой дамп для дальнейшего разбора
инцидента
• отключаем порт виртуалки от сети
Вопросы?

Борьба с DDoS в хостинге - по обе стороны баррикад / Константин Новаковский (Selectel)

  • 1.
    Борьба с DDoSв хостинге: по обе стороны баррикад Константин Новаковский, Vscale h
  • 2.
    Почему нам больно •6 датацентров (6,5к м2 ) • Аренда серверов / стоек / серверных помещений / волокон • Виртуальное приватное облако • Облачное хранилище / CDN • Мониторинг • Vscale • Anycast DNS
  • 3.
    Проблемы • атаки нанаших клиентов • атаки на нашу инфраструктуру • использование нашей инфраструктуры для атак: • “взломали” сервер клиента • виртуалки для атак
  • 4.
    DoS. DDoS. Коротко.А вдруг :) ● на канал (volumetric) ● на протокол ● на оборудование ● на приложение
  • 5.
    DDoS. Коротко. Авдруг :) ● на канал (volumetric) ● на протокол ● на оборудование ● на приложение ● большой BPS ● большой PPS ● большой PPS ● небольшие числа BPS/PPS
  • 6.
    Отражение 1. Атакующий хострассылает запросы от имени жертвы по всему интернету 2. Хосты в интернете отвечают жертве 3. Жертва получает ОЧЕНЬ МНОГО неожиданных ответов Размер ответа небольшой — как правило, равный размеру запроса. ping -S <жертва> <host в интернете> hping3 ...
  • 7.
    Усиление Основной механизм -отражение, но ● посылка маленького по размеру запроса ● генерация очень большого ответа - до 100 килобайт • SNMP, DNS, NTP, SSDP, CS, Quake • UDP - нет установки сессии перед запросом rfc768
  • 8.
  • 9.
  • 10.
    Мониторинг Минимум - нагрузкана сетевых интерфейсах серверов/роутерах Держать weathermap перед глазами
  • 11.
  • 12.
  • 13.
    Netflow, IPFIX, sFlow •сенсор • коллектор • анализатор
  • 14.
    Netflow, IPFIX, sFlow •сенсор • коллектор • анализатор
  • 15.
    Netflow, IPFIX, sFlow •Обрабатываются не все пакеты • Может создать излишнюю нагрузку на сенсор • Значение семплинга зависит от: • объемов трафика • оборудования / сенсора
  • 16.
    Мониторим SNMP, DNS,NTP, SSDP $ nfdump -n 50 -s dstip:p/bps "dst as 49505 and (src port 53 or src port 1900 or src port 123 or src port 161) and pps > 500 and duration > 40"
  • 17.
    Мониторим SNMP, DNS,NTP, SSDP $ nfdump -n 50 -s dstip:p/bps "dst as 49505 and (src port 53 or src port 1900 or src port 123 or src port 161) and pps > 500 and duration > 40"
  • 18.
    Мониторим SNMP, DNS,NTP, SSDP $ nfdump -n 50 -s dstip:p/bps "dst as 49505 and (src port 53 or src port 1900 or src port 123 or src port 161) and pps > 500 and duration > 40"
  • 19.
    Отчёт клиенту. • Топпо портам назначения • Топ портам источников трафика • Автономные системы источников трафика • Топы IP-адресов на основе топов портов источников и назначения • Количество IP-адресов в по топам портов
  • 20.
    Реакция и смягчение.BGP Flow Spec • Работает поверх BGP • обрабатывается аппаратно на ASIC’ах • опасен своей мощью • поддерживают далеко не все операторы
  • 21.
    BGP Flow Spec.Фильтры. RFC 5575 Destination Prefix Source Prefix IP Protocol Port Destination port Source port ICMP type ICMP code TCP flags Packet length DSCP Fragment
  • 22.
    Flow Spec. Фильтры.RFC 5575 Destination Prefix Source Prefix IP Protocol Port Destination port Source port ICMP type ICMP code TCP flags Packet length DSCP Fragment
  • 23.
    Flow Spec. Фильтры.RFC 5575 Destination Prefix Source Prefix IP Protocol Port Destination port Source port ICMP type ICMP code TCP flags Packet length DSCP Fragment
  • 24.
  • 25.
    Fastnetmon • NetFlow v5,v9 • IPFIX • sFLOW v4, v5 • Port mirror/SPAN capture with PF_RING, SnabbSwitch, NETMAP and PCAP
  • 27.
    Fastnetmon. Пример отчёта Attacktype: syn_flood Initial attack power: 106961 packets per second Peak attack power: 211654 packets per second Attack direction: outgoing Attack protocol: tcp Total incoming traffic: 33 mbps Total outgoing traffic: 674 mbps Total incoming pps: 7290 packets per second Total outgoing pps: 106961 packets per second Total incoming flows: 0 flows per second Total outgoing flows: 0 flows per second Average incoming traffic: 33 mbps Average outgoing traffic: 674 mbps Average incoming pps: 7290 packets per second Average outgoing pps: 106961 packets per second Incoming tcp traffic: 0 mbps Outgoing tcp traffic: 1869 mbps Incoming tcp pps: 0 packets per second Outgoing tcp pps: 262144 packets per second Incoming syn tcp traffic: 0 mbps Outgoing syn tcp traffic: 1869 mbps Incoming syn tcp pps: 0 packets per second Outgoing syn tcp pps: 262144 packets per second
  • 28.
    Fastnetmon. Пример отчёта Attacktype: syn_flood Initial attack power: 106961 packets per second Peak attack power: 211654 packets per second Attack direction: outgoing Attack protocol: tcp Total incoming traffic: 33 mbps Total outgoing traffic: 674 mbps Total incoming pps: 7290 packets per second Total outgoing pps: 106961 packets per second Total incoming flows: 0 flows per second Total outgoing flows: 0 flows per second Average incoming traffic: 33 mbps Average outgoing traffic: 674 mbps Average incoming pps: 7290 packets per second Average outgoing pps: 106961 packets per second Incoming tcp traffic: 0 mbps Outgoing tcp traffic: 1869 mbps Incoming tcp pps: 0 packets per second Outgoing tcp pps: 262144 packets per second Incoming syn tcp traffic: 0 mbps Outgoing syn tcp traffic: 1869 mbps Incoming syn tcp pps: 0 packets per second Outgoing syn tcp pps: 262144 packets per second
  • 29.
    Open vSwitch. Openflow OpenvSwitch — программный многоуровневый коммутатор. Обеспечивает сеть виртуальным машинам. Openflow — протокол взаимодействия между сетевыми устройствами (коммутаторами) программно-управляемой сети (SDN) и централизованным контроллером
  • 30.
    Фильтруем трафик виртуалок DHCP priority=39100 dl_type=0x0800 nw_proto=17 nw_dst=255.255.255.255 tp_dst=68 idle_timeout=0 action=drop AntiSpoofing priority=39000 dl_type=0x0800 nw_src=192.168.10.1 dl_src=52:54:00:a3:74:68 idle_timeout=0 action=normal http://archive.openflow.org/doc/gui/org/openflow/protocol/Match.html
  • 31.
    Фильтруем трафик виртуалок. DHCP priority=39100 dl_type=0x0800 nw_proto=17 nw_dst=255.255.255.255 tp_dst=68 idle_timeout=0 action=drop AntiSpoofing priority=39000 dl_type=0x0800 nw_src=192.168.10.1 dl_src=52:54:00:a3:74:68 idle_timeout=0 action=normal http://archive.openflow.org/doc/gui/org/openflow/protocol/Match.html
  • 32.
    Предотвращение атак извиртуалок Мониторим превышение на порту виртуалок Проверяем подозрительный трафик: • не попадает под известные случаи • ничего не делаем • вредоносная активность: • делаем небольшой дамп для дальнейшего разбора инцидента • отключаем порт виртуалки от сети
  • 34.