Network, Security: DoS/DDoS

DOS/DDOS теория

DOS/DDOS (dns lookup, half-open attacks like syn flood; ddos = dos + botnet => flood guard) – отправляем большое количество каких-либо пакетов/запросов/ответов для отказа в обслуживании сервиса из-за нехватки ресурсов (процессинговых, памяти, сетевых и проч). DDOS – Distributed DoS (напр. используя botnet).

Существует три основных вида DOS:

    • Direct (SYN flood) – атакующий отправляет DOS трафик непосредственно жертве (напр. TCP SYN Flood Attack, но, безусловно, он может быть реализован и не напрямую)
      • Reflected (smurf attack) – атакующий отправляет фейковый трафик (spoofed) на промежуточный хост (или хосты), а промежуточный хост нагружает жертву. Обычно тут используется UDP т.к. его легко подделать (отсутствие 3whs). Примером является smurf атака – когда подменяется адрес источника icmp сообщения на бродкаст адрес и хосты сети начинают отвечать жертве.
  • Amplification (dns amplification attack) – форма reflected атаки, в ней атакующий так же отправляет фейковый трафик (spoofed) на промежуточный хост (или хосты), а промежуточный хост нагружает жертву. В сравнении с классической reflected атакой amplification имеет особенность – промежуточный хост генерирует в итоге большую нагрузку на жертву, чем если бы атакующий передал трафик непосредственно жертве. Пример реализации: используя смену source address мы генерируем на некий сервер небольшой по объему запрос (NTP сервер, DNS сервер и другие сервера), а он отвечает жертве по подмененному SRC адресу большим количеством данных и в результате DDOS’ит его. Так же примером amplification является Smurf amplifier для smurf атаки.

Формой DoS так же являются buffer overflow атаки (и вообще любые другие атаки), приводящие к отказу сервиса.

Сегодня большая часть DoS/DDoS атак основана на использовании ботнетов (botnet) с использованием command-and-control серверов (C2, CnC), тогда как ранее на тулзках вроде Ping of Death, Teardrop. Новые ботнеты так же замещают старые (напр. Storm, Mariposa).

 

 

DOS/DDOS защита
  • Flood guards – обеспечение защиты от DoS/DDoS. Обычно реализуется на Firewall/Enterprise Router/IPS/IDS, но есть и open source продукты для небольших организаций, например failed2ban (подробнее в статье iptables). Он обнаруживает атаки по общему паттерну (SYN flood/UDP flood), при достижении порога генерируется alert или даже предпринимаются автоматические меры (activation threshold) – напр. блокируется трафик на определенное время.

  • Почему традиционные Firewall/IPS плохи в защите от DDoS пишут Radware – они имеют серьезные архитектурные ограничения для этого (connection table, only individual session analysis).
    The simple answer is that they were not designed to do so. Firewalls and IPS focus on examining and preventing the intrusion of one entity at a time, but were not designed to detect the combined behavior of legitimate packets sent millions of times.
  • Пример защиты от DDoS на основе решения от Imperva, так же есть куча альтернатив (напр. de-cix.net, psychz.net и даже Касперский). Работает на основе BGP пиринга поверх GRE через DDoS облако хостера или на основе подмены DNS записи для защищаемого ресурса (DNS lookup резолвит в IP адрес DDoS-хостера). Я решение даже порекомендовал тут в ролике. Трафик к кастомеру маршрутизируется через imperva в результате
    • bgp as path prepend
    • анонсов конкретных сетей (которых атакуют или потенциально могут атаковать)
    • отключением анонсов через основной канал (напр. при атаке)
Я бы на вашем месте "на всякий такой случай" поглядел в сторону связки симка с белым IP + BGP + GRE, если еще не глядели.
Буржуи (напр. imperva) предлагают пиринг поверх gre как услугу защиты от ddos, вам же профит будет и в доп. бекапе.

WAF

Web Application Firewall, WAF (cloudflare, incapsula, sucuri) реализует функционал защиты web application от различных атак, включая ddos.
WAF представляет из себя промежуточный (между сервером и клиентов) сервис (сервер/облако), который располагается между клиентом и web application.

