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

Оглавление

  1. Почему нельзя использовать root
  2. Что мы сделали
  3. Пошаговая инструкция
  4. Как теперь работать с сервером
  5. Проверка безопасности
  6. Итог

1. Почему нельзя использовать root

Root — это суперпользователь с неограниченными правами. Это как ходить по серверу с «ключом от всего»:

Проблема Последствие
Ошибка в команде rm -rf / Полное удаление системы
Взлом SSH с root Злоумышленник получает полный контроль
Brute-force атаки Легче угадать «root», чем «alex»
Случайный запуск вредоносного скрипта Полный доступ для злоумышленника

Root-пользователь — первое, что пытаются угадать хакеры при атаке на SSH. А когда получают доступ — получают полный контроль над сервером без дополнительных проверок.

Решение

Создать обычного пользователя с sudo-правами. Это тот же root, но с дополнительным слоем защиты:


2. Что мы сделали

На примере нашего сервера 31.42.190.97 мы провели полную настройку безопасности SSH.

Было

ssh -p 22022 [email protected]
→ Вход под root разрешён
→ Доступ по SSH-ключу
→ Полный контроль без дополнительных проверок

Стало

ssh -p 22022 [email protected]
→ Вход под обычным пользователем admin
→ Требуется sudo для admin-команд
→ Root-доступ полностью заблокирован

Конкретные изменения

  1. Создан пользователь admin с домашней директорией
  2. Пользователь добавлен в группу wheel (sudo на AlmaLinux)
  3. Настроен SSH-ключ для аутентификации
  4. Настроен sudo без пароля для удобства
  5. Заблокирован вход под root в SSH
  6. Отключена парольная аутентификация

3. Пошаговая инструкция

Шаг 1: Подключение под root

Пока root ещё разрешён, подключаемся к серверу:

ssh -p 22022 [email protected]

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

Создаём пользователя с домашней директорией и оболочкой bash:

useradd -m -s /bin/bash admin

Шаг 3: Настройка sudo

Добавляем пользователя в группу wheel (это группа sudo на AlmaLinux/RHEL):

usermod -aG wheel admin

Настраиваем sudo без пароля для удобства:

echo 'admin ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/admin
chmod 440 /etc/sudoers.d/admin

Шаг 4: Настройка SSH-ключей

Создаём директорию для ключей и файл authorized_keys:

mkdir -p /home/admin/.ssh
chmod 700 /home/admin/.ssh
touch /home/admin/.ssh/authorized_keys
chmod 600 /home/admin/.ssh/authorized_keys

Добавляем ваш публичный ключ:

# На вашем компьютере узнайте публичный ключ:
cat ~/.ssh/id_ed25519.pub

# На сервере добавьте ключ:
echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5...' >> /home/admin/.ssh/authorized_keys

Устанавливаем владельца:

chown -R admin:admin /home/admin/.ssh

Шаг 5: Проверка доступа под новым пользователем

Откройте новую вкладку терминала и проверьте вход:

ssh -p 22022 [email protected]

Проверьте права sudo:

sudo whoami
# Должно вывести: root

Если всё работает — продолжаем.

Шаг 6: Блокировка root

Теперь отключаем вход под root.

Сначала удаляем или отключаем файл, который может разрешать root:

rm -f /etc/ssh/sshd_config.d/01-permitrootlogin.conf

Редактируем конфигурацию SSH:

nano /etc/ssh/sshd_config

Находим и изменяем параметры:

PermitRootLogin no
PasswordAuthentication no

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

systemctl restart sshd
Важно: Не закрывайте текущую сессию root, пока не проверите доступ под admin!

4. Как теперь работать с сервером

После настройки ваш workflow изменится совсем немного.

Вход на сервер

# Входите как admin (НЕ root!)
ssh -p 22022 [email protected]

Выполнение admin-команд

Все команды, требующие прав администратора, выполняются с приставкой sudo:

# Вместо:
apt update

# Теперь:
sudo apt update

# Вместо:
systemctl restart nginx

# Теперь:
sudo systemctl restart nginx

# Вместо:
nano /etc/nginx.conf

# Теперь:
sudo nano /etc/nginx.conf

sudo не спрашивает пароль (мы это настроили), поэтому разницы почти нет — просто добавляете sudo перед командой.

Копирование файлов

# На сервер (ваш файл → сервер)
scp -P 22022 local-file.txt [email protected]:~/

# С сервера (сервер → ваш компьютер)
scp -P 22022 [email protected]:/var/log/syslog ./

5. Проверка безопасности

После настройки обязательно проверьте, что всё работает правильно.

Проверка 1: Вход под admin

ssh -p 22022 [email protected] "whoami"

Ожидаемый результат: admin

Проверка 2: Права sudo

ssh -p 22022 [email protected] "sudo whoami"

Ожидаемый результат: root

Проверка 3: Root заблокирован

ssh -p 22022 [email protected]

Ожидаемый результат:

Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

Итог

Мы успешно настроили безопасный доступ к серверу:

Параметр Было Стало
Пользователь для входа root admin
Группа sudo нет wheel
Root-доступ разрешён заблокирован
Парольная аутентификация возможна отключена
SSH-ключ только root admin тоже

Теперь сервер защищён от brute-force атак на пользователя root, а все опасные действия требуют осознанного подтверждения через sudo.

12 февраля 2026