До основного вмісту

DDoS-захист виділеного сервера: рівні L3, L4 і L7

Виділені сервери · 24.09.2026
Ілюстрація до статті «DDoS-захист виділеного сервера: рівні L3, L4 і L7»

DDoS-захист виділеного сервера: L3, L4, L7

Захист від DDoS працює на трьох рівнях. L3 і L4 фільтрують пакетне сміття — UDP-флуд, відбиті відповіді, SYN-флуд — і робиться це на боці мережі провайдера, до вашого порту. L7 розбирає вже встановлені HTTP-запити й відсікає тих, хто імітує браузер. Перші два рівні рятують канал, третій — застосунок, і замінити один одним не вийде.

  • На майданчиках у Німеччині та США працює фільтрація L3/L4; на тарифах Pro і вище додається L7.
  • У Франції стоїть Anti-DDoS Arbor — він знімає об'ємні атаки на рівні мережі.
  • Сервер не може захистити себе від об'ємної атаки сам: якщо канал забитий, ваші правила вже не допоможуть.

Чим відрізняються рівні

РівеньТипові атакиДе фільтруєтьсяЩо ламається без захисту
L3 (мережа)ICMP-флуд, IP-фрагменти, відбиття через відкриті сервісиМережа провайдера, до порту сервераКанал забитий, сервер недоступний цілком
L4 (транспорт)SYN-флуд, ACK-флуд, UDP-флуд, amplificationМережа провайдера плюс ядро сервераПереповнення таблиці з'єднань, відмова в нових сесіях
L7 (застосунок)HTTP-флуд, повільні запити, перебір важких сторінокReverse proxy, WAF, сам застосунокПроцесор і база йдуть у полицю за скромного трафіку

Різниця в цифрах: об'ємна L3/L4-атака вимірюється в гігабітах і мільйонах пакетів за секунду, а L7-атаці вистачає 3–5 тисяч запитів за секунду, щоб покласти сайт на динаміці. Як співвідносяться швидкість порту й реальне навантаження, розібрано в статті про канал сервера й ліміти трафіку.

Що включено на майданчиках ZevsHost

ЛокаціяБазовий захистL7
Німеччина (Дюссельдорф)L3/L4На Dedicated Pro DE і вище
СШАL3/L4На Dedicated Pro US та Enterprise US
Франція (Страсбург)Anti-DDoS ArborФільтрація на рівні мережі

Базовий рівень L3/L4 є на всіх тарифах, включно з Dedicated Start DE за $49 і Dedicated Start US за $59. Розбір конфігурацій за тарифами — на сторінці виділених серверів.

Як відрізнити атаку від напливу відвідувачів

Наплив дає зростання запитів за нормального розподілу адрес, реферерів і кодів відповіді. Атака майже завжди видна перекосом: один URL, один User-Agent, однакова довжина запиту або тисячі напіввідкритих з'єднань.

# розподіл з'єднань за станами: багато SYN-RECV — це SYN-флуд
ss -ant | awk '{print $1}' | sort | uniq -c | sort -rn

# топ-20 адрес за кількістю з'єднань
ss -ant | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20

# пакети й байти за секунду по інтерфейсу
sar -n DEV 1 5
ip -s link show eth0

Повний набір інструментів для розбору мережевих проблем описано в статті про діагностику мережі в Linux.

Що налаштувати на своєму боці

Ядро: стійкість до SYN-флуду

cat << 'EOF' > /etc/sysctl.d/90-antiddos.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
net.core.somaxconn = 8192
net.netfilter.nf_conntrack_max = 524288
EOF

sysctl --system
sysctl net.ipv4.tcp_syncookies net.core.somaxconn

Пакетні ліміти

# nftables: обмежити темп нових SYN і кількість з'єднань з адреси
nft add table inet ddos
nft add chain inet ddos input '{ type filter hook input priority -10 ; policy accept ; }'
nft add rule inet ddos input tcp flags syn limit rate over 2000/second drop
nft add rule inet ddos input tcp dport 443 ct state new meter conns '{ ip saddr limit rate over 50/second }' drop

Застосунок: ліміти в nginx

# у http-секції
limit_req_zone $binary_remote_addr zone=perip:20m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=connperip:20m;

# у server-секції
limit_req zone=perip burst=30 nodelay;
limit_conn connperip 20;
limit_req_status 429;

# перевірка конфігу й перечитування без обриву з'єднань
nginx -t && systemctl reload nginx

Не блокуйте атаку за країнами й великими підмережами на живому сервері. За одним /16 часто стоїть мобільний оператор або хмарний провайдер, через якого до вас ідуть звичайні клієнти, платіжні вебхуки й перевірки моніторингу. Блокування такого блоку виглядає як «атака припинилася», а насправді ви відрізали частину виручки й не побачите цього в логах, бо запити до вебсервера вже не доходять. Правильний порядок: спершу ліміт за темпом (limit_req, limit rate), потім точковий бан за конкретними адресами, і лише потім — широкі блоки, на час і з записом у календарі. Перевірка, що ви не відрізали своїх: частка відповідей 429 і 403 в лозі не вища за кілька відсотків, а curl із зовнішньої точки в кожній цільовій країні віддає 200.

Коли потрібен зовнішній шар

Якщо атака йде по HTTP і ваші ліміти вже ріжуть живих користувачів, навантаження виносять на зовнішній фільтр: він приймає трафік на себе, а до сервера йдуть лише перевірені запити. Налаштування такої схеми розібрано в статті про захист від DDoS через Cloudflare.

При цьому походження сервера має бути закрите: якщо реальна IP відома, атака піде повз фільтр навпростець. Закривайте порти 80 і 443 для всіх джерел, крім мереж фільтра, і не лишайте стару адресу в DNS-записах піддоменів, у заголовках пошти та в SSL-сертифікатах, випущених на пряму IP.

Коротко

  • L3/L4 рятують канал і фільтруються в мережі провайдера; L7 рятує застосунок і налаштовується у вас.
  • У Німеччині та США працює L3/L4, на Pro і вище додається L7; у Франції — Anti-DDoS Arbor.
  • Увімкніть tcp_syncookies, ліміти за темпом у nftables і limit_req у nginx до інциденту, а не під час.
  • Блокування за великими підмережами — крайній захід: вони мовчки ріжуть справжніх клієнтів.
← Назад до бази знань Поставити питання підтримці