# Як захистити сайт від DDoS-атак? Повний гід для веб-майстрів

DDoS (Distributed Denial of Service) — це атака, під час якої велика кількість запитів надходить на сервер одночасно з різних IP-адрес. Мета такої атаки — перевантажити ресурси сервера і зробити сайт недоступним для реальних користувачів.

За статистикою, 44% українських компаній зазнавали DDoS-атак у 2024 році. Середня тривалість атаки — від 4 до 24 годин, що може коштувати бізнесу тисячі доларів втрачених продажів.

## Як розпізнати DDoS-атаку?

### 🚨 **Основні ознаки атаки:**

**1. Різке зростання трафіку**

- Незвичайно високий трафік за короткий проміжок часу

- Сплеск відвідувань з невідомих джерел

- Аномальні піки в Google Analytics

**2. Повільна робота сайту**

- Сторінки завантажуються більше 10-15 секунд

- Тайм-аути при спробі зайти на сайт

- Помилки 503 "Service Unavailable"

**3. Підозрілі IP-адреси**

- Багато запитів з одного IP

- Трафік з географічних регіонів, де у вас немає клієнтів

- Однотипні User-Agent в логах сервера

**4. Перевантаження сервера**

- Високе навантаження на CPU (понад 90%)

- Вичерпання оперативної пам'яті

- Повільні запити до бази даних

### 📊 **Інструменти для моніторингу:**

- **Google Analytics** — перевірка аномального трафіку

- **Server monitoring tools** — Zabbix, Nagios

- **Логи сервера** — Apache access.log, Nginx error.log

- **CloudFlare Analytics** — детальна статистика запитів

## Основні способи захисту

### 🛡️ **1. Використання CDN та хмарного захисту**

**CloudFlare (рекомендується)**

- Безкоштовний план з базовим DDoS захистом

- Фільтрація до 10 Тбіт/с трафіку

- Автоматичне блокування підозрілих IP

```nginx

# Налаштування для інтеграції з CloudFlare

real_ip_header CF-Connecting-IP;

set_real_ip_from 173.245.48.0/20;

set_real_ip_from 103.21.244.0/22;

set_real_ip_from 103.22.200.0/22;

```

**AWS CloudFront + Shield**

- AWS Shield Standard — безкоштовно

- AWS Shield Advanced — $3000/міс (для великих проектів)

**Інші провайдери:**

- Sucuri Security

- StackPath

- KeyCDN

### 🔒 **2. Налаштування веб-сервера**

**Nginx — обмеження кількості запитів**

```nginx

# Обмеження запитів від одного IP

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/m;

limit_req zone=one burst=5 nodelay;

# Обмеження з'єднань

limit_conn_zone $binary_remote_addr zone=addr:10m;

limit_conn addr 5;

# Таймаути

client_body_timeout 10s;

client_header_timeout 10s;

send_timeout 10s;

```

**Apache — mod_security + mod_evasive**

```apache

# Встановлення mod_evasive

LoadModule evasive24_module modules/mod_evasive24.so

DOSHashTableSize 5000

DOSPageCount 2

DOSSiteCount 50

DOSPageInterval 1

DOSSiteInterval 1

DOSBlockingPeriod 600

```

### 🖥️ **3. Налаштування системи та мережі**

**Firewall правила (iptables)**

```bash

# Блокування IP після 10 невдалих спроб

iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set

iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP

# Обмеження SYN flood атак

iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT

```

**Налаштування TCP параметрів**

```bash

# /etc/sysctl.conf

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_max_syn_backlog = 2048

net.ipv4.tcp_synack_retries = 3

net.netfilter.nf_conntrack_max = 65536

```

### 🔍 **4. Інструменти захисту на рівні застосунку**

**Fail2Ban — автоматичне блокування**

```bash

# Встановлення

sudo apt-get install fail2ban

# Конфігурація для HTTP

[DEFAULT]

bantime = 3600

findtime = 600

maxretry = 5

[nginx-req-limit]

enabled = true

filter = nginx-req-limit

action = iptables-multiport[name=ReqLimit, port="http,https"]

logpath = /var/log/nginx/error.log

maxretry = 10

```

**Rate Limiting в коді (PHP приклад)**

```php

class RateLimiter {

public static function checkLimit($ip, $maxRequests = 100, $timeWindow = 3600) {

$key = "rate_limit:" . $ip;

$current = Redis::get($key) ?? 0;

if ($current >= $maxRequests) {

http_response_code(429);

die('Too Many Requests');

}

Redis::incr($key);

Redis::expire($key, $timeWindow);

}

}

// Використання

RateLimiter::checkLimit($_SERVER['REMOTE_ADDR']);

?>

```

## Додаткові рекомендації

### 💡 **Превентивні заходи**

**1. Регулярний моніторинг**

- Налаштуйте алерти на незвичайний трафік

- Щоденна перевірка логів сервера

- Моніторинг навантаження сервера

**2. Бекапи та план відновлення**

- Автоматичні щоденні бекапи

- Тестування процедури відновлення

- Резервний сервер або хостинг

**3. Оптимізація продуктивності**

```nginx

# Кешування статичного контенту

location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {

expires 1M;

add_header Cache-Control "public, immutable";

}

# Gzip стиснення

gzip on;

gzip_types text/css application/javascript text/javascript;

```

### 🆘 **Що робити під час атаки?**

**Швидкі дії (перші 5 хвилин):**

1. **Активуйте "Under Attack Mode" в CloudFlare**

- Зайдіть в панель CloudFlare

- Security → Settings → Under Attack Mode "ON"

2. **Заблокуйте найагресивніші IP**

```bash

# Знайдіть топ атакуючих IP

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20

# Заблокуйте їх

iptables -A INPUT -s 192.168.1.100 -j DROP

```

3. **Зв'яжіться з хостинг-провайдером**

- Повідомте про атаку

- Попросіть увімкнути DDoS захист

- Дізнайтеся про можливість збільшення ресурсів

### 📈 **Довгострокова стратегія**

**Інвестиції в безпеку:**

- Професійний DDoS захист ($50-500/міс)

- Моніторинг 24/7 ($100-1000/міс)

- Резервна інфраструктура

**Навчання команди:**

- Процедури реагування на атаки

- Регулярне тестування систем захисту

- Оновлення планів безпеки

## Отже

DDoS-атаки — це серйозна загроза для будь-якого онлайн-бізнесу. Ефективний захист вимагає комплексного підходу:

✅ **Базовий захист:** CloudFlare + правильно налаштований сервер

✅ **Проактивний моніторинг:** Система алертів та регулярні перевірки

✅ **План реагування:** Чіткі інструкції для команди

✅ **Професійна підтримка:** Досвідчені фахівці та якісний хостинг

**Пам'ятайте:** Краще витратити $100 на превентивні заходи, ніж втратити $10,000 через недоступність сайту під час важливої рекламної кампанії.

---

### 💼 Потрібна допомога з захистом вашого сайту?

**WebCraft пропонує:**

- Налаштування DDoS захисту

- 24/7 моніторинг безпеки

- Швидке реагування на загрози

- Регулярні security аудити

**Зв'язок:** 📱 Telegram: [@name_lucky_lucky](https://t.me/name_lucky_lucky)