Перейти к содержанию
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
Логотип бренда
Категории
  1. Главная
  2. Категории
  3. Бекенд, разработка серверов
  4. Как защитить API от DDoS-атак: топ-5 инструментов и практик

Как защитить API от DDoS-атак: топ-5 инструментов и практик

Запланировано Прикреплена Закрыта Перенесена Бекенд, разработка серверов
4 Сообщения 3 Постеры 29 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsK Не в сети
    kirilljsK Не в сети
    kirilljs
    js
    написал отредактировано
    #1

    Если ваш API внезапно перестал отвечать, а серверы падают под потоком подозрительных запросов — это классическая картина DDoS-атаки. Такие атаки могут обрушить ваш сервис, потерять клиентов и деньги. Но не спешите паниковать: сегодня мы разберем, как защититься, и покажем конкретные инструменты с простыми примерами настройки.


    Почему важно защищать API?

    API — это «сердце» многих современных приложений. Он связывает мобильные приложения с серверами, чат-ботов с базами данных, а фронтенд с логикой бэка. Если злоумышленник заблокирует доступ к нему, вся система остановится. DDoS-атаки работают просто: боты отправляют миллионы запросов, перегружая сервер. Задача защиты — отличить «живых» пользователей от ботов и распределить нагрузку так, чтобы сервис оставался доступным.


    Топ-5 инструментов для защиты API

    Все решения можно разделить на платформы уровня облака (например, Cloudflare или AWS Shield) и локальные инструменты (Nginx, Fail2Ban). Вот пять вариантов, которые покроют разные сценарии использования:

    1. Cloudflare — «Щит» для любого сайта

    Плюсы: Простота настройки, защита от DDoS и ботов, бесплатный тариф.
    Минусы: Меньше контроля над трафиком, чем у AWS или Azure.
    Как настроить:

    • Зарегистрируйте аккаунт на cloudflare.com.
    • Перенесите DNS-записи вашего домена в Cloudflare.
    • Включите защиту DDoS в разделе «Network».
    • Настройте правила брандмауэра (Firewall) для блокировки подозрительных IP.
    2. AWS Shield — Защита для масштабных проектов

    Плюсы: Интеграция с другими сервисами AWS, автоматическое обнаружение атак.
    Минусы: Высокая стоимость, сложность настройки для новичков.
    Как настроить:

    • В консоли AWS включите Shield для вашего API Gateway или ALB.
    • В разделе AWS WAF создайте правила для фильтрации запросов (например, по частоте или IP).
    • Настройте CloudWatch для мониторинга аномалий.
    3. Azure DDoS Protection — Для интеграции с Microsoft-инфраструктурой

    Плюсы: Глубокая интеграция с Azure, автоматическое масштабирование.
    Минусы: Ограниченная поддержка не-Azure ресурсов.
    Как настроить:

    • Включите DDoS Protection в разделе «Network Security».
    • Настройте политики фильтрации трафика в Azure Security Center.
    • Свяжите с Application Gateway для дополнительной фильтрации.
    4. Nginx — Локальный барьер против атак

    Плюсы: Бесплатный, гибкая настройка, работает как обратный прокси.
    Минусы: Требует ручной настройки, не подходит для тяжелых DDoS.
    Как настроить:

    • Установите Nginx: sudo apt install nginx.
    • В конфиге /etc/nginx/nginx.conf добавьте:
      http {
          limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
          server {
              location /api/ {
                  limit_req zone=one burst=20;
                  proxy_pass http://your_backend;
              }
          }
      }
      
      Это ограничит частоту запросов к /api/ до 10 в секунду.
    5. Fail2Ban — Блокировка агрессивных IP

    Плюсы: Простота, работает на уровне сервера.
    Минусы: Не подходит для распределенных атак с множества IP.
    Как настроить:

    • Установите Fail2Ban: sudo apt install fail2ban.
    • Создайте файл /etc/fail2ban/jail.d/api-protection.conf:
      [api]
      enabled = true
      filter = api
      action = iptables[name=API, port=80, protocol=tcp]
      logpath = /var/log/nginx/access.log
      maxretry = 100
      bantime = 3600
      
      Это заблокирует IP, который сделает более 100 запросов в час.

    3 ключевые практики для защиты API

    Практика 1: Rate Limiting
    Ограничение количества запросов от одного пользователя — самый простой способ отбить атаку. Например, разрешите не более 100 запросов в минуту на IP. Это можно настроить через Nginx, AWS WAF или библиотеки вроде express-rate-limit для Node.js:

    const rateLimit = require('express-rate-limit');
    const limiter = rateLimit({ windowMs: 60 * 1000, max: 100 });
    app.use('/api/', limiter);
    

    Практика 2: Используйте CDN
    CDN (Content Delivery Network) распределяет трафик по серверам по всему миру. Это не только ускоряет работу API, но и поглощает часть DDoS-атак. Cloudflare, Akamai и AWS CloudFront — лучшие варианты.

    Практика 3: Мониторинг и автоматическое реагирование
    Настройте оповещения о скачках трафика через Prometheus + Grafana или облачные сервисы (CloudWatch, Azure Monitor). Автоматизируйте блокировку подозрительных IP через скрипты или интеграции с WAF.


    Как выбрать подходящее решение?

    • Для стартапа или малого бизнеса: Cloudflare или Nginx + Fail2Ban.
    • Для крупного проекта на AWS/Azure: AWS Shield или Azure DDoS Protection.
    • Для гибкости и контроля: Сочетание Nginx + WAF + ручных скриптов.
    1 ответ Последний ответ
    1
    • JspiJ Не в сети
      JspiJ Не в сети
      Jspi
      js
      написал отредактировано
      #2

      Вот еще шпаргалки, как можно управлять трафиком через iptables

      Ограничение количества соединений с одного IP

      Используется для предотвращения перегрузки сервера множеством подключений от одного источника.

      Пример:

      # Ограничение до 20 одновременных подключений на порт 80 (HTTP)
      iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP
      

      Пояснение:

      • A INPUT — добавить правило в цепочку входящих пакетов.
      • p tcp --dport 80 — применить к TCP-трафику на порту 80.
      • m connlimit --connlimit-above 20 — ограничить более чем 20 соединениями.
      • j DROP — отбросить пакеты, если лимит превышен.

      Rate Limiting (ограничение частоты запросов)

      Позволяет ограничить количество пакетов или соединений в единицу времени.

      Пример:

      # Разрешить максимум 25 новых соединений в секунду на порт 80
      iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/second -j ACCEPT
      iptables -A INPUT -p tcp --dport 80 -j DROP
      

      Пояснение:

      • –limit 25/second — разрешить 25 новых соединений в секунду.
      • Все последующие пакеты будут отброшены (-j DROP).

      Блокировка ICMP-запросов

      Атаки типа ICMP flood (например, пинг с огромным количеством пакетов) можно заблокировать.

      Пример:

      # Заблокировать все ICMP-запросы (например, ping)
      iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
      

      Ручная блокировка подозрительных IP

      Если вы обнаружили IP-адрес, генерирующий аномальный трафик, заблокируйте его.

      Пример:

      # Заблокировать конкретный IP
      iptables -A INPUT -s 192.168.1.100 -j DROP
      
      # Сохранить правила (для сохранения после перезагрузки)
      iptables-save > /etc/iptables/rules.v4
      

      Проверка активных подключений:

      # Посмотреть все активные TCP-соединения
      ss -tulnp
      
      # Посмотреть количество подключений на порт 80
      ss -ant | grep :80 | wc -l
      
      kirilljsK 1 ответ Последний ответ
      1
      • JspiJ Jspi

        Вот еще шпаргалки, как можно управлять трафиком через iptables

        Ограничение количества соединений с одного IP

        Используется для предотвращения перегрузки сервера множеством подключений от одного источника.

        Пример:

        # Ограничение до 20 одновременных подключений на порт 80 (HTTP)
        iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j DROP
        

        Пояснение:

        • A INPUT — добавить правило в цепочку входящих пакетов.
        • p tcp --dport 80 — применить к TCP-трафику на порту 80.
        • m connlimit --connlimit-above 20 — ограничить более чем 20 соединениями.
        • j DROP — отбросить пакеты, если лимит превышен.

        Rate Limiting (ограничение частоты запросов)

        Позволяет ограничить количество пакетов или соединений в единицу времени.

        Пример:

        # Разрешить максимум 25 новых соединений в секунду на порт 80
        iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/second -j ACCEPT
        iptables -A INPUT -p tcp --dport 80 -j DROP
        

        Пояснение:

        • –limit 25/second — разрешить 25 новых соединений в секунду.
        • Все последующие пакеты будут отброшены (-j DROP).

        Блокировка ICMP-запросов

        Атаки типа ICMP flood (например, пинг с огромным количеством пакетов) можно заблокировать.

        Пример:

        # Заблокировать все ICMP-запросы (например, ping)
        iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
        

        Ручная блокировка подозрительных IP

        Если вы обнаружили IP-адрес, генерирующий аномальный трафик, заблокируйте его.

        Пример:

        # Заблокировать конкретный IP
        iptables -A INPUT -s 192.168.1.100 -j DROP
        
        # Сохранить правила (для сохранения после перезагрузки)
        iptables-save > /etc/iptables/rules.v4
        

        Проверка активных подключений:

        # Посмотреть все активные TCP-соединения
        ss -tulnp
        
        # Посмотреть количество подключений на порт 80
        ss -ant | grep :80 | wc -l
        
        kirilljsK Не в сети
        kirilljsK Не в сети
        kirilljs
        js
        написал отредактировано
        #3

        @Jspi А вот это кстати тема! Ведь реально можно просто блокировать по ip кол-во подключений.

        1 ответ Последний ответ
        0
        • MugiwaraM Не в сети
          MugiwaraM Не в сети
          Mugiwara
          написал отредактировано
          #4

          Cloudflare и AWS Shield — это как стрелять из пушки по воробьям для маленьких проектов. 😂 А если денег нет, то остаётся только iptables и молитвы. Кто-нибудь пробовал CrowdSec ? Говорят, бесплатно и не требует продажи почки.

          И да, автор, спасибо за примеры, но где мем про “а что, если DDoS всё-таки пробьёт”? 😅

          P.S. CAPTCHA на API — это жесть. Лучше уж сразу ботов отстреливать.

          1 ответ Последний ответ
          0

          Категории

          • Главная
          • Новости
          • Фронтенд
          • Бекенд
          • Языки программирования

          Контакты

          • Сотрудничество
          • info@rosdesk.ru
          • Наш чат
          • Наш ТГ канал

          © 2024 - 2025 RosDesk, Inc. Все права защищены.

          Политика конфиденциальности
          • Войти

          • Нет учётной записи? Зарегистрироваться

          • Войдите или зарегистрируйтесь для поиска.
          • Первое сообщение
            Последнее сообщение
          0
          • Категории
          • Последние
          • Метки
          • Популярные
          • Пользователи
          • Группы