Назад в блог/Полная настройка VPS сервера на Ubuntu 22.04 и 24.04: безопасность, сетевой экран и Docker

Полная настройка VPS сервера на Ubuntu 22.04 и 24.04: безопасность, сетевой экран и Docker

Инженерное руководство по первичной настройке VPS сервера на Ubuntu: безопасное подключение по SSH-ключам Ed25519, настройка брандмауэра UFW, защита от перебора Fail2ban, оптимизация ядра под NVMe и развертывание Docker Engine.

Настройка VPS сервера на Ubuntu Linux
Пошаговая настройка VPS сервера на Ubuntu Linux: безопасность, сетевой экран и 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:

BASH
ssh root@185.120.45.10

Постоянно работать под root в рабочей системе нельзя: любая ошибка в команде или уязвимость в скрипте может нарушить работу всей операционной системы. Поэтому грамотная настройка сервера с нуля начинается с создания непривилегированного пользователя с правами sudo:

BASH
# Создаем пользователя 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 бит).

Сгенерируйте пару ключей на своем локальном рабочем компьютере:

BASH
ssh-keygen -t ed25519 -C "admin-workstation"

Скопируйте открытый ключ на сервер:

BASH
ssh-copy-id -i ~/.ssh/id_ed25519.pub deployer@185.120.45.10

Убедитесь, что вход по ключу работает без запроса пароля. Теперь переходим к редактированию конфигурации службы OpenSSH. В Ubuntu 22.04 и 24.04 параметры изоляции удобно выносить в отдельный файл:

BASH
sudo nano /etc/ssh/sshd_config.d/99-security.conf

Внесите следующие параметры:

INI
# Запрещаем прямой вход под учетной записью 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:

BASH
# Политики по умолчанию
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:

BASH
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 требует оптимизации параметров подкачки и работы сетевых буферов:

BASH
# Создаем файл подкачки 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. Создадим файл параметров ядра:

BASH
sudo nano /etc/sysctl.d/99-performance.conf

Вставьте настройки:

INI
# Снижаем интенсивность сброса страниц в 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:

BASH
# Удаляем устаревшие дистрибутивные пакеты
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 считается завершенной. Вы получаете рабочую среду, готовую к промышленным нагрузкам:

  1. Создан рабочий пользователь без root-привилегий в сессии.
  2. Вход по паролям полностью заблокирован, авторизация идет по ключам Ed25519.
  3. Фаервол UFW фильтрует входящий трафик, пропуская только порты 22, 80 и 443.
  4. Служба Fail2ban блокирует паразитные сканеры портов.
  5. Настроен алгоритм сетевых перегрузок TCP BBR и развернут Docker Engine.

Такая последовательная настройка vps сервера занимает около пятнадцати минут, но надежно защищает систему и сервисы от взлома.

Нужен быстрый сервер под ваш проект?

Арендуйте производительный KVM VPS в Москве или Германии на скоростных NVMe дисках от 300 ₽/мес. Автовыдача за 60 секунд, выделенный IPv4 и защита от DDoS.

Выбрать тариф