Как защититься от DDoS-атак с помощью стандартных серверных инструментов

«Как защититься от DDoS-атак с помощью стандартных серверных инструментов» — вопрос из категории Безопасность, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для базовой защиты от DDoS-атак на уровне сервера можно использовать комбинацию встроенных инструментов и настроек. Эти меры эффективны против атак низкого и среднего уровня.

  1. Ограничение скорости запросов (Rate Limiting) Самый эффективный метод на уровне веб-сервера. Nginx позволяет ограничить количество запросов с одного IP-адреса.

    # В http блоке
    limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;
    
    # В server или location блоке
    server {
        limit_req zone=mylimit burst=10 nodelay;
    }
    • rate=5r/s: не более 5 запросов в секунду с одного IP.
    • burst=10: позволяет краткосрочное превышение лимита на 10 запросов.
  2. Ограничение количества соединений С помощью iptables можно ограничить число одновременных подключений к порту (например, 80) с одного IP.

    # Разрешить не более 20 одновременных подключений к порту 80 с одного IP
    iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j REJECT
  3. Включение SYN Cookies Это механизм ядра Linux для защиты от SYN-флуд атак. Он активируется при высокой нагрузке.

    # Включить SYN Cookies
    sysctl -w net.ipv4.tcp_syncookies=1
  4. Использование Fail2Ban Fail2Ban сканирует логи (например, Nginx) и автоматически блокирует IP-адреса, проявляющие вредоносную активность (слишком много запросов, попытки сканирования и т.д.).

Важно: Эти методы не спасут от масштабных, распределенных атак. Для серьезной защиты необходимо использовать специализированные сервисы (например, Cloudflare, Qrator Labs) или аппаратные решения.