Home » Как отключить вход под root на Ubuntu 24
Как отключить вход под root на Ubuntu 24

Как отключить вход под root на Ubuntu 24

Сейчас расскажу, как грамотно отключить прямой вход под root на Ubuntu 24 — вопрос, который волнует всех, кто серьезно подходит к безопасности своих серверов. Если вы только что развернули свежий VPS или выделенный сервер, то наверняка знаете, что доступ по SSH под root — это первое, что нужно прикрыть. Эта статья поможет вам настроить безопасный доступ к серверу, создать пользователя с правами sudo и полностью заблокировать прямой root-доступ. Разберем все нюансы, подводные камни и дам практические рекомендации.

Зачем отключать root-доступ

Начнем с основ. Root-пользователь — это суперпользователь с неограниченными правами в системе. Проблема в том, что его имя всегда известно (root), и злоумышленникам остается только подобрать пароль. Это классическая уязвимость, которую эксплуатируют боты и хакеры по всему миру.

Статистика показывает, что более 90% атак на SSH происходят именно на аккаунт root. Логи любого публичного сервера пестрят попытками подключения с комбинациями типа root/123456, root/password, root/admin и так далее.

Как это работает под капотом

SSH-демон (sshd) в Ubuntu читает конфигурацию из файла /etc/ssh/sshd_config. Параметр PermitRootLogin отвечает за возможность подключения под root. По умолчанию в Ubuntu 24 этот параметр может быть установлен в yes или prohibit-password, что все равно небезопасно.

Когда вы устанавливаете PermitRootLogin no, SSH-демон будет отклонять все попытки аутентификации под пользователем root, независимо от правильности пароля или ключа.

Пошаговая настройка

Перед тем как отключить root, обязательно создайте пользователя с правами sudo. Иначе вы заблокируете себе доступ к серверу.

Шаг 1: Создаем нового пользователя

# Создаем пользователя
adduser admin

# Добавляем в группу sudo
usermod -aG sudo admin

# Проверяем группы пользователя
groups admin

Шаг 2: Настраиваем SSH-ключи (рекомендуется)

# Переключаемся на нового пользователя
su - admin

# Создаем директорию для SSH
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# Создаем файл authorized_keys
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

# Добавляем ваш публичный ключ
echo "ssh-rsa AAAAB3NzaC1yc2E... your-key" >> ~/.ssh/authorized_keys

Шаг 3: Тестируем подключение

Откройте новую SSH-сессию и проверьте, что можете подключиться под новым пользователем:

ssh admin@your-server-ip
sudo whoami

Шаг 4: Отключаем root-доступ

# Редактируем конфигурацию SSH
sudo nano /etc/ssh/sshd_config

# Находим и изменяем строку:
PermitRootLogin no

# Также рекомендую добавить:
PasswordAuthentication no
PubkeyAuthentication yes

Шаг 5: Перезапускаем SSH

# Проверяем конфигурацию
sudo sshd -t

# Перезапускаем SSH-демон
sudo systemctl restart sshd

Сценарии и кейсы

Сценарий Плюсы Минусы Рекомендация
PermitRootLogin no + PasswordAuthentication no Максимальная безопасность Только SSH-ключи Идеально для продакшена
PermitRootLogin no + PasswordAuthentication yes Удобно для разработки Уязвимо к брут-форсу Только для тестовых серверов
PermitRootLogin prohibit-password Root только по ключам Все еще атакуют root Компромиссный вариант

Дополнительные меры безопасности

Раз уж взялись за безопасность, давайте настроим еще несколько важных параметров:

# Изменяем порт SSH (опционально)
Port 2222

# Ограничиваем количество попыток
MaxAuthTries 3

# Отключаем пустые пароли
PermitEmptyPasswords no

# Настраиваем таймауты
ClientAliveInterval 300
ClientAliveCountMax 2

Настройка fail2ban

# Устанавливаем fail2ban
sudo apt update
sudo apt install fail2ban

# Создаем локальную конфигурацию
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

# Редактируем настройки для SSH
sudo nano /etc/fail2ban/jail.local

# В секции [sshd] устанавливаем:
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

Автоматизация и скрипты

Для автоматизации развертывания серверов можно создать скрипт:

#!/bin/bash
# secure_ssh.sh

USERNAME="admin"
SSH_KEY="ssh-rsa AAAAB3NzaC1yc2E..."

# Создаем пользователя
adduser --disabled-password --gecos "" $USERNAME
usermod -aG sudo $USERNAME

# Настраиваем SSH-ключи
mkdir -p /home/$USERNAME/.ssh
echo "$SSH_KEY" > /home/$USERNAME/.ssh/authorized_keys
chmod 700 /home/$USERNAME/.ssh
chmod 600 /home/$USERNAME/.ssh/authorized_keys
chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh

# Настраиваем SSH
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config

# Перезапускаем SSH
systemctl restart sshd

echo "SSH настроен безопасно!"

Типичные ошибки и их решения

  • Заблокировали себя: Если не можете подключиться, используйте консоль VPS или KVM для восстановления доступа
  • Sudo не работает: Проверьте, что пользователь добавлен в группу sudo: groups username
  • SSH-ключи не работают: Проверьте права доступа к файлам (700 для .ssh, 600 для authorized_keys)
  • Конфигурация SSH некорректна: Всегда проверяйте синтаксис командой sshd -t

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

После настройки полезно следить за попытками подключения:

# Смотрим неудачные попытки входа
sudo grep "Failed password" /var/log/auth.log

# Смотрим успешные подключения
sudo grep "Accepted" /var/log/auth.log

# Мониторинг в реальном времени
sudo tail -f /var/log/auth.log

Интеграция с системами мониторинга

Для продакшен-серверов рекомендую настроить алерты. Например, с помощью простого скрипта:

#!/bin/bash
# ssh_monitor.sh

LOGFILE="/var/log/auth.log"
THRESHOLD=5

# Считаем неудачные попытки за последний час
FAILED_ATTEMPTS=$(grep "Failed password" $LOGFILE | grep "$(date '+%b %d %H')" | wc -l)

if [ $FAILED_ATTEMPTS -gt $THRESHOLD ]; then
    echo "ALERT: $FAILED_ATTEMPTS failed SSH attempts in the last hour" | mail -s "SSH Alert" admin@yourdomain.com
fi

Альтернативные решения

Помимо стандартного SSH, существуют альтернативы:

  • OpenSSH с двухфакторной аутентификацией: Интеграция с Google Authenticator или Authy
  • Tailscale: Современный VPN-подход к доступу к серверам
  • SSH через Wireguard: Доступ к SSH только через VPN-туннель
  • Bastion хосты: Промежуточные серверы для доступа к инфраструктуре

Производительность и нагрузка

Отключение root-доступа никак не влияет на производительность сервера. Наоборот, снижается нагрузка на SSH-демон из-за меньшего количества попыток подключения от ботов.

Статистика показывает, что после отключения root-доступа количество попыток подключения снижается на 80-90%.

Дополнительные возможности Ubuntu 24

В Ubuntu 24 появились новые возможности для безопасности SSH:

  • Улучшенная поддержка SSH-сертификатов: Более гибкое управление доступом
  • Интеграция с systemd: Лучше логирование и мониторинг
  • Поддержка новых алгоритмов: Ed25519 ключи по умолчанию

Тестирование безопасности

После настройки проверьте безопасность с помощью ssh_scan или аналогичных инструментов:

# Сканируем SSH-сервис
nmap -sV -p 22 your-server-ip

# Проверяем конфигурацию
ssh-audit your-server-ip

Заключение и рекомендации

Отключение root-доступа — это базовая мера безопасности, которую нужно выполнить в первую очередь после установки Ubuntu 24. Комбинируйте это с отключением парольной аутентификации, использованием SSH-ключей и дополнительными мерами вроде fail2ban.

Основные принципы:

  • Всегда создавайте пользователя с sudo перед отключением root
  • Используйте SSH-ключи вместо паролей
  • Настраивайте мониторинг и алерты
  • Регулярно обновляйте систему
  • Делайте резервные копии конфигурации

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

Помните: безопасность — это не разовое действие, а непрерывный процесс. Регулярно проверяйте логи, обновляйте систему и следите за новыми угрозами.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

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

Leave a reply

Your email address will not be published. Required fields are marked