Перед вами первая часть чек-листа безопасности сервера с Ubuntu 24.04. В материале обсудим обновление системы, настройка доступа, SSH и UFW.
Вступление
Безопасность сервера — это то, о чём нужно позаботиться сразу после установки ОС. Мы подготовили чек-лист безопасности сервера на Ubuntu 24.04, который поможет не потеряться в рекомендациях. В первой части — обновление системы, настройка доступа, SSH и UFW.
После установки Ubuntu 24.04 на сервер нужно сразу заняться его защитой — поэтому мы подготовили чек-лист, охватывающий ключевые этапы настройки безопасности сервера. Это первая статья из трёх, в ней вы найдёте шаги, которые нужно предпринять после установки операционной системы в первую очередь:
- обновление пакетов,
- настройка пользователей и ограничение root-доступа,
- переход на SSH-ключи,
- настройка UFW.
В следующей статьях мы разберём углублённые меры: fail2ban, защиту сети с помощью nftables, отключение ненужных служб, проверку прав доступа к критичным файлам, 2FA, аудит, логирование, мониторинг и резервное копирование.
Если вы только начали настраивать сервер на Ubuntu, этот чек-лист поможет избежать типичных ошибок и повысить устойчивость системы к угрозам.
Установите последние обновления
Первый пункт чек-листа безопасности после установки Ubuntu 24.04 и также первое, что необходимо делать перед любым вмешательством в работу системы, — это обновление ПО. Даже если вы только что скачали ISO-образ, в репозиториях уже могли появиться обновления безопасности и исправления багов. По умолчанию установщик может не включать автоматическую проверку обновлений или установить не всё, что нужно.
Чтобы обновить списки пакетов и установить доступные обновления:
sudo apt update
sudo apt upgrade -y
Что делает каждая из них:
- apt update — загружает с серверов информацию о доступных версиях пакетов. Эта команда ничего не устанавливает, а только обновляет локальный индекс.
- apt upgrade — устанавливает новые версии уже установленных пакетов, если они найдены при обновлении индекса.
Ключ -y автоматически отвечает «да» на все запросы подтверждения. Это удобно при ручной установке, но если вам нужна нестандартная конфигурация системы, то лучше проверять, что именно будет обновлено.
Если вы хотите сразу ставить и новые зависимости, которые появились в обновлениях, используйте:
sudo apt full-upgrade
Эта команда может удалить устаревшие пакеты, если они конфликтуют с новыми версиями. На серверах, где важна предсказуемость, её стоит применять только после просмотра списка изменений. Для этого добавьте флаг -s, который означает simulation, — вывод покажет, что именно произойдёт, но обновление не будет выполнено:
sudo apt full-upgrade -s
Также можно автоматизировать установку обновлений безопасности (в дополнение к ручному обновлению):
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
Сначала будет установлен пакет unattended-upgrades, ответственный за автоматическое обновление. Затем откроется конфигурационный диалог, где вы сможете включить (или отключить) эту функцию. Нужно выбрать Yes, тогда в файл:
/etc/apt/apt.conf.d/20auto-upgrades
добавляются настройки для ежедневного обновления списка пакетов и установки обновлений, которые разрешены в конфигурации:
/etc/apt/apt.conf.d/50unattended-upgrades
По умолчанию туда входят обновления из репозиториев безопасности, т.е. Ubuntu-Security. unattended-upgrades будет запускаться автоматически через systemd. Проверка его статуса:
systemctl status unattended-upgrades
Чтобы посмотреть, применялись ли обновления:
cat /var/log/unattended-upgrades/unattended-upgrades.log
Создайте пользователя
Создайте пользователя для управления сервером и запретите вход по SSH суперпользователю.
Открытый root-доступ по SSH — серьёзный риск: атаки брутфорс обычно нацелены именно на root. Безопаснее работать от имени отдельного пользователя с sudo, чем от имени суперпользователя, поэтому сразу после обновления ограничьте административный доступ. Начнём с создания пользователя с sudo.
Следующая команда создаёт пользователя, одновременно создавая для него домашнюю директорию, также вы сможете задать пароль:
sudo adduser <user>
Вы можете использовать любое имя — например, своё имя или должность, пароль также может быть любым, так как впоследствии мы отключим SSH-вход по паролю (тем не менее не делайте его слишком простым).
Затем добавим <user> в группу sudo, чтобы он имел права суперпользователя:
sudo usermod -aG sudo <user>
Параметры команды:
- -aG — добавляет (a) <user> в группу (G), не удаляя его из других групп;
- sudo — группа с правами суперпользователя.
Теперь можно протестировать вход — подключитесь по SSH как новый пользователь:
ssh <user>@server_ip
Если всё работает, запретите вход суперпользователю по SSH. Для этого нужно отредактировать конфиги SSH-сервера:
sudo nano /etc/ssh/sshd_config
Найдите строку с #PermitRootLogin, раскомментируйте её и установите значение no.
После сохранения конфига перезапустите SSH-сервер:
sudo systemctl restart ssh
Также убедитесь, что PermitRootLogin no не переопределяется в других файлах в:
/etc/ssh/sshd_config.d/
так как конфигурация SSH может состоять не только из одного файла sshd_config, но и из других файлов в этой директории.
Важно: не закрывайте вход для суперпользователя, пока не убедитесь, что новые настройки работают. Это позволит восстановить доступ, если вы допустили ошибку.
Настройте SSH-ключи и запретите вход по паролю
Возможность войти по SSH с паролем — слабое звено в системе безопасности сервера. Даже если пароль сложный, его можно подобрать. Более надёжный способ — SSH-ключи: это пара криптографических файлов, один из которых хранится на клиентской машине, а другой — на сервере. При такой схеме вход возможен только с того устройства, на котором есть приватный ключ, парный ключу на сервере. Поэтому переход на аутентификацию по ключу — ещё один из обязательных пунктов чек-листа безопасности любого сервера.
Если у вас ещё нет SSH-ключей, сгенерируйте их на локальной машине:
ssh-keygen -t ed25519 -C <комментарий>
Пояснения:
- -t ed25519 — тип ключа (алгоритм его создания). Ed25519 считается более безопасным и быстрым, чем устаревший RSA;
- -C — комментарий; нужен для идентификации (например, email или имя машины, с которой вы будете подключаться).
Будут созданы два файла:
- ~/.ssh/id_ed25519 — приватный (закрытый) ключ, его нельзя никому передавать;
- ~/.ssh/id_ed25519.pub — публичный (открытый) ключ, его нужно передать на сервер.
Копируем открытый ключ на сервер:
ssh-copy-id <user>@ip_сервера
Эта команда создаст на сервере файл ~/.ssh/authorized_keys и скопирует туда ваш ключ. Это же можно сделать вручную:
- Создайте на сервере каталог .ssh и в нём файл authorized_keys, сразу задайте права:
mkdir -p ~/.ssh && chmod 700 ~/.ssh && touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys
- Откройте его в редакторе:
nano ~/.ssh/authorized_keys
- Скопируйте ключ из id_ed25519.pub с локальной машины и вставьте в authorized_keys.
Обязательно проверьте новое подключение с ключами — так как в случае ошибки можно потерять доступ к серверу.
Теперь можно запретить аутентификацию с паролем. Отредактируйте конфиги SSH:
sudo nano /etc/ssh/sshd_config
Измените значения в строках (если они уже есть) или добавьте:
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
После этого перезапустите SSH-сервис (restart).
Если всё сделано правильно, вы сможете подключаться только с устройств, на которых есть приватный ключ, соответствующий публичному на сервере. Это делает бессмысленными попытки перебора паролей.
Установите и настройте брандмауэр (UFW)
Включите и настройте брандмауэр, чтобы ограничить доступ к серверу. В Ubuntu для этого удобно использовать UFW — простой интерфейс к системе фильтрации трафика iptables.
UFW должен быть установлен по умолчанию, если его нет — поставьте вручную:
sudo apt install ufw
Прежде чем включать брандмауэр, обязательно разрешите SSH:
sudo ufw allow OpenSSH
Эта команда добавляет правило для порта 22, на котором обычно работает SSH-сервер. Если порт другой, задайте его вручную:
sudo ufw allow 2200/tcp
После этого включите UFW:
sudo ufw enable
Система запросит подтверждение, после чего активирует фильтрацию трафика. По умолчанию входящие соединения блокируются, кроме тех, которые были явно разрешены (как SSH ранее), а исходящие всегда разрешены — это нужно, чтобы сервер мог обновляться, отправлять логи, подключаться к API и т. п
Если вы планируете запускать дополнительные сервисы, добавляйте правила для них по мере необходимости. К примеру, разрешение HTTP и HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
Удалить ненужное правило можно так:
sudo ufw delete allow 80/tcp
UFW имеет преднастроенные профили для различных приложений, что упрощает настройку. Чтобы увидеть список доступных профилей, используйте:
sudo ufw app list
Здесь можно найти OpenSSH, Nginx Full, Postfix и другие шаблоны, которые автоматически добавляют нужные порты и протоколы.
Чтобы проверить текущие правила и статус брандмауэра:
sudo ufw status verbose
Чтобы включить логирование попыток подключения (например, к закрытым портам):
sudo ufw logging on
По умолчанию используется уровень low (низкий). При необходимости его можно повысить:
sudo ufw logging high
Это полезно для диагностики и аудита — особенно на этапе настройки сервера, когда нужно точно знать, какой трафик приходит и откуда.
Если нужно временно отключить брандмауэр (например, для отладки), используйте:
sudo ufw disable
Не забывайте снова включить его после завершения диагностики.
Заключение
На этом начальный этап настройки безопасности сервера с Ubuntu 24.04 завершён. Если вы выполнили все четыре шага — обновили ПО, создали пользователя для управления системой, настроили вход по SSH и включили брандмауэр — ваш сервер уже защищён от большинства случайных атак и сканирований.
Чтобы довести защиту до продакшен-уровня, переходите ко второй части нашего чек-листа безопасности сервера на Ubuntu, где мы рассмотрим настройку fail2ban, nftables, отключение ненужных служб и контроль прав на конфигурационные и системные файлы.
Все три части чек-листа по безопасности сервера с Ubuntu 24.04 доступны по ссылкам:
- Часть 1. Обновление системы, настройка доступа, SSH и UFW (данный материал)
- Часть 2. Fail2ban, nftables и управление службами
- Часть 3. Проверка прав, 2FA, аудит, логирование, бекап и мониторинг
Читайте в блоге:
- Как настроить SSH-доступ в Ubuntu 24.04 LTS: пошаговое руководство
- Защита Mosquitto на Ubuntu 24.04: настройка аутентификации и шифрования
- Гайд по установке Mosquitto на Ubuntu 24.04