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

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

2.2 Middle🔥 211 комментариев
#Безопасность#Сетевые протоколы и API

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

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

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

Защита от DDoS атак на уровне сервера: стандартные инструменты и практики

Защита от распределённых атак типа "отказ в обслуживании" (DDoS) требует комплексного подхода. Хотя полноценную защиту обеспечивают специализированные решения (Cloudflare, Akamai, AWS Shield), на уровне сервера можно предпринять существенные меры для снижения уязвимости.

1. Настройка сетевого стека и ядра Linux

Оптимизация параметров ядра через /etc/sysctl.conf критически важна:

# Защита от SYN-флуда
net.ipv4.tcp_syncookies = | 
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_max_syn_backlog = 2048

# Ограничение числа соединений
net.ipv4.netfilter.ip_conntrack_max = 100000
net.ipv4.tcp_max_tw_buckets = 2000000

# Ускорение обработки и очистки
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = |

Важные механизмы:

  • tcp_syncookies — защищает от SYN—флуда, временно преобразуя SYN-запросы в "печеньки"
  • Уменьшение таймаутов — быстрее освобождает ресурсы
  • Ограничение очередей — предотвращает переполнение буферов

2. Использование iptables/nftables для базовой фильтрации

Блокировка подозрительного трафика:

# Ограничение новых соединений с одного IP
iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 20 -j DROP

# Защита от ping-флуда (ICMP)
iptables -A INPUT -p icmp -m limit --limit 10/second -j ACCEPT
iptables -A INPUT -p icmp -j DROP

# Блокировка по географическому признаку (пример)
iptables -A INPUT -s 192.0.2.0/24 -j DROP

Эффективные правила:

  • Ограничение скорости (limit module) — контролирует пакеты в секунду
  • Блокировка по портам — закрывает неиспользуемые порты
  • Чёрные списки — блокирует известные ботнеты

3. Настройка веб-dсервера (Nginx/Apache)

Для Nginx конфигурация включает:

http {
    # Ограничение частоты запросов
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    
    # Ограничение соединений
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    
    server {
        limit_req zone=one burst=20 nodelay;
        limit_conn addr 10;
        
        # Защита от медленных клиентов
        client_body_timeout 10s;
        client_header_timeout 10s;
        client_max_body_size 100k;
    }
}

Ключевые директивы:

  • limit_req_zone — ограничивает запросы в секунду с одного IP
  • limit_conn_zone — ограничивает одновременные соединения
  • Таймауты — прерывают "медленные" атаки (Slowloris)

4. Применение fail2ban для динамической блокировки

Fail2ban анализирует логи и автоматически блокирует IP с подозрительной активностью:

# /etc/fail2ban/jail.local
[nginx-http-flood]
enabled = true
filter = nginx-http-flood
action = iptables[name=HTTP, port=http, protocol=tcp]
logpath = /var/log/nginx/access.log
maxretry = 100
findtime = 10
bantime = 600

Преимущества:

  • Автоматическая адаптация к новым атакам
  • Интеграция с различными сервисами (SSH, веб-серверы, базы данных)
  • Настраиваемые пороги срабатывания

5. Мониторинг и раннее обнаружение

Необходимые инструменты:

  • netstat, ss — анализ активных соединений
  • iftop, nethogs — мониторинг трафика в реальном времени
  • tcpdump для детального анализа пакетов:
# Отслеживание SYN-пакетов
tcpdump -i eth0 'tcp[13] & 2 != 0'

6. Архитектурные меры на уровне приложения

Для Go—приложений:

// Ограничение одновременных обработчиков
semaphore := make(chan struct{}, 100) // максимум 100 горутин

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    semaphore <- struct{}{}        // занять слот
    defer func() { <-semaphore }() // освободить слот
    
    // обработка запроса
})

// Таймауты на всех уровнях
client := &http.Client{
    Timeout: 5 * time.Second,
}

7. Комплексная стратегия защиты

Многоуровневый подход:

  1. Сетевой уровень — iptables, оптимизация ядра
  2. Транспортный уровень — ограничение соединений
  3. Прикладной уровень — лимиты запросов, валидация
  4. Архитектурный уровень — балансировка, резервирование

Ограничения серверных решений:

  • Не защищают от атак на полосу пропускания (Volume-based DDoS)
  • Требуют тонкой настройки под конкретную нагрузку
  • Не заменяют CDN и облачные решения для крупных атак

Заключение: Стандартные инструменты сервера обеспечивают защиту от атак на уровне приложения и протокола (L7/L4), но должны комбинироваться с сетевыми решениями для полной защиты. Регулярное тестирование, мониторинг и адаптация правил — ключевые компоненты успешной анти-DDoS стратегии.

Как защититься от DDoS атак стандартными инструментами сервера? | PrepBro