– Клиент резолвит сайт через dns
– Клиент получает один из адресов WAF, а не непосредственно адрес сайта (web application)
– WAF после анализа перенаправляет запрос на web application
– При этом на web application производится настройка приема запросов только от пулов IP WAF – на случай если кто то особо умный из истории dns поднимет твой старый IP.

https://github.com/vincentcox/bypass-firewalls-by-DNS-history
Firewall bypass script based on DNS history records. This script will search for DNS A history records and check if the server replies for that domain. Handy for bugbounty hunters.
How to protect against this script?
If you use a firewall, make sure to accept only traffic coming through the firewall. Deny all traffic coming directly from the internet. For example: Cloudflare has a list of IP's which you can whitelist with iptables or UFW. Deny all other traffic.
Make sure that no old servers are still accepting connections and not accessible in the first place

 

Cisco IOS anti-DOS фичи
Firewall services в Cisco IOS могут уменьшить вероятность syn flood и других атак:
    • COPP/CPPR, подробнее в архитектуре Cisco IOS
    • rate-limiting – делаем порог по количеству трафика определенных подсетей/протоколов и проч
Router(config)# interface vlan10
Router(config-if)# rate-limit input access-group rate-limit 199
  256000 64000 64000
  conform-action transmit exceed-action drop
    • Context-Based Access Control (CBAC) – правим таймауты на аномальные состояния, отслеживаем их количество. Аналогичное можно сделать и в conntrack (пример ниже).
Router(config)# ip inspect tcp synwait-time seconds
Router(config)# ip inspect tcp finwait-time seconds
Router(config)# ip inspect tcp idle-time seconds
Router(config)# ip inspect udp idle-time seconds
Router(config)# ip inspect dns-timeout seconds
Router(config)# ip inspect max-incomplete high number
Router(config)# ip inspect max-incomplete low number
Router(config)# ip inspect one-minute high number
Router(config)# ip inspect one-minute low number
Router(config)# ip inspect tcp max-incomplete host number
CBAC to restrict the number of half-open sessions, which typically is used to prevent TCP SYN flood attacks. This feature is similar to TCP Intercept, but it can examine TCP as well as UDP and ICMP sessions. Of course, with UDP and ICMP, because there is no state machine that defines the setup, maintenance, and removal of a connection, CBAC uses timers instead of connection threshold values.
In this article I will give an example of optimizing the parameters of nf_conntrack for a high-loaded NAT server.
On high-load servers, it is desirable to slightly reduce the timeout values, especially during DDOS attacks, or disable nf_conntrack if it is not needed and the server is not used for NAT, for example, change some timeout to such values (I left the uncommented lines unchanged):
net.netfilter.nf_conntrack_generic_timeout=60
net.netfilter.nf_conntrack_icmp_timeout=10
#net.netfilter.nf_conntrack_tcp_timeout_close=10
net.netfilter.nf_conntrack_tcp_timeout_close_wait=20
net.netfilter.nf_conntrack_tcp_timeout_established=1800
net.netfilter.nf_conntrack_tcp_timeout_fin_wait=30
#net.netfilter.nf_conntrack_tcp_timeout_last_ack=30
#net.netfilter.nf_conntrack_tcp_timeout_max_retrans=300
net.netfilter.nf_conntrack_tcp_timeout_syn_recv=30
net.netfilter.nf_conntrack_tcp_timeout_syn_sent=60
net.netfilter.nf_conntrack_tcp_timeout_time_wait=60
#net.netfilter.nf_conntrack_tcp_timeout_unacknowledged=300
#net.netfilter.nf_conntrack_udp_timeout=30
net.netfilter.nf_conntrack_udp_timeout_stream=60
    • tcp intercept (в активном режиме или watch режиме) – являемся proxy для создаваемых соединений и отслеживаем их. Принцип защиты от SYN flood в таком случае простой – мы пересогласовываем TCP handshake со внутренним сегментом только после получения ACK от клиента (SYN – SYN-ACK – ACK). Недостаток этого подхода – меняются sequence номера и поэтому ассиметричный роутинг перестает работать – т.е. трафик должен форвардится или через одну железку или через кластер, но никак не через независимые железки.
