Отключение root‑доступа на VPS и его безопасная альтернатива

Отключение root‑доступа на VPS и его безопасная альтернатива

Безопасность сервера всегда начинается с управления доступом. Многие администраторы по привычке работают напрямую под root, но такой подход создаёт серьёзные риски: любое действие выполняется с максимальными привилегиями, а значит, ошибка или взлом могут привести к полной потере контроля над системой. На VPS, где часто хранятся сайты и критичные данные, особенно важно ограничить возможности злоумышленников и случайные действия самого администратора.

Вместо того чтобы использовать root-пользователя по умолчанию, лучше создать отдельную учётную запись с правами администратора, настроить безопасное подключение по SSH и ограничить доступ к серверу по ключам и IP-адресам. Такой подход снижает вероятность взлома и делает систему более устойчивой к ошибкам. Работать с root напрямую можно только в исключительных случаях, а для повседневных задач надёжнее применять sudo и другие инструменты делегирования прав.

Аренда VPS/VDS — от ₽219/месяц

Почему выбирают VPS от AdminVPS:

✓ Дешевле физического сервера

✓ Более гибкий и мощный, чем обычный хостинг

✓ Бесплатная защита от DDoS и техподдержка 24/7

✓ Масштабируется под любые задачи

Виртуальный сервер VPS/VDS — ваш личный сервер для сайтов, магазинов, ботов и других проектов.

popup12

Новый пользователь с возможностями администратора

Один из компонентов безопасности ― пользователь с правами администратора и отключение прямого входа через root.

Вам надо получить доступ к серверу через терминал (на Linux или macOS) или командную строку / PowerShell (на Windows).

На Windows — нажмите Win+R, введите powershell и Enter.

В окне наберите команду, заменив IP_АДРЕС на адрес вашего VPS (его прислал хостинг-провайдер), и нажимайте Enter:

ssh root@IP_АДРЕС

Пример:

ssh root@123.45.67.89

Появится вопрос:

Are you sure you want to continue connecting (yes/no)?

Выбираем yes ― Enter.

Дальше ― пароль от root-пользователя (не отобразится — это нормально) и снова Enter.

Создаём нового пользователя.

Это будет ваш обычный рабочий аккаунт. 

Наберите:

adduser adminuser

Замените adminuser на любое имя (например, alex, user1, vasya, но без пробелов и заглавных букв).

Система запросит:

New password:

Введите пароль для нового пользователя. Можно придумать любой, отличающийся от используемого для root.

Дальше — Enter.

Затем:

Retype new password:

Ещё раз тот же пароль, Enter.

Дальше ― дополнительные вопросы, вроде:

Full Name []:
Room Number []:
Work Phone []:

Заполнять их не обязательно. Просто жмите на Enter, пока не появится:

Is the information correct? [Y/n]

Y, Enter.

Новому пользователю нужно разрешить использовать администраторские команды (как root, но безопаснее):

usermod -aG sudo adminuser

Замените adminuser на то имя, которое вы придумали на предыдущем этапе.

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

Проверка и настройка прав администратора (sudo)

Закройте текущее подключение к серверу ― exit, Enter — окно терминала вернётся к обычному приглашению.

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

ssh adminuser@IP_АДРЕС

Поменяйте adminuser на имя, которое вы указали при создании, а IP_АДРЕС — на адрес вашего сервера.

Пример:

ssh vasya@123.45.67.89

Наберите придуманный вами пароль. Попадёте в консоль сервера под именем нового пользователя.

Для проверки доступа введите:

sudo apt update && sudo apt upgrade

Здесь sudo — запускает следующую строку от имени администратора (root),

apt update — обновляет список доступных пакетов, apt upgrade — устанавливает обновления.

В ответе будет:

[sudo] password for adminuser:

Набираете пароль текущего пользователя (не root). Начнётся процесс выполнения.

Если появилось сообщение об ошибке вроде «adminuser is not in the sudoers file», вернитесь к предыдущему этапу и проверьте, была ли выполнена команда:

usermod -aG sudo adminuser

Также перезайдите под новым пользователем, чтобы обновились настройки.

Запрет прямого доступа с правами root

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

sudo nano /etc/ssh/sshd_config

Нужна строчка:

PermitRootLogin yes

Заменяем её на:

PermitRootLogin no

Если строки нет — добавьте её в любом месте файла.

Сохраняем: Ctrl+O, Enter и Ctrl+X.

Запускаем заново SSH:

sudo systemctl restart sshd

После этого прямая авторизация под root станет невозможна — даже если кто-то знает пароль.

Для проверки изменений попробуйте подключиться под root:

ssh root@IP_сервера

Система откажет в доступе. Имейте под рукой активное подключение под adminuser — в случае ошибки будет возможность вернуть настройки.

Проверка работы:

ssh adminuser@IP_сервера
sudo whoami

Появление root на экране подтверждает, что права передаются корректно.

Подключение по SSH без пароля

Пароль могут подсмотреть или перебрать. Безопаснее подключаться только с определённого устройства, используя пару криптографических ключей: один остаётся у вас, другой — загружается на сервер.

Сгенерируйте SSH-пару на своём устройстве.

В терминале введите:

ssh-keygen

На требование Enter file in which to save the key (/home/yourname/.ssh/id_rsa):

Ответьте Enter для сохранения в стандартном месте.

Затем:

Enter passphrase (empty for no passphrase):

Или оставляйте поле незаполненным и снова Enter, если не считаете нужной защиту ещё одним паролем.

В результате будут созданы два файла:

  • приватный (например, id_rsa) — сохраняется у вас, его никому не показывают;
  • публичный (например, id_rsa.pub) — его копируют на сервер.

Отправляем публичный файл на сервер.

В терминале наберите (замените adminuser@IP_АДРЕС на свои данные):

ssh-copy-id adminuser@IP_АДРЕС

Команда не запускается? Наберите ssh-copy-id или попробуйте альтернативу:

cat ~/.ssh/id_rsa.pub | ssh adminuser@IP_АДРЕС "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Попробуйте вход без ввода пароля:

ssh adminuser@IP_АДРЕС

Отключаем вход по паролю (для надёжности).

Откройте в терминале:

sudo nano /etc/ssh/sshd_config

Выберите строчку:

#PasswordAuthentication yes

Поменяйте её на:

PasswordAuthentication no

Уберите символ # в начале строчки, если он есть.

Сохраните файл (Ctrl+O, Enter) и закройте редактор (Ctrl+X).

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

sudo systemctl restart ssh

С этого момента подключаться можно только с устройства, где сохранён приватный ключ. 

Вход только с разрешённого IP

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

Включаем фильтр в Ubuntu.

Воспользуемся встроенным брандмауэром — UFW (Uncomplicated Firewall). Если он ещё не включён, начнём с активации.

Выполните в терминале (замените 203.0.113.45 на ваш реальный внешний IP):

sudo ufw allow from 203.0.113.45 to any port 22 proto tcp

Теперь сервер пустит по SSH только тот компьютер, с которого дана эта команда.

Узнать свой внешний IP можно, например, на сайте ifconfig.me или с помощью строки:

curl ifconfig.me

Активируйте UFW:

sudo ufw enable

О уже включённом брандмауэре предупредит соответствующее сообщение.

Проверьте статус параметров:

sudo ufw status

Вы увидите строку вроде:

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       203.0.113.45

При подключении из разных мест (например, с работы и из дома), разрешите оба IP-адреса.

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

sudo ufw allow 22/tcp

Но после настройки сразу отключите эту строку:

sudo ufw delete allow 22/tcp

Защита от подбора паролей с Fail2Ban

Если решите оставить вход по паролю, добавьте механизм, который автоматически блокирует попытки подбора. Fail2Ban сам отслеживает попытки и временно блокирует подозрительно активные адреса.

Установка и запуск:

sudo apt install fail2ban

Защита начнёт работать автоматически.

Возможный возврат к root (в случае неполадок)

Если понадобится вернуть доступ — подключитесь под adminuser и откройте файл etc/ssh/sshd_config:

sudo nano /etc/ssh/sshd_config

Замените строку на:

PermitRootLogin yes

Запустите повторно SSH:

sudo systemctl restart sshd

Root‑вход восстановлен.

Заключение

Отключение root-доступа — это базовый шаг в защите VPS. Создание отдельного пользователя с правами администратора, использование SSH-ключей, ограничение входа по IP и дополнительные инструменты вроде Fail2Ban позволяют значительно снизить риски. Такой подход не мешает полноценному администрированию, но делает систему более устойчивой к атакам и случайным ошибкам. Чем раньше вы внедрите эти меры, тем надёжнее будет ваша инфраструктура и тем спокойнее работа с сервером в будущем.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Нужен VPS сервер?

Арендуйте мощный VPS сервер для ваших проектов! Быстрая настройка, высокая производительность и надежная поддержка 24/7. Начните прямо сейчас!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях