- Home »

Как отключить вход под 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-ключи вместо паролей
- Настраивайте мониторинг и алерты
- Регулярно обновляйте систему
- Делайте резервные копии конфигурации
Эти настройки особенно важны для продакшен-серверов, где безопасность критична. Для тестовых окружений можно использовать более мягкие настройки, но базовые принципы остаются теми же.
Помните: безопасность — это не разовое действие, а непрерывный процесс. Регулярно проверяйте логи, обновляйте систему и следите за новыми угрозами.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.