Настройка защиты от DDoS-атак для сайта

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

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка защиты от DDoS-атак для сайта
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Настройка защиты от 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 дня