Безопасность сервера — это не разовая операция, а набор привычек, но фундамент закладывается в первый день. Новый VPS начинают сканировать боты уже через час после выдачи IP: в логах появляются тысячи попыток подбора пароля root. Хорошая новость в том, что защита VPS от 95% типовых атак — это 15 понятных действий, большинство из которых занимает пару минут. Ниже — практический чек-лист безопасности VPS с готовыми командами для Ubuntu 24.04 LTS: сохраните его и проходите сверху вниз на каждом новом сервере.
Базовая гигиена: пункты 1–4
1. Обновите систему сразу после создания сервера
Образ ОС у хостера почти всегда отстаёт от актуального состояния на недели. Первым делом:
sudo apt update && sudo apt full-upgrade -y
sudo reboot
2. Создайте пользователя с sudo и не работайте под root
Работа под root превращает любую опечатку и любой утёкший пароль в катастрофу. Создайте обычного пользователя:
sudo adduser admin
sudo usermod -aG sudo admin
Подробности и подводные камни — в статье о работе не под root и создании пользователя с sudo.
3. Настройте вход по SSH-ключам
Ключ Ed25519 невозможно подобрать перебором, в отличие от пароля. На своём компьютере:
ssh-keygen -t ed25519 -C "admin@example.com"
ssh-copy-id admin@203.0.113.10
Пошаговая настройка со всеми нюансами для Windows и macOS — в материале про SSH-ключи вместо пароля.
4. Запретите вход root и аутентификацию по паролю
Убедившись, что вход по ключу работает, отключите опасные способы входа. В Ubuntu 24.04 удобно положить настройки отдельным файлом:
sudo tee /etc/ssh/sshd_config.d/90-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
MaxAuthTries 3
EOF
sudo systemctl restart ssh
Не закрывайте текущую SSH-сессию, пока не проверите вход по ключу из нового окна терминала.
Сетевой периметр: пункты 5–8
5. Включите файрвол UFW
Правило простое: закрыто всё, кроме того, что нужно наружу.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
Разбор правил, лимитов и типичных ошибок — в статье о настройке файрвола UFW на Ubuntu.
6. Поставьте Fail2ban против перебора паролей
Fail2ban читает логи и автоматически банит IP после нескольких неудачных попыток входа:
sudo apt install -y fail2ban
sudo tee /etc/fail2ban/jail.local <<'EOF'
[sshd]
enabled = true
maxretry = 5
findtime = 10m
bantime = 1h
EOF
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
7. Смените SSH-порт (опционально, для тишины в логах)
Это не защита, а фильтр шума: простые боты долбятся только в порт 22. Если решите менять — сначала откройте новый порт в UFW, затем правьте конфиг, и только потом закрывайте старый. Полная инструкция — в статье про смену SSH-порта.
8. Закройте наружу всё лишнее
Посмотрите, какие порты реально слушает сервер:
sudo ss -tulpn
База данных, Redis, панели администрирования не должны быть доступны из интернета. Привяжите их к локальному интерфейсу: для MySQL это bind-address = 127.0.0.1 в конфиге, для Redis — bind 127.0.0.1. Наружу смотрят только SSH и веб-сервер.
Поддержание защиты: пункты 9–12
9. Включите автоматические обновления безопасности
Уязвимости в OpenSSH, OpenSSL или ядре закрываются патчами, и ставить их нужно быстрее, чем боты начнут их эксплуатировать:
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
Как тонко настроить пакет, исключения и автоперезагрузку — в отдельном руководстве по unattended-upgrades.
10. Настройте HTTPS для всех сайтов
Трафик без TLS читается на любом промежуточном узле. Бесплатный сертификат Let's Encrypt ставится одной командой (sudo certbot --nginx) и продлевается автоматически.
11. Организуйте резервное копирование
Бэкап — это страховка не только от взлома, но и от собственных ошибок. Минимум: ежедневный дамп базы и архив файлов с выгрузкой на другой сервер или в объектное хранилище по схеме 3-2-1 (три копии, два типа носителей, одна вне сервера). Стратегия целиком разобрана в статье о резервном копировании VPS. Важно: бэкап, лежащий только на самом сервере, при взломе или сбое погибнет вместе с ним.
12. Следите за логами и состоянием сервера
Раз в неделю заглядывайте в журналы — это занимает пять минут:
# Неудачные попытки входа:
sudo journalctl -u ssh --since "1 week ago" | grep -i "failed\|invalid" | tail -n 20
# Кто сейчас в системе и кто заходил:
who
last -n 10
# Забаненные Fail2ban адреса:
sudo fail2ban-client status sshd
Для постоянного наблюдения удобны netdata или связка Grafana + Prometheus с уведомлениями в Telegram.
Продвинутый уровень: пункты 13–15
13. Проверьте права доступа к файлам сайтов
Веб-приложение не должно иметь права писать туда, куда не нужно. Классика для сайтов под Nginx/PHP-FPM:
sudo chown -R www-data:www-data /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} \;
sudo find /var/www/example.com -type f -exec chmod 644 {} \;
Секреты (пароли БД, API-ключи) храните вне публичных каталогов и не коммитьте в git.
14. Проведите аудит утилитой Lynis
Lynis сканирует систему и выдаёт список слабых мест с рекомендациями:
sudo apt install -y lynis
sudo lynis audit system
Индекс выше 70 — хороший результат для боевого сервера. Пройдитесь по разделу «Suggestions» и закройте то, что применимо к вашим задачам.
15. Задокументируйте и повторяйте
Запишите, что настроено: порты, пользователи, расписание бэкапов, где лежат конфиги. Раз в квартал повторяйте аудит: обновления, ревизия пользователей и ключей в ~/.ssh/authorized_keys, проверка восстановления из бэкапа. Безопасность сервера деградирует сама собой, если её не поддерживать.
Сводная таблица чек-листа
| № | Пункт | Время | Приоритет |
|---|---|---|---|
| 1 | Обновление системы | 5 мин | Критично |
| 2 | Пользователь с sudo | 3 мин | Критично |
| 3 | SSH-ключи | 5 мин | Критично |
| 4 | Запрет root и паролей в SSH | 5 мин | Критично |
| 5 | Файрвол UFW | 5 мин | Критично |
| 6 | Fail2ban | 10 мин | Высокий |
| 7 | Смена SSH-порта | 10 мин | Опционально |
| 8 | Закрыть лишние порты | 15 мин | Высокий |
| 9 | Автообновления безопасности | 10 мин | Высокий |
| 10 | HTTPS везде | 15 мин | Высокий |
| 11 | Бэкапы 3-2-1 | 1–2 ч | Критично |
| 12 | Логи и мониторинг | 30 мин | Средний |
| 13 | Права на файлы | 15 мин | Средний |
| 14 | Аудит Lynis | 30 мин | Средний |
| 15 | Документация и регулярность | постоянно | Средний |
Что закрывает хостер, а что — вы
Зона ответственности делится честно. Хостер отвечает за физическую безопасность, гипервизор и сеть: например, на VPS-тарифах Cheap-Host уже включена базовая DDoS-защита L3/L4, а KVM-виртуализация гарантирует, что соседние серверы изолированы от вашего и ресурсы выделены только вам. Всё, что внутри системы — пароли, порты, обновления, приложения, — территория администратора, то есть ваша. Ни один хостинг не защитит сервер, на котором root входит по паролю «123456».
Отдельный практический момент: полный root-доступ на KVM означает, что вы можете (и должны) настраивать файрвол, ядро и любые политики безопасности без ограничений со стороны платформы виртуализации.
FAQ
Сколько времени нужно на базовую защиту VPS?
Первые восемь-девять пунктов — 30–60 минут даже без опыта. Их стоит выполнить в первый день жизни сервера, до установки сайтов и приложений.
Правда ли, что новый сервер атакуют сразу после создания?
Да. Боты непрерывно сканируют весь диапазон IPv4, и первые попытки подбора пароля по SSH обычно появляются в логах в течение часа после запуска.
Достаточно ли сменить SSH-порт?
Нет. Это лишь снижает шум от примитивных ботов. Реальную защиту дают ключи, запрет парольного входа и Fail2ban; смена порта — дополнение, а не замена.
Нужен ли антивирус на Linux VPS?
Обычно нет. Основные угрозы — перебор паролей, устаревшее ПО и дырявые веб-приложения; их закрывают пункты этого чек-листа. Для периодического аудита достаточно lynis и rkhunter.
Защищает ли DDoS-защита хостера от взлома?
Нет, это разные вещи. Фильтрация L3/L4 отражает объёмные сетевые атаки, но не мешает подбору пароля или эксплуатации уязвимости приложения — это закрывается настройкой самой системы.
Вывод
Защита VPS — это не паранойя и не магия, а последовательность из 15 конкретных шагов: обновления, ключи, файрвол, Fail2ban, автообновления, бэкапы и регулярный аудит. Критичные пункты закрываются за один вечер, а дальше система почти обслуживает себя сама. Начните сверху списка и не останавливайтесь до пункта 11 — бэкапы обязательны.
Если вы подбираете сервер под проект, где безопасность и стабильность важны, — у Cheap-Host тариф Pro за 750 ₽/мес: 12 vCPU, 16 ГБ RAM, 128 ГБ NVMe, KVM с полным root, DDoS-защита L3/L4 и uptime 99,9%. Сервер выдаётся за 45–60 секунд — весь этот чек-лист можно пройти сегодня же. Подробности — на cheap-host.onl.