Защита Ubuntu Server: Практический подход к защите контейнеров и развертываний
13:49, 17.08.2026
Существует несколько эффективных способов обеспечить безопасность сервера Ubuntu. Именно поэтому мы решили поделиться некоторыми практическими рекомендациями по этой теме.
Просто проверив logwatch, вы сможете определить, сколько попыток входа в вашу систему было совершено и какого рода они были. В общем обзоре, который мы представим в этой статье, мы расскажем о некоторых деталях обеспечения безопасности серверов, используемых в качестве хостов Docker.
Начальные этапы настройки
Самым первым и в то же время важнейшим шагом является выбор пароля для пользователя root. Здесь необходимо выбрать что-то более сложное, и генератор паролей может стать хорошим выбором для таких ситуаций. С помощью генератора паролей вы сможете автоматически сгенерировать нужный пароль всего за пару секунд и дополнительно зашифровать его с помощью мастер-пароля. Какой бы инструмент вы ни использовали для генерации паролей, вам также следует подумать о какой-либо другой форме шифрования. Пароль root может понадобиться в случае возникновения проблем с паролем sudo.
Ещё одним важным шагом является обновление и установка последних исправлений в системе. Вот как это сделать:
apt-get update
apt-get upgrade
Создание нового пользователя
Ещё одно важное правило, которого следует придерживаться из соображений безопасности: никогда не входите на сервер под учетной записью root. Например, в небольшой команде пользователей можно использовать один аккаунт для упрощения процесса, при этом сохраняя безопасность. Если в команде больше пользователей, наиболее целесообразным выбором будет предоставление определённых прав исключительно с помощью sudo.
# Создать пользователя «deploy»
useradd deploy
# Создать домашний каталог для пользователя «deploy»
mkdir -p /home/deploy
# Создание каталога «.ssh» внутри домашнего каталога пользователя «deploy»
mkdir -p /home/deploy/.ssh
# Установите соответствующие права доступа для каталога «.ssh»
chmod 700 /home/deploy/.ssh
# При желании измените владельца домашнего каталога и каталога «.ssh» на пользователя «deploy»
chown -R deploy:deploy /home/deploy
Следующим шагом является настройка необходимой оболочки с помощью команды:
usermod -s /bin/bash deploy
Включение аутентификации по SSH-ключам
Ещё одна полезная рекомендация — избегать использования паролей для входа на серверы. Вот несколько моментов, касающихся этой темы:
- SSH-ключи практически невозможно угадать, поэтому к системе невозможно получить доступ с помощью атак методом перебора, как в случае с обычными паролями.
- Ключи также лучше обычных паролей просто потому, что для их использования требуется больше информации.
- В случае потери устройства или даже его кражи вы можете защитить свой ключ, удалив открытый ключ из файла authorized_keys. Вы также можете обеспечить дополнительный уровень защиты, используя длинную парольную фразу.
- Безопасная парольная фраза имеет решающее значение.
Теперь скопируем id_rsa.pub1:
vim /home/deploy/.ssh/authorized_keys
Вот как должны быть настроены правильные права доступа:
chmod 400 /home/deploy/.ssh/authorized_keys
chown deploy:deploy /home/deploy -R
Проверка пользователя deploy и настройка sudo
В ходе этого процесса мы оставим SSH-соединение с правами root и попробуем проверить пользователя deploy. Затем мы установим пароль для пользователя deploy. Чтобы создать более безопасный пароль, мы воспользуемся специальным менеджером, который также обеспечит определённый уровень шифрования.
passwd deploy
Затем запустите sudo с помощью команды:
visudo
Теперь добавим группу sudo под пользователем root:
root ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Добавьте пользователя deploy в группу sudo с помощью команды:
usermod -aG sudo deploy
После выполнения этих шагов пользователь deploy получает права sudo. Теперь вы можете либо перезайти в оболочку, либо использовать следующую команду для проверки этих прав:
exec su -l deploy
Ограничение входа по SSH-ключам
Настройка находится здесь:
vim /etc/ssh/sshd_config
В файле необходимо добавить IP-адрес; следующая команда довольно проста, при этом вы должны быть подключены к VPN и авторизованы следующим образом:
PermitRootLogin no
PasswordAuthentication no
AllowUsers deploy@(ваш-VPN-или-статический-IP)
Затем необходимо перезапустить службу SSH:
service ssh restart
Настройка брандмауэра
Настройку брандмауэра можно выполнить с помощью Iptables или воспользоваться упрощённым аналогом Iptables — ufw. В системе Ubuntu ufw установлен по умолчанию, тогда как в системе Debian его необходимо установить дополнительно с помощью команды:
apt-get install ufw
Начните с открытия файла конфигурации:
vim /etc/default/ufw
Измените следующее значение на yes:
IPV6=yes
Теперь вы можете настроить всё из командной строки с помощью ufw следующим образом:
sudo ufw allow from {укажите-IP} to any port 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw disable
sudo ufw enable
Перед настройкой этих правил у вас обязательно должен быть статический IP-адрес. Этот фактор имеет решающее значение, поскольку динамический IP-адрес может привести к тому, что вы не сможете получить доступ к системе.
Автоматизация обновлений безопасности
Автоматизация очень важна, иначе вы можете просто пропустить некоторые обновления безопасности в вашей системе. Вот несколько шагов, которые следует выполнить для повышения безопасности:
apt-get install unattended-upgrades
vim /etc/apt/apt.conf.d/10periodic
Внесите в файл следующие изменения:
APT::Periodic::Update-Package-Lists "2";
APT::Periodic::Download-Upgradeable-Packages "2";
APT::Periodic::AutocleanInterval "14";
APT::Periodic::Unattended-Upgrade "1";
Ещё одна важная рекомендация — включать только обновления безопасности, поскольку обычные обновления могут привести к сбою приложения во время обновления, а это в большинстве случаев не является идеальным вариантом.
vim /etc/apt/apt.conf.d/50unattended-upgrades
Внесите в файл следующие изменения:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
"${distro_id}:${distro_codename}-backports";
};
Внедрение Fail2Ban
Внедрение Fail2Ban — отличный выбор, который позволит заблокировать множество подозрительных действий. Этот пакет работает за счёт добавления правил в iptables и блокировки подозрительных IP-адресов, демонстрирующих странную активность.
Пакет использует ряд полезных протоколов фильтрации и обеспечивает отличную интеграцию с другими сервисами, гарантируя более надёжную защиту от атак методом перебора или DDoS-атак. Вам следует регулярно проверять настройки Fail2Ban, так как он может заблокировать некоторых реальных пользователей. Чтобы упростить этот процесс, вы можете интегрировать инструмент с SendMail, и вы будете немедленно получать уведомления при блокировке того или иного IP-адреса.
Для установки используйте:
apt-get install fail2ban
Включение двухфакторной аутентификации
Если вы хотите иметь полностью защищённый сервер с минимальными рисками и вероятностью виртуальных атак, то двухфакторная аутентификация просто необходима. Процесс доступа к вашему серверу станет гораздо сложнее, поскольку хакерам потребуется:
- Получить доступ к VPN, завладев ключом или сертификатом
- Получить доступ к вашему компьютеру, чтобы заполучить закрытый ключ
- Каким-то образом добыть парольную фразу
- И, наконец, для двухфакторной аутентификации потребуется доступ к вашему телефону
Даже если это станет возможным, им придётся получить root-доступ через sudo, а для этого хакерам нужно каким-то образом заполучить пароль деплоя, который зашифрован, а это — огромная проблема.
Для установки используйте:
apt-get install libpam-google-authenticator
Для настройки вам понадобятся следующие команды:
su deploy
google-authenticator
Настройка Logwatch
Logwatch — ещё один полезный инструмент, необходимый для проверки файлов журналов. Ежедневно вы будете получать данные обо всех попытках, произошедших за этот период, благодаря чему у вас будет чёткое представление о том, что происходит с вашим сервером. Этот инструмент можно использовать для мониторинга, а его установка очень проста:
apt-get install logwatch
Затем добавьте задание:
vim /etc/cron.daily/00logwatch
Добавьте в открытый файл следующую строку:
/usr/sbin/logwatch --output mail --mailto admin@example.com --detail high
Завершение настройки
Вот и всё, что вам нужно знать о безопасности вашего сервера Ubuntu. Просто следуя нашим практическим рекомендациям, вы сможете значительно минимизировать виртуальные атаки на вашу систему. Если вы хотите пойти ещё дальше, вам также необходимо проверить другие возможные уязвимости, связанные с сервисом и вашими приложениями. Однако это уже совершенно другая тема для обсуждения!