Содержание
Прямой вход под root по SSH — первое, что пытаются подобрать боты. Уже через час после запуска VPS в /var/log/auth.log появляются сотни попыток. Ниже — порядок действий, при котором вы закроете root и не отрежете себе доступ.
Зачем отключать вход root
Логин root известен заранее, поэтому атакующему остаётся подобрать только пароль. Вход под отдельным пользователем добавляет второй неизвестный параметр, а каждая команда с повышенными правами проходит через sudo и попадает в журнал.
Подготовка: пользователь с sudo
Создайте пользователя и добавьте его в группу sudo (в RHEL-подобных системах — wheel):
adduser egor
usermod -aG sudo egor
Настройка 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@…получает отказ.
| Параметр | Было | Стало |
|---|---|---|
| PermitRootLogin | yes | no |
| PasswordAuthentication | yes | no |
| KbdInteractiveAuthentication | yes | no |
Итог
Root больше не принимает входящие подключения, пароли отключены, а административные действия идут через sudo с записью в журнал. Следующий шаг — поставить Fail2ban, чтобы боты не засоряли логи.