Налаштування захисту від DDoS-атак для сайту

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування захисту від DDoS-атак для сайту
Середня
від 1 робочого дня до 3 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування захисту від DDoS-атак для сайту

DDoS (Distributed Denial of Service) — перегрузка сервера потоком запитів від безлічі джерел до повної недоступності. Атаки бувають мережевого рівня (L3/L4: UDP flood, SYN flood) та прикладного рівня (L7: HTTP flood). Останні складніше відфільтрувати — запити виглядають як легітимний трафік.

Рівні захисту

Рівень 1: CDN + Anycast (Cloudflare, AWS Shield) Трафік проходить через розподілену мережу вузлів. Атакуючий змушений перегружати одночасно сотні точок присутності по всьому світу — практично неможлива задача.

Рівень 2: Rate limiting на рівні Nginx/застосунку Обмеження числа запитів з одного IP.

Рівень 3: Аналіз та блокування аномального трафіку Поведінкові паттерни, IP-репутація, Challenge (CAPTCHA/JS-вызив) для підозрілого трафіку.

Cloudflare — базова настройка

Cloudflare Free/Pro закриває більшість L3/L4 атак автоматично. Для L7:

Security > DDoS > HTTP DDoS attack protection:
- Sensitivity: High
- Action: Block (після тестування, почати з Log)

Security > Settings:
- Security Level: Medium або High при атаці
- Bot Fight Mode: ON
- Browser Integrity Check: ON

При активній атаці: Security > Under Attack Mode — усі відвідувачі проходять JS-вызив.

Rate Limiting в Nginx

# Зони ограничення — в http блоці
limit_req_zone $binary_remote_addr zone=api:10m rate=30r/m;
limit_req_zone $binary_remote_addr zone=login:10m rate=5r/m;
limit_conn_zone $binary_remote_addr zone=perip:10m;

server {
    # API — 30 запитів на хвилину
    location /api/ {
        limit_req zone=api burst=10 nodelay;
        limit_req_status 429;
    }

    # Форма входу — 5 спроб на хвилину
    location /login {
        limit_req zone=login burst=3 nodelay;
        limit_req_status 429;
    }

    # Максимум 20 одночасних з'єднань з одного IP
    limit_conn perip 20;
}

Rate Limiting в застосунку (Laravel)

// routes/api.php
Route::middleware('throttle:60,1')->group(function () {
    Route::get('/data', [DataController::class, 'index']);
});

// Кастомні ліміти з різними правилами для авторизованих
Route::middleware('throttle:api')->group(function () { ... });

// config/app.php або RouteServiceProvider
RateLimiter::for('api', function (Request $request) {
    return $request->user()
        ? Limit::perMinute(120)->by($request->user()->id)
        : Limit::perMinute(30)->by($request->ip());
});

SYN Flood на рівні ядра Linux

# /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 3

# Застосувати
sysctl -p

Firewall: обмеження з'єднань через iptables/nftables

# Обмежити нові TCP-з'єднання: не більше 20 за секунду з одного IP
iptables -A INPUT -p tcp --dport 80 -m state --state NEW \
  -m recent --set --name HTTP_FLOOD

iptables -A INPUT -p tcp --dport 80 -m state --state NEW \
  -m recent --update --seconds 10 --hitcount 200 \
  --name HTTP_FLOOD -j DROP

Fail2ban для HTTP flood

# /etc/fail2ban/filter.d/nginx-req-limit.conf
[Definition]
failregex = limiting requests, excess:.* by zone.*client: <HOST>

# /etc/fail2ban/jail.d/nginx.conf
[nginx-req-limit]
enabled = true
filter = nginx-req-limit
logpath = /var/log/nginx/error.log
maxretry = 10
findtime = 60
bantime = 600

Геоблокировка

При атаці з певних регіонів — тимчасова блокування через Cloudflare або GeoIP у Nginx:

# MaxMind GeoIP2
geoip2 /usr/share/GeoIP/GeoLite2-Country.mmdb {
    $geoip2_country_code country iso_code;
}

map $geoip2_country_code $blocked_country {
    default 0;
    CN 1;
    RU 0; # Неможливо блокувати власну аудиторію
}

if ($blocked_country = 1) { return 403; }

Моніторинг та алерти

Інструменти спостереження за аномальним трафіком:

  • Grafana + Prometheus — дашборди RPS, 4xx/5xx, latency
  • GoAccess — real-time аналіз Nginx-логів
  • Cloudflare Analytics — статистика по заблокованим запитам
  • Алерт при перевищенні 90-го перцентиля RPS — сигнал до активації посиленого режиму.

Строк реалізації

  • Підключення Cloudflare + базові правила: 1 день
  • Настройка rate limiting Nginx + Fail2ban: 1 день
  • Настройка мониторингу: 1–2 дня