Безопасность VPS: чек-лист из 15 пунктов

Настройка сервера
Безопасность VPS: чек-лист из 15 пунктов

Безопасность сервера — это не разовая операция, а набор привычек, но фундамент закладывается в первый день. Новый 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Пользователь с sudo3 минКритично
3SSH-ключи5 минКритично
4Запрет root и паролей в SSH5 минКритично
5Файрвол UFW5 минКритично
6Fail2ban10 минВысокий
7Смена SSH-порта10 минОпционально
8Закрыть лишние порты15 минВысокий
9Автообновления безопасности10 минВысокий
10HTTPS везде15 минВысокий
11Бэкапы 3-2-11–2 чКритично
12Логи и мониторинг30 минСредний
13Права на файлы15 минСредний
14Аудит Lynis30 минСредний
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.

Читайте также