Как защитить VPS от DDoS-атак: практическое руководство
Комплексное руководство по защите вашего VPS от DDoS-атак с использованием брандмауэров, rate limiting и других проверенных методов.

DDoS-атаки (Distributed Denial of Service) могут вывести ваш сервер из строя за считанные минуты, приводя к потере доходов, клиентов и репутации. В 2026 году такие атаки стали более изощренными и доступными. К счастью, современные методы защиты также эволюционировали. В этом руководстве мы покажем, как защитить ваш VPS от Hiddence от наиболее распространенных типов DDoS-атак.
Что такое DDoS-атака?
DDoS-атака происходит, когда множество компьютеров (ботнет) одновременно отправляют запросы на ваш сервер, перегружая его ресурсы и делая его недоступным для легитимных пользователей.
Основные типы DDoS-атак
- Volumetric Attacks (L3/L4): Флуд UDP, ICMP, SYN flood — перегружают сетевой канал
- Application Layer Attacks (L7): HTTP flood, Slowloris — атаки на уровне приложений
- Protocol Attacks: Эксплуатация уязвимостей в сетевых протоколах
Встроенная защита Hiddence
Все VPS от Hiddence включают базовую защиту от DDoS уровня 3-4 (сетевой уровень). Это фильтрует большинство volumetric-атак автоматически. Однако для атак уровня L7 (приложения) требуется дополнительная конфигурация.
Шаг 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-соединений (защита от брутфорса)
sudo ufw limit 22/tcp
# Блокировать ICMP ping floods
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 flood
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, настройте rate limiting для защиты от HTTP flood атак.
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 записи у регистратора
- Включите режим 'Proxy' (оранжевое облако) для DNS записей
- Настройте SSL mode на 'Full (strict)' в разделе SSL/TLS
- Включите 'DDoS Protection' и 'Bot Fight Mode' в настройках безопасности
Шаг 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 ATTACKING_IP
- Блокировка целых подсетей: sudo ufw deny from 123.45.0.0/16
- Ограничение rate limit: Временно снизьте лимиты в Nginx до 1-5 req/s
- Контакт с поддержкой: Свяжитесь с поддержкой Hiddence для активации расширенной защиты
- Включите 'Under Attack Mode' в Cloudflare (если используете)
Лучшие практики
- Никогда не публикуйте реальный IP вашего сервера, если используете CDN
- Регулярно обновляйте систему: sudo apt update && sudo apt upgrade
- Используйте SSH-ключи вместо паролей для доступа к серверу
- Измените стандартный SSH порт (22) на нестандартный
- Настройте автоматические бэкапы для быстрого восстановления
- Используйте отдельные IP для критичных сервисов
- Включите логирование и регулярно проверяйте логи на подозрительную активность
- Рассмотрите использование географической блокировки, если ваш сервис не глобальный