# Як захистити сайт від 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)