Безопасность сервера всегда начинается с управления доступом. Многие администраторы по привычке работают напрямую под root, но такой подход создаёт серьёзные риски: любое действие выполняется с максимальными привилегиями, а значит, ошибка или взлом могут привести к полной потере контроля над системой. На VPS, где часто хранятся сайты и критичные данные, особенно важно ограничить возможности злоумышленников и случайные действия самого администратора.
Вместо того чтобы использовать root-пользователя по умолчанию, лучше создать отдельную учётную запись с правами администратора, настроить безопасное подключение по SSH и ограничить доступ к серверу по ключам и IP-адресам. Такой подход снижает вероятность взлома и делает систему более устойчивой к ошибкам. Работать с root напрямую можно только в исключительных случаях, а для повседневных задач надёжнее применять sudo и другие инструменты делегирования прав.
Новый пользователь с возможностями администратора
Один из компонентов безопасности ― пользователь с правами администратора и отключение прямого входа через 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 sshdRoot‑вход восстановлен.
Заключение
Отключение root-доступа — это базовый шаг в защите VPS. Создание отдельного пользователя с правами администратора, использование SSH-ключей, ограничение входа по IP и дополнительные инструменты вроде Fail2Ban позволяют значительно снизить риски. Такой подход не мешает полноценному администрированию, но делает систему более устойчивой к атакам и случайным ошибкам. Чем раньше вы внедрите эти меры, тем надёжнее будет ваша инфраструктура и тем спокойнее работа с сервером в будущем.
Читайте в блоге:
- Rootless-режим в Docker
- Как войти в Ubuntu под root
- Принцип наименьших привилегий в Docker: руководство по Linux Capabilities
 
 
