Назад к блогу
19 января 2026Руководства

Как защитить VPS от DDoS-атак: практическое руководство

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

Как защитить VPS от DDoS-атак: практическое руководство

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.

bash
# Установка 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-адреса, проявляющие подозрительную активность (множественные неудачные попытки входа, сканирование портов).

bash
# Установка
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 атак.

bash
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: Мониторинг

Регулярный мониторинг помогает обнаружить атаку на ранней стадии.

bash
# Мониторинг активных соединений
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 для критичных сервисов
  • Включите логирование и регулярно проверяйте логи на подозрительную активность
  • Рассмотрите использование географической блокировки, если ваш сервис не глобальный