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