Как защитить VPS от DDoS-атак
Распределённая атака типа «отказ в обслуживании» (DDoS) заливает сервер или его сетевое подключение трафиком, пока реальные посетители не могут до него достучаться. Некоторые атаки слишком велики для самого сервера, поэтому защита эффективнее всего строится в несколько уровней: сначала фильтрация на периферии сети, затем настройки файрвола и приложений на VPS. ONIE защищает облачные серверы в Хошимине с DDoS Shield на периферии сети без дополнительной платы, а вы можете развернуть VPS с защитой от DDoS за несколько минут.
Типы атак
- Объёмные (уровни 3 и 4): потоки пакетов, которые заполняют канал связи, например UDP-флуд.
- Протокольные атаки: злоупотребление обработкой соединений, например SYN-флуд, который заполняет таблицу соединений.
- Атаки на прикладном уровне (уровень 7): большое количество внешне корректных HTTP-запросов, которые исчерпывают ресурсы веб-сервера или базы данных.
Для каждого типа нужна своя защита. Объёмный трафик нужно остановить до того, как он дойдёт до сервера, а волны запросов на прикладном уровне можно снизить на самом сервере.
1. Фильтруйте трафик на периферии сети
Фильтрация на периферии отбрасывает вредоносный трафик до того, как он дойдёт до VPS, поэтому канал не перегружается. В DDoS Shield фильтрация выполняется на периферии сети с помощью XDP/eBPF, а консоль показывает трафик и события атак для каждого IP-адреса. Уточняйте у любого провайдера, который вы рассматриваете, что входит в услугу, где выполняется фильтрация и взимается ли за неё отдельная плата.
2. Закройте то, что не используете
sudo ufw default deny incoming
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enableНе открывайте базы данных и панели администрирования в интернет. Привяжите их к 127.0.0.1 или к приватной сети.
3. Настройте ядро для защиты от SYN-флуда
SYN cookies включены по умолчанию в большинстве дистрибутивов. Проверьте:
sysctl net.ipv4.tcp_syncookiesВносите остальные изменения в ядро осторожно и обязательно тестируйте их, поскольку неверные значения могут ухудшить работу обычного трафика.
4. Ограничьте частоту запросов в Nginx
В блоке http:
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=connperip:10m;В блоке server или location:
limit_req zone=perip burst=20 nodelay;
limit_conn connperip 20;Перезагрузите конфигурацию командой sudo nginx -t && sudo systemctl reload nginx. Отдавайте статические файлы из кэша и используйте плагин кэширования в WordPress, чтобы снизить нагрузку от каждого запроса. См. установка WordPress с Nginx.
5. Следите за трафиком
ss -s
sudo ss -ntu state established | wc -l
sudo apt install -y nload && nloadРезкий рост числа соединений или полосы пропускания, а также медленная работа сервера при низкой загрузке процессора могут указывать на атаку. Настройте оповещения, чтобы заметить проблему на раннем этапе.
6. Чек-лист при инциденте
- Проверьте в консоли, является ли это атакой или реальным всплеском трафика.
- Посмотрите события атаки и атакуемый IP-адрес.
- Заблокируйте вредоносные исходные адреса или диапазоны, которые удалось определить.
- Включите более строгие лимиты запросов или страницу технического обслуживания.
- Сообщите в службу поддержки провайдера время и IP-адрес.
- После инцидента проанализируйте логи и обновите этот план. Поддерживайте резервные копии и снапшоты в актуальном состоянии.
Часто задаваемые вопросы
Может ли файрвол на VPS остановить крупную DDoS-атаку?
Сам по себе — нет. Если трафик заполняет канал связи, сервер не может его отфильтровать. Фильтрация должна выполняться выше по сети, до сервера.
Помогает ли CDN?
Для веб-сайтов CDN или обратный прокси могут принять на себя веб-трафик, но только при условии, что реальный IP-адрес сервера не раскрыт в DNS или в заголовках писем.
Нужен ли особый тариф для защиты от DDoS?
Это зависит от провайдера. Проверьте, что входит в ваш тариф и в выбранную локацию.