The TCP  intercept software intercepts TCP synchronization (SYN) packets from  clients to servers that match an extended access list. The software  establishes a connection with the client on behalf of the destination  server, and if successful, establishes the connection with the server on  behalf of the client and knits the two half-connections together  transparently. Thus, connection attempts from unreachable hosts will  never reach the server. The software continues to intercept and forward  packets throughout the duration of the connection. The number of SYNs  per second and the number of concurrent connections proxied depends on  the platform, memory, processor, and other factors
Router(config)# access-list 100 tcp permit tcp any host 192.1.1.1 eq 80
Router(config)# access-list 100 tcp permit tcp any host 192.1.1.2 eq 25
Router(config)# ip tcp intercept list 100
Router(config)# ip tcp intercept mode watch
Router(config)# ip tcp intercept watch-timeout 20
Router(config)# ip tcp intercept connection-timeout 120
Router(config)# ip tcp intercept max-incomplete high 600
Router(config)# ip tcp intercept min-incomplete low 500
Router(config)# ip tcp intercept one-minute high 800
Router(config)# ip tcp intercept one-minute low 600

 

 

Партнерство Cisco с Arbor и Radware

Насколько DDoS – это специфика, что даже Cisco, будучи ключевым вендором в телекоммуникационной индустрии использует партнерство с вендорами (arbor, radware), которые разбираются в DDoS (и имеют патенты, что, возможно, ключевое), для реализации функционала защиты от DDoS в своих ключевых Service Provider и Security продуктах.

  • В ASR9000 добавлен функционал защиты от DDoS на базе Arbor
  • В старшие FirePower добавлен функционал DDoS mitigation от Radware Virtual DefensePro (vDP)

 

Решение на базе Arbor

https://www.cisco.com/c/en/us/products/collateral/routers/asr-9000-series-aggregation-services-routers/solution-overview-c22-736143.html
https://www.cisco.com/c/en/us/products/collateral/routers/asr-9000-series-aggregation-services-routers/datasheet-c78-736894.html
  • требует установленную карту Virtualized Services Module, VSM
  • отправляет метаданные в коллектор Arbor SP (деплоится в VM in-house)
    NetFlow to Arbor Networks Peakflow SP
  • получает сигнатуры с актуальными ботнетами/правилами из облака Arbor
ATLAS
Both Peakflow and vDDoS protection receive regular updates from the Arbor Networks ATLAS Intelligence Feed (AIF), informing the device about the latest and most relevant DDoS threats from botnets and other sources.

 

Решение Radware Virtual DefensePro

  • представляет собой судя по всему VM, устанавливаемую на одну аппаратную платформу с FirePower
  • отправляет профиль трафика (netflow) в облачный сервис Radware для анализа
  • делает выводы не только на основе spike нагрузок (в radware называют это legacy rate based solutions), но и анализируя поля в пакетах (напр. распределение по SYN, RST флагам в TCP)

https://www.youtube.com/watch?v=aOLM9md2eMQ
https://www.radware.com/partners/cisco/firepower-ngfw/

Firepower DDoS Mitigation
Also available on the Cisco Firepower 4100 Series and 9300 appliances is tightly integrated, comprehensive, behavioral
DDoS mitigation for both network and application infrastructure protection. This DDoS mitigation is Radware’s Virtual
DefensePro (vDP). It is available from and supported directly by Cisco.

Пример защиты:

  • отправляем TCP syn flood с использованием hping3 – radware успешно блокирует атакующие пакеты к dst на основе acl: packet size, ttl, destination IP, destination port
hping3 172.17.18.200 -S -p 80 --rand-source --flood


   
  • отправляем DNS flood с использованием dns-flood – radware успешно блокирует атакующие пакеты к dst на основе acl: in probe dns query to attack destination
./dnsflood www.radware.com 172.17.18.200 -t A -r -p 53

     

 

Leave a Reply