Полная настройка VPS сервера на Ubuntu 22.04 и 24.04: безопасность, сетевой экран и Docker
При аренде нового сервера провайдер присылает публичный IP-адрес и пароль суперпользователя root. На этом этапе многие сразу начинают разворачивать проекты, не меняя стандартных параметров. В журнале /var/log/auth.log можно увидеть, что ботнеты начинают перебирать пароли по порту 22 уже через несколько минут после появления сервера в сети. Оставлять систему в исходном виде рискованно.
В этом руководстве мы делимся практическим регламентом нашей команды: как выполняется базовая настройка vps сервера, как закрыть периметр от внешних сканеров и подготовить виртуальный сервер linux к надежной работе. Инструкция одинаково подходит для актуальных релизов vps ubuntu 22.04 и vps ubuntu 24.04.
1. Первое подключение и создание рабочей учетной записи
Для тех, кто впервые разбирается, как подключиться к vps, потребуется любой терминал с клиентом OpenSSH (в Linux и macOS он встроен по умолчанию, в Windows используется PowerShell или Windows Terminal).
Выполняем первичное подключение к vps серверу под учетной записью root:
ssh root@185.120.45.10
Постоянно работать под root в рабочей системе нельзя: любая ошибка в команде или уязвимость в скрипте может нарушить работу всей операционной системы. Поэтому грамотная настройка сервера с нуля начинается с создания непривилегированного пользователя с правами sudo:
# Создаем пользователя deployer с домашней директорией
adduser deployer
# Добавляем его в административную группу sudo
usermod -aG sudo deployer
Откройте вторую вкладку терминала и проверьте доступ под новым пользователем: ssh deployer@185.120.45.10. После входа проверьте команду sudo whoami — она должна вернуть root.
2. Переход на криптографические ключи Ed25519 в SSH
Пароли уязвимы перед перебором по словарям. Профессиональная настройка ssh на vps строится на использовании асимметричных ключей Ed25519. Они работают быстрее устаревшего RSA и обеспечивают высокую криптостойкость при компактном размере (256 бит).
Сгенерируйте пару ключей на своем локальном рабочем компьютере:
ssh-keygen -t ed25519 -C "admin-workstation"
Скопируйте открытый ключ на сервер:
ssh-copy-id -i ~/.ssh/id_ed25519.pub deployer@185.120.45.10
Убедитесь, что вход по ключу работает без запроса пароля. Теперь переходим к редактированию конфигурации службы OpenSSH. В Ubuntu 22.04 и 24.04 параметры изоляции удобно выносить в отдельный файл:
sudo nano /etc/ssh/sshd_config.d/99-security.conf
Внесите следующие параметры:
# Запрещаем прямой вход под учетной записью root
PermitRootLogin no
# Полностью отключаем парольную авторизацию
PasswordAuthentication no
PubkeyAuthentication yes
# Ограничиваем число попыток авторизации за сессию
MaxAuthTries 3
# Отключаем пересылку графического интерфейса
X11Forwarding no
# Настраиваем проверку активности клиентской сессии
ClientAliveInterval 300
ClientAliveCountMax 2
Обязательно проверьте конфигурацию на синтаксические ошибки командой sudo sshd -t. Если вывод пустой, перезапустите демон: sudo systemctl restart ssh. Не закрывайте текущую сессию, пока не проверите вход в новом окне.
3. Настройка фаервола UFW и автоматическая блокировка атак с Fail2ban
Сетевая защита vps сервера строится по принципу белого списка: блокировать все входящие пакеты, кроме явно разрешенных портов. Для этого применяется штатная ufw настройка на vps:
# Политики по умолчанию
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Разрешаем порт SSH
sudo ufw allow 22/tcp comment 'SSH Port'
# Разрешаем стандартные веб-порты для сайтов
sudo ufw allow 80/tcp comment 'HTTP Web'
sudo ufw allow 443/tcp comment 'HTTPS TLS'
# Включаем сетевой экран
sudo ufw enable
Проверьте активные правила: sudo ufw status verbose. Теперь безопасность vps находится на надежном уровне: случайные порты баз данных (PostgreSQL, Redis, MySQL) не будут доступны из внешней сети.
Для автоматического бана ботов, перебирающих порты, установим Fail2ban:
sudo apt update && sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo systemctl enable --now fail2ban
Сервис будет автоматически блокировать IP-адреса, превысившие 5 неудачных попыток входа, на уровне правил iptables.
4. Оптимизация диска NVMe, файла подкачки и сетевого стека ядра
При интенсивных нагрузках базовая настройка vps ubuntu требует оптимизации параметров подкачки и работы сетевых буферов:
# Создаем файл подкачки swap размером 2 ГБ
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Добавляем в fstab для автоматического монтирования
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
По умолчанию параметр swappiness равен 60, из-за чего ядро начинает сбрасывать данные на диск слишком рано. На скоростных дисках NVMe оптимально снизить это значение до 10. Создадим файл параметров ядра:
sudo nano /etc/sysctl.d/99-performance.conf
Вставьте настройки:
# Снижаем интенсивность сброса страниц в swap
vm.swappiness = 10
vm.vfs_cache_pressure = 50
# Включаем современный алгоритм контроля перегрузок TCP BBR
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
# Увеличиваем размер очередей соединений
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096
Примените изменения: sudo sysctl --system.
5. Контейнеризация: установка Docker и Docker Compose
Современный vps для разработчика ориентирован на микросервисную архитектуру и контейнеры. Корректная установка docker на vps ubuntu выполняется из официального репозитория Docker:
# Удаляем устаревшие дистрибутивные пакеты
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove -y $pkg; done
# Добавляем официальные ключи репозитория
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Подключаем репозиторий
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Устанавливаем Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Разрешаем пользователю deployer запускать контейнеры без sudo
sudo usermod -aG docker deployer
Теперь docker на vps полностью готов к работе. Проверьте запуск тестового контейнера: docker run --rm hello-world.
Чек-лист: как настроить vps по стандартам надежности
После выполнения этих шагов комплексная настройка vps считается завершенной. Вы получаете рабочую среду, готовую к промышленным нагрузкам:
- Создан рабочий пользователь без root-привилегий в сессии.
- Вход по паролям полностью заблокирован, авторизация идет по ключам Ed25519.
- Фаервол UFW фильтрует входящий трафик, пропуская только порты 22, 80 и 443.
- Служба Fail2ban блокирует паразитные сканеры портов.
- Настроен алгоритм сетевых перегрузок TCP BBR и развернут Docker Engine.
Такая последовательная настройка vps сервера занимает около пятнадцати минут, но надежно защищает систему и сервисы от взлома.