Як захистити ваш VPS від DDoS атак: практичний посібник
Комплексний посібник з захисту вашого VPS від DDoS атак за допомогою брандмауерів, обмеження швидкості та інших перевірених методів.

DDoS атаки (розподілена відмова в обслуговуванні) можуть вивести ваш сервер з ладу за хвилини, що призводить до втрати доходів, незадоволення клієнтів та пошкодження репутації. У 2026 році такі атаки стали більш складними та доступними. На щастя, сучасні методи захисту також розвинулися. Цей посібник покаже вам, як захистити ваш VPS Hiddence від найпоширеніших типів DDoS атак.
Що таке DDoS атака?
DDoS атака відбувається, коли кілька комп'ютерів (ботнет) одночасно надсилають запити на ваш сервер, перевантажуючи його ресурси та роблячи його недоступним для законних користувачів.
Основні типи DDoS атак
- Об'ємні атаки (L3/L4): UDP флуд, ICMP, SYN флуд — перевантажують пропускну здатність мережі
- Атаки на рівні додатків (L7): HTTP флуд, Slowloris — націлені на рівень додатків
- Протокольні атаки: використовують вразливості в мережевих протоколах
Вбудований захист Hiddence
Усі VPS Hiddence включають базовий захист від DDoS рівня 3-4 (мережевий рівень). Це автоматично фільтрує більшість об'ємних атак. Однак атаки рівня 7 (додатки) потребують додаткової конфігурації.
Крок 1: Налаштування брандмауера
Перша лінія захисту — правильна конфігурація брандмауера. UFW (Uncomplicated Firewall) — простий та ефективний інструмент для Ubuntu/Debian.
# Встановіть UFW
sudo apt update && sudo apt install ufw -y
# Дозвольте SSH (ВАЖЛИВО! Зробіть це перед увімкненням UFW)
sudo ufw allow 22/tcp
# Дозвольте HTTP та HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Увімкніть UFW
sudo ufw enable
# Перевірте статус
sudo ufw status verbose
# Розширені правила захисту:
# Обмежте SSH з'єднання (захист від brute force)
sudo ufw limit 22/tcp
# Блокуйте ICMP пінгові флуди
sudo nano /etc/ufw/before.rules
# Додайте після *filter:
-A ufw-before-input -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
# Захист від SYN флуду
sudo nano /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 = 5
# Застосуйте зміни
sudo sysctl -pКрок 2: Встановіть Fail2Ban
Fail2Ban автоматично блокує IP-адреси, які демонструють підозрілу активність (кілька невдалих спроб входу, сканування портів).
# Встановіть
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Конфігурація для захисту SSH та HTTP
# Створіть локальну конфігурацію
sudo nano /etc/fail2ban/jail.local
# Додайте:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
banaction = ufw
[sshd]
enabled = true
port = 22
logpath = /var/log/auth.log
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
port = http,https
logpath = /var/log/nginx/error.log
# Перезапустіть Fail2Ban
sudo systemctl restart fail2ban
# Перевірте статус
sudo fail2ban-client statusКрок 3: Захист Nginx
Якщо ви використовуєте Nginx, налаштуйте обмеження швидкості для захисту від HTTP флуд атак.
sudo nano /etc/nginx/nginx.conf
# Додайте до блоку http:
http {
# Обмеження запитів: 10 запитів на секунду на IP
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
# Обмеження з'єднань
limit_conn_zone $binary_remote_addr zone=addr:10m;
# Захист від Slowloris
client_body_timeout 10s;
client_header_timeout 10s;
keepalive_timeout 5s 5s;
send_timeout 10s;
# Решта конфігурації...
}
# У блоці server додайте:
server {
location / {
# Застосуйте обмеження запитів
limit_req zone=one burst=20 nodelay;
# Обмеження з'єднань: максимум 10 на IP
limit_conn addr 10;
# Ваша конфігурація...
}
}
# Протестуйте конфігурацію та перезавантажте
sudo nginx -t
sudo systemctl reload nginxКрок 4: Використовуйте CDN
Для максимального захисту використовуйте CDN сервіс, такий як Cloudflare. CDN діє як проксі, приховуючи реальну IP-адресу вашого сервера та поглинаючи більшість DDoS атак. Переваги: приховати реальну IP, автоматичне фільтрування шкідливого трафіку, розподіл навантаження, безкоштовний SSL/TLS, WAF для захисту L7.
- Зареєструйтеся на cloudflare.com (доступний безкоштовний план)
- Додайте ваш домен та змініть NS записи у вашого реєстратора
- Увімкніть режим 'Проксі' (помаранчева хмара) для DNS записів
- Встановіть режим SSL на 'Повний (строгий)' у розділі SSL/TLS
- Увімкніть 'Захист від DDoS' та 'Режим боротьби з ботами' у налаштуваннях безпеки
Крок 5: Моніторинг
Регулярний моніторинг допомагає виявити атаки рано.
# Моніторте активні з'єднання
watch -n 1 'ss -s'
# Перегляньте топ IP за кількістю з'єднань
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# Переглядайте журнали в реальному часі
sudo tail -f /var/log/nginx/access.log
sudo journalctl -u nginx -f
# Перевірте заблоковані IP у Fail2Ban
sudo fail2ban-client status sshdЕкстрені заходи
Якщо атака вже триває, вжийте наступні заходи:
- Визначте джерело: Використовуйте 'netstat' або журнали для визначення IP-адрес атакуючих
- Тимчасове блокування: sudo ufw insert 1 deny from АТАКУЮЧА_IP
- Блокуйте цілі підмережі: sudo ufw deny from 123.45.0.0/16
- Обмежте обмеження швидкості: Тимчасово знизьте обмеження Nginx до 1-5 запитів/с
- Зв'яжіться з підтримкою: Зверніться до підтримки Hiddence для активації розширеного захисту
- Увімкніть 'Режим під атакою' у Cloudflare (якщо використовуєте)
Найкращі практики
- Ніколи не публікуйте реальну IP-адресу вашого сервера, якщо використовуєте CDN
- Регулярно оновлюйте систему: sudo apt update && sudo apt upgrade
- Використовуйте SSH ключі замість паролів для доступу до сервера
- Змініть стандартний SSH порт (22) на нестандартний
- Налаштуйте автоматичні резервні копії для швидкого відновлення
- Використовуйте окремі IP для критичних служб
- Увімкніть журналювання та регулярно перевіряйте журнали на підозрілу активність
- Розгляньте використання географічного блокування, якщо ваш сервіс не глобальний