Блог / Статьи

Полезная информация для вашего хостинга

Как защитить сервер Ubuntu 24.04: SSH, UFW, обновления

Как защитить сервер Ubuntu 24.04: SSH, UFW, обновления

Вы только что установили Ubuntu 24.04 на свой сервер — поздравляем! Но это лишь начало. Безопасность сервера — не опция, а обязательное условие его стабильной и надёжной работы. Увы, большинство администраторов пренебрегают базовыми мерами сразу после установки, оставляя систему уязвимой для автоматизированных атак, сканеров и брутфорсов. В этой статье мы подробно разберём, как правильно обезопасить сервер на Ubuntu 24.04 с самого нуля: обновление системы, создание пользователей, настройка SSH-ключей и брандмауэра UFW. Это первая часть нашего масштабного чек-листа, призванного превратить ваш сервер из «малыша в пелёнках» в «крепкого воина в доспехах».

Шаг 1: Обновите систему — первая линия обороны

Даже если вы скачали свежий ISO-образ Ubuntu 24.04 буквально вчера, в официальных репозиториях уже могли появиться важные обновления безопасности. Не стоит считать, что новая установка сразу же полностью защищена — в мире Linux обновления приходят ежедневно. Поэтому первое, что вы должны сделать после установки, — это обновить все установленные пакеты.

Для этого выполните в терминале:

sudo apt update
sudo apt upgrade -y

Разберём каждую команду:

  • apt update — синхронизирует локальный индекс пакетов с репозиториями. Эта команда не обновляет саму систему, а лишь «узнаёт», какие пакеты можно обновить.
  • apt upgrade — применяет обновления для всех уже установленных пакетов. Ключ -y автоматически подтверждает все запросы, что удобно при автоматической настройке.

В некоторых случаях (например, при обновлении ядра или при значительных изменениях зависимостей) может потребоваться более глубокое обновление:

sudo apt full-upgrade

Эта команда может удалять устаревшие пакеты, если они мешают установке новых версий. Чтобы не навредить системе, перед выполнением можно сымитировать процесс:

sudo apt full-upgrade -s

Ключ -s (от англ. simulate) покажет, какие именно пакеты будут удалены или обновлены, не внося реальных изменений.

ubuntu03

Автоматические обновления безопасности

Так как ручное обновление — дело неблагодарное и легко забывается, Ubuntu предлагает встроенный механизм автоматических обновлений через пакет unattended-upgrades:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades

После запуска конфигурационного диалога выберите Yes. Это включит автоматическую установку обновлений безопасности. Настройки хранятся в двух файлах:

  • /etc/apt/apt.conf.d/20auto-upgrades — отвечает за частоту проверки и установки обновлений.
  • /etc/apt/apt.conf.d/50unattended-upgrades — определяет, какие именно репозитории обновлять (по умолчанию — только Ubuntu-Security).

Проверить статус службы можно командой:

systemctl status unattended-upgrades

А историю применённых обновлений — так:

cat /var/log/unattended-upgrades/unattended-upgrades.log

Этот шаг критически важен для защиты от известных уязвимостей, которые хакеры используют в течение первых часов после публикации CVE.

Шаг 2: Создайте отдельного пользователя — не работайте от root!

Работа напрямую от имени суперпользователя root — один из самых распространённых и опасных промахов начинающих администраторов. Атакующие автоматически сканируют целые диапазоны IP-адресов, пытаясь подобрать пароль именно к root. Поэтому следующий шаг — создание отдельного пользователя с правами sudo и полный запрет входа под root по SSH.

Создайте нового пользователя:

sudo adduser alice

Система запросит пароль и дополнительную информацию (имя, телефон и т.д.) — эту информацию можно пропустить, нажав Enter. Главное — задать надёжный пароль (даже если вы позже отключите аутентификацию по паролю).

Добавьте пользователя в группу sudo, чтобы он мог выполнять административные команды:

sudo usermod -aG sudo alice

Флаги:

  • -a — добавить, не удаляя из других групп;
  • -G — указать группу.

 

Теперь проверьте подключение к серверу под новым пользователем:

ssh alice@ваш_сервер_ip

Если всё работает — идём дальше. Отредактируйте конфигурацию SSH-сервера:

sudo nano /etc/ssh/sshd_config

Найдите строку:

#PermitRootLogin yes

И замените её на:

PermitRootLogin no

Важно! Не закрывайте текущую сессию, пока не убедитесь, что новый пользователь может подключаться. В противном случае вы рискуете потерять доступ к серверу.

Также проверьте, нет ли переопределения этого параметра в дополнительных конфигах:

ls /etc/ssh/sshd_config.d/

Если там есть файлы — откройте их и убедитесь, что PermitRootLogin нигде не установлен в yes.

После изменений перезапустите SSH-демон:

sudo systemctl restart ssh

Шаг 3: Перейдите на SSH-ключи — забудьте о паролях навсегда

Аутентификация по паролю — устаревший и ненадёжный метод. Даже сильный пароль может быть украден или подобран перебором. SSH-ключи — современный стандарт защиты удалённого доступа. Они основаны на криптографии с открытым ключом и делают брутфорс-атаки абсолютно бессмысленными.

Генерация ключей на клиенте

На вашей локальной машине (не на сервере!) выполните:

ssh-keygen -t ed25519 -C "alice@workstation"

Пояснения:

  • -t ed25519 — современный алгоритм, более безопасный и быстрый, чем RSA;
  • -C — комментарий для идентификации ключа (например, email или имя устройства).

 

Будут созданы два файла:

  • ~/.ssh/id_ed25519 — закрытый (приватный) ключ. Его никогда нельзя передавать;
  • ~/.ssh/id_ed25519.pub — открытый (публичный) ключ. Его нужно разместить на сервере.

 

ubuntu01

Копирование ключа на сервер

Самый простой способ — использовать встроенную утилиту:

ssh-copy-id alice@ваш_сервер_ip

Она автоматически создаст нужную директорию ~/.ssh, добавит ключ в authorized_keys и правильно установит права доступа.

Если вы предпочитаете ручной способ:

ssh alice@ваш_сервер_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Затем скопируйте содержимое id_ed25519.pub и вставьте в файл:

nano ~/.ssh/authorized_keys

После сохранения попробуйте подключиться к серверу:

ssh alice@ваш_сервер_ip

Если запроса пароля нет — всё работает!

Отключение аутентификации по паролю

Теперь отключим вход по паролю. Откройте конфиг SSH:

sudo nano /etc/ssh/sshd_config

Убедитесь, что следующие параметры установлены так:

PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no

Перезапустите SSH:

sudo systemctl restart ssh

Теперь сервер принимает подключения только с устройств, на которых есть соответствующий приватный ключ.

Шаг 4: Включите и настройте UFW — ваш сетевой щит

Даже самый защищённый сервер беспомощен без брандмауэра. В Ubuntu по умолчанию установлен UFW (Uncomplicated Firewall) — простой, но мощный инструмент для контроля сетевого трафика. Если его нет, установите:

sudo apt install ufw

Настройка правил

Первым делом разрешите SSH-трафик. Если вы используете стандартный порт 22:

sudo ufw allow OpenSSH

Если вы изменили порт SSH (например, на 2222), разрешите его вручную:

sudo ufw allow 2222/tcp

Теперь включите UFW:

sudo ufw enable

Система спросит подтверждение — согласитесь. По умолчанию UFW блокирует все входящие соединения и разрешает все исходящие.

Дополнительные правила

Если вы планируете запускать веб-сервер, разрешите HTTP и HTTPS:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Или воспользуйтесь предустановленными профилями:

sudo ufw app list

Возможные варианты: OpenSSH, Nginx Full, Apache Full, Postfix и др.

Чтобы удалить правило:

sudo ufw delete allow 80/tcp

Мониторинг и логирование

Проверить текущие правила:

sudo ufw status verbose

Включить логирование:

sudo ufw logging on

Уровни логирования: low, medium, high, full. Например:

sudo ufw logging high

Логи хранятся в /var/log/ufw.log и полезны при диагностике неожиданного блокирования трафика.

Для временного отключения (например, при отладке):

sudo ufw disable

Но не забудьте включить его снова!

ubuntu02

Заключение: ваш сервер теперь в безопасности — но не до конца

Вы выполнили базовые, но критически важные шаги по защите сервера на Ubuntu 24.04:

  • Обновили систему до актуального состояния;
  • Создали отдельного пользователя и заблокировали root-доступ;
  • Перешли на SSH-ключи и отключили пароли;
  • Настроили брандмауэр UFW.

 

Этого уже достаточно, чтобы отсечь 99% автоматизированных атак и сканеров. Однако безопасность — процесс, а не событие. В следующих частях нашего чек-листа мы рассмотрим:

  • Настройку fail2ban для блокировки брутфорса;
  • Глубокую настройку сетевой безопасности через nftables;
  • Отключение ненужных служб;
  • Контроль прав доступа к конфиденциальным файлам;
  • Внедрение двухфакторной аутентификации (2FA);
  • Аудит, логирование и мониторинг;
  • Стратегии резервного копирования.

 

Следите за обновлениями! А пока — проверьте, всё ли вы настроили правильно. Один упущенный шаг может стоить вам данных, времени и репутации.

Ваш сервер — ваша крепость. Защищайте её.