← Назад к вопросам

Что такое DDoS?

2.0 Middle🔥 61 комментариев
#Python Core#Soft Skills#Архитектура и паттерны

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

DDoS атаки и защита

DDoS (Distributed Denial of Service) — это кибератака, при которой множество скомпрометированных компьютеров, часто объединённые в ботнет, направляют огромное количество трафика на целевой сервер, делая его недоступным для легитимных пользователей.

Отличие DoS от DDoS

DoS (Denial of Service) — атака с одного источника:

# Простой DoS — одна машина отправляет запросы
import requests
while True:
    requests.get("http://target.com")  # Один источник атакует

DDoS — атака с множества источников одновременно, что делает её намного опаснее.

Типы DDoS атак

1. Volume-based атаки (Volumetric)

Цель — перегрузить канал связи.

Ботнет (10000+ скомпрометированных машин)
         |
         ├─→ Запрос 1
         ├─→ Запрос 2
         ├─→ Запрос 3
         └─→ Запрос N (гигабиты трафика)
              ↓
           Сервер жертвы
              ↓
        (Overflow → Offline)

Примеры:

  • UDP flood — отправка огромного количества UDP пакетов
  • DNS amplification — использование DNS серверов для усиления атаки
  • ICMP flood — перегрузка ICMP пакетами (ping)

2. Protocol-based атаки

Цель — эксплуатировать уязвимости в сетевых протоколах.

# Пример: SYN flood — перегрузка TCP handshake
# Нужно отправить столько SYN пакетов, чтобы истощить очередь подключений

# В операционной системе есть лимит на одновременные подключения
# (обычно в файле /proc/sys/net/ipv4/tcp_max_syn_backlog)

# Сервер пытается ответить на все SYN, но его ресурсы истощаются

3. Application-layer атаки

Цель — перегрузить приложение на уровне HTTP.

# DDoS на уровне приложения — запросы выглядят легитимными
import asyncio
import aiohttp

async def attack(target_url):
    async with aiohttp.ClientSession() as session:
        while True:
            # Обычный HTTP запрос, но в огромных масштабах
            async with session.get(target_url) as resp:
                await resp.text()

# Тысячи botnet узлов делают такие запросы одновременно

Примеры:

  • HTTP flood — огромное количество HTTP запросов
  • Slowloris — держит медленные соединения открытыми
  • Cache busting — запросы к разным URL параметрам для обхода кеша

Защита от DDoS

1. На уровне сетевой инфраструктуры:

                  Internet
                    |
          DDoS Protection Service
          (CloudFlare, AWS Shield, etc.)
                    |
              (Traffic filtering)
                    |
          Легитимный трафик →
              Ваш сервер
  • Rate limiting — ограничение количества запросов с одного IP
  • IP blacklisting — блокировка известных botnet IP адресов
  • Geographic filtering — блокировка трафика из определённых стран
  • Anycast routing — распределение трафика через сеть серверов

2. На уровне приложения:

# Flask пример с rate limiting
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address

limiter = Limiter(
    get_remote_address,
    default_limits=["200 per day", "50 per hour"]
)

@app.route("/api/data")
@limiter.limit("5/minute")
def get_data():
    return {"data": "..."}

3. На уровне инфраструктуры:

# Nginx конфиг для защиты от DDoS
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;

server {
    location /api/ {
        limit_req zone=api burst=20;
        proxy_pass http://backend;
    }
}

4. Мониторинг и алерты:

import time
from collections import defaultdict

class DDoSDetector:
    def __init__(self, threshold=100, window=60):
        self.requests_per_ip = defaultdict(int)
        self.window = window
        self.threshold = threshold
        self.last_reset = time.time()
    
    def check_request(self, ip_address):
        now = time.time()
        
        # Сбросить счётчик каждую минуту
        if now - self.last_reset > self.window:
            self.requests_per_ip.clear()
            self.last_reset = now
        
        self.requests_per_ip[ip_address] += 1
        
        # Alert если IP отправляет слишком много запросов
        if self.requests_per_ip[ip_address] > self.threshold:
            return False  # Block this IP
        
        return True

Реальные примеры

  • GitHub 2018 — 1.3 Tbps DDoS (GitHub временно был недоступен)
  • Дин DDoS 2020 — 809 Gbps (рекорд на то время)
  • Cloudflare 2014 — 400 Gbps на своей инфраструктуре

Итоги

Для Python разработчика важно понимать:

  1. DDoS это реальная угроза — защищайте свои приложения
  2. Rate limiting обязателен — применяй на всех публичных endpoints
  3. Используй CDN и защиту — CloudFlare, AWS Shield, Yandex DDoS Protection
  4. Мониторь трафик — устанавливай алерты на аномалии
  5. Планируй масштабирование — load balancing и автоскейлинг помогут выдержать пики

Python разработчик должен писать code, но понимать и сетевую безопасность.