Бегунов ЕгорСистемный администратор, DevOps
  1. Главная
  2. Блог
  3. Linux

Как отключить вход root по SSH и не потерять доступ к серверу

Содержание

Прямой вход под root по SSH — первое, что пытаются подобрать боты. Уже через час после запуска VPS в /var/log/auth.log появляются сотни попыток. Ниже — порядок действий, при котором вы закроете root и не отрежете себе доступ.

Зачем отключать вход root

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

Подготовка: пользователь с sudo

Создайте пользователя и добавьте его в группу sudo (в RHEL-подобных системах — wheel):

adduser egor
usermod -aG sudo egor
Не закрывайте текущую сессиюВсе проверки делайте во втором окне терминала. Если что-то пойдёт не так, первая сессия под root останется открытой, и вы сможете откатить изменения.

Настройка sshd_config

Основной файл — /etc/ssh/sshd_config. В Ubuntu 22.04 и новее удобнее класть свои параметры в отдельный файл в /etc/ssh/sshd_config.d/, чтобы обновления пакета их не затирали.

Параметр PermitRootLogin

Значение no запрещает вход root полностью, prohibit-password оставляет вход только по ключу.

# /etc/ssh/sshd_config.d/10-hardening.conf
PermitRootLogin no

Вход только по ключам

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

ssh-copy-id egor@203.0.113.10

# затем в 10-hardening.conf
PasswordAuthentication no
KbdInteractiveAuthentication no

Проверка и перезапуск

sudo sshd -t && sudo systemctl reload ssh
  • sshd -t проверяет синтаксис и ничего не выводит, если ошибок нет.
  • reload не разрывает уже открытые сессии.
  • Во втором окне проверьте вход под новым пользователем и что ssh root@… получает отказ.
ПараметрБылоСтало
PermitRootLoginyesno
PasswordAuthenticationyesno
KbdInteractiveAuthenticationyesno

Итог

Root больше не принимает входящие подключения, пароли отключены, а административные действия идут через sudo с записью в журнал. Следующий шаг — поставить Fail2ban, чтобы боты не засоряли логи.