Как отключить доступ Root по SSH на CentOS 7


Добавить в избранное
Главное меню » Операционная система CentOS » Как отключить доступ Root по SSH на CentOS 7

В этой статье мы покажем вам, как отключить доступ root по SSH на вашем сервере CentOS 7. По умолчанию при установке CentOS 7 и сервера SSH, корневая учетной записи автоматически получает удаленный доступ через SSH. Это может быть опасно. Если пароль учетной записи суперпользователя попадает в чужие руки, работоспособность вашего сервера будет под угрозой. Они могут удалить все файлы и папки на сервере и снять всю систему с несколькими командами. Именно поэтому рекомендуется ограничивать корневую учетную запись от прямого доступа к серверу.
В данной статье предполагается, что вы по крайней мере, имеете базовые знания Linux, знаете, как использовать оболочку, и, самое главное, вы размещаете свой сайт на своем собственном VPS. Установка очень проста и предполагает, что вы работаете в корневой учетной записи, если вы не можете добавить «sudo» к командам, чтобы получить привилегии суперпользователя. Мы покажем вам шаг за шагом, как отключить доступ root по SSH на сервере CentOS 7.
Примечание:
Перед тем, как отключить авторизацию по SSH для корневой учетной записи, вы должны создать учетную запись обычного пользователя. (В противном случае, вы не сможете получить доступ к вашему серверу при отключении основной учетной записи для авторизации по SSH.)
Отключение доступа root по SSH на сервере CentOS 7
Шаг 1. Прежде всего, давайте начнем с обновления вашей системы.
yum clean all yum -y update
Шаг 2. Отключение доступа root по SSH.
Для того, чтобы отключить, откройте конфигурационный файл SSH, используя следующие команды:
nano /etc/ssh/sshd_config
Измените строку следующим образом:
PermitRootLogin no
Сохраните файл и перезапустите сервер SSH, выполнив следующие команды:
systemctl restart sshd.service
Для повторного включения учетной записи суперпользователя, просто поместите символ # для директивы PermitRootLogin в файл и сохраните его. Перезапустите SSH сервер.
Поздравления! Вы успешно отключили доступ корневой SSH. Для получения дополнительной помощи или полезной информации, мы рекомендуем вам зайти на официальный веб — сайт SSH .
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Как ограничить доступ root?

Кроме того, можно запретить логин вообще всем, кроме допустим логина vasya:
AllowUsers vasya
и все. Совершенно неважно, знают они пароль, не знают они пароль — их будет посылать в любом случае.
Ответ написан более трёх лет назад
Нравится 4 4 комментария
Я бы еще запретил доступ к ssh по паролю, оставив только по ключу

Дмитрий, Тоже неплохо, особенно когда у тебя рабочий юзер не id27861299, а какой-нибудь bublik
Рута (юзера с uid = 0) ни в чем ограничить нельзя. От слова совсем.
Ответ некорректный. Смотрите мой ответ ниже.

ValdikSS, Спасибо, ознакомился со статьей про linux capabilities. Познавательно. Правда, не скажу что я от этого в восторге — два (три, четыре, N) пути предоставить или отобрать привилегию, не связанные друг с другом приведут к удвоению (утроению, учетверению, увеличению в N раз) ошибок, связанных с этим. getfacl/setfacl это прекрасно иллюстрируют — поставишь ACL на файл, потом двадцать раз успееешь забыть и голову ломаешь что же перестало работать?
Saboteur @saboteur_kiev Куратор тега Linux
software engineer
Нет. Неважно как назван рут, это пользователь с UID=0, и у него в любом случае будут ВСЕ права.
Но запретить ему заходить по ssh несложно. Просто пропишите ему пустой пароль и все.
На всякий случай можно даблчекнуть в настройках sshd, что пользователей с пустым паролем не пускают, но по дефолту это и так должно быть отключено
Ответ написан более трёх лет назад
Нравится 3 18 комментариев

MOЛOD @TOOMOLOD Автор вопроса
я прописал nologin и прописал в etc/ssh/sshd_config PermitRootLogin no
но не уверен что это работает

MOЛOD @TOOMOLOD Автор вопроса
MOЛOD, и обходиться ли это

MOЛOD, ваш sudo пользователь такой же root. Какой смысл телодвижений? Поменяйте порт и настройте авторизацию по только ключу. Если паранойя не отпускает.

MOЛOD @TOOMOLOD Автор вопроса
Sanes, я знаю что такое sudo. Вопрос был касаемо root.
Saboteur @saboteur_kiev Куратор тега Linux
MOЛOD, ну так попробуйте залогиниться под рутом. Если не выйдет, то все. Не обходится.
«PermitRootLogin no» обходится только если найдут дырку в pam, но вроде как ее нету.

MOЛOD, так а какая разница? Если под sudo авторизуются, это тоже самое. Авторизоваться смогут, если утечет пароль.

MOЛOD @TOOMOLOD Автор вопроса
Saboteur, странно но через shell из панели управления я хожу под рутом
Saboteur @saboteur_kiev Куратор тега Linux
Sanes, не тоже самое.
Saboteur @saboteur_kiev Куратор тега Linux
MOЛOD, панель управления может логиниться своим пользователем (или собственно вашим) и выполнять sudo для шелла.
Тут я не подскажу, надо смотреть как панель управления сделана.
Можно попробовать auth логи проанализировать

Saboteur, с хрена ли не тоже самое, если я знаю пароль sudo пользователя?

MOЛOD @TOOMOLOD Автор вопроса
Saboteur, панель управления установил через sudo но она встает от root
Saboteur @saboteur_kiev Куратор тега Linux
Sanes, у пользователя нет sudo пароля. У него есть свой пароль.
Но скрипткидди, которые развешивают свои скрипты с перебороми пароля, перебирают пароли к root/toor/admin а не к vasya, misha или sanes
Saboteur @saboteur_kiev Куратор тега Linux
MOЛOD, ну так если процесс уже запущен от рута, ему не нужно логиниться на сервер, процесс же уже запущен.
Вы уточните, вы хотите чтобы никто не мог ничего выполнить от имени рута? так не получится. Линукс спроектирован так, что без рута он ничего не сможет.
Или чтобы по ssh нельзя было зайти рутом

Saboteur, если какое-то дерьмо попало на сервер, ты хоть убейся, ничего уже не поможет.
Saboteur @saboteur_kiev Куратор тега Linux
Sanes, да ладно. 99% дерьма лечится легко.

Saboteur, автор явно не лекарь.
dubrovski82 @dubrovski82
Saboteur, sudo passwd -l root
вот так помогло. а в конфиге не работает. пропускало все равно. сейчас нет
Saboteur @saboteur_kiev Куратор тега Linux
dubrovski82, так это просто пароль от рута сменился, а доступ не ограничился.
Если новый пароль узнать или если там ssh ключи настроены, или su работает, то доступ останется
Привилегии в Linux задаются с помощью capabilities. Отобрав все capabilities, можно сделать из root пользователя даже менее привилегированного, чем обычные.
Для управления capabilities есть несколько программ. Можно воспользоваться стандартной capsh.
Следующая команда запустит root-шелл без каких-либо capabilities:
sudo capsh --drop=cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_module,cap_sys_rawio,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_time,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_mac_override,cap_mac_admin,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read -- -c bash
Можно поместить её в скрипт и назначить shell’ом пользователя, если вы понимаете, что делаете, и к чему это приведёт.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

в /etc/ssh/sshd_config все настройки.
Ответ написан более трёх лет назад

MOЛOD @TOOMOLOD Автор вопроса
PermitRootLogin no — поменял
MOЛOD,
не забыл сделать? :
systemctl restart sshd

MOЛOD @TOOMOLOD Автор вопроса
Изучаю linux, немного html и css.
В общем вот Вам мой мини мануал:
Настройка порта SSH
sudo nano /etc/ssh/sshd_config
// Заменить дефолтный (22) порт на кастомный:
Port 112
// Сохранить изменения в файле конфигурации и закрыть его. Не закрывая текущий терминал, нужно перезапустить службу ssh:
sudo service ssh restart
// С помощью нового терминала нужно убедиться в возможности подключения с использованием нового порта и в отсутствии возможности подключения по дефолтному (22) порту. Только после проверки возможности подключения можно закрывать начальный терминал.
Отключение возможности авторизации под root пользователем
sudo nano /etc/ssh/sshd_config
// Для отключения возможности авторизации под root пользователем, внести следующие изменения:
PermitRootLogin no
// Не закрывая текущий терминал, нужно перезапустить службу ssh:
sudo service ssh restart
// С помощью нового терминала нужно убедиться в возможности авторизации под обычным пользователем и в отсутствии возможности авторизации под root пользователем. Только после проверки возможности авторизации можно закрывать начальный терминал.
Добавление SSH ключа пользователя
// Ключи должны быть сгенерированы заранее (например, с помощью «puttygen»)
// Далее необходимо создать в домашнем каталоге пользователя каталог «.ssh»
mkdir ~/.ssh
// И ограничить доступ к нему для остальных пользователей, установив соответствующие права на каталог:
chmod 700 ~/.ssh
// Созать файл «authorized_keys», скопировать в него ПУБЛИЧНЫЙ ключ пользователя, после чего файл сохранить и закрыть:
nano ~/.ssh/authorized_keys
// Далее нужно установить на файл с публичным ключом права только на чтение:
chmod 600 ~/.ssh/authorized_keys
// С этого момента для подключения к серверу можно пользоваться ключами ssh, ввод пароля при этом не потребуется.
Отключение возможности авторизации по логину и паролю
sudo nano /etc/ssh/sshd_config
// Для отключения возможности авторизации по логину и паролю нужно внести следующие изменения:
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
// Не закрывая текущий терминал, нужно перезапустить службу ssh:
sudo systemctl reload sshd
// С помощью нового терминала следует убедиться в возможности авторизации с помощью ключа и в отсутствии возможности авторизации по логину и паролю. Только после проверки авторизации можно закрывать начальный терминал.
В дальнейшем, ssh авторизация возможна только от имени обычного пользователя (не root) и только с помощью ключа. При попытке авторизации под root соединение будет сброшено, при попытке авторизации с помощью логина и пароля соединение будет сброшено.
Можно ли разрешить или запретить доступ по SSH определенному пользователю или группе?

Это краткое руководство проведет вас через шаги, чтобы разрешить или запретить SSH-доступ определенному пользователю или группе в Linux. Оно будет полезно, если вы хотите разрешить конкретному пользователю выполнять только определенный набор команд. В этой статье мы собираемся включить или отключить доступ по SSH для пользователя или группы, внеся несколько изменений в файл конфигурации SSH по умолчанию.
В конфигурационном файле openSSH по умолчанию есть две директивы для разрешения и запрета доступа по SSH определенным пользователям или группе. Во-первых, давайте посмотрим, как разрешить или включить SSH-доступ для пользователя и группы. Обратите внимание, что все приведенные ниже команды должны запускаться от имени пользователя root или sudo.
1. Разрешить SSH-доступ пользователю или группе
Чтобы разрешить доступ по SSH для определенного пользователя, например sk, отредактируйте файл sshd_config:
$ sudo vi /etc/ssh/sshd_config
Нажмите «i», чтобы войти в режим вставки и добавить или изменить следующую строку:
AllowUsers sk

Замените «sk» своим именем пользователя. Обратите внимание на отступы между «AllowUsers» и «sk». Вы должны использовать Tab вместо пробела. Значение — добавьте слово «AllowUsers» и нажмите клавишу Tab, а затем укажите имя пользователя.
Вы также можете указать более одного пользователя, как показано ниже.
AllowUsers user1 user2
Чтобы разрешить всю группу, например, root , добавьте/отредактируйте следующую строку:
AllowGroups root
Этот параметр позволит всем членам «корневой» группы подключаться к серверу Linux по ssh.
Нажмите клавишу ESC, чтобы выйти из режима вставки, и введите : wq, чтобы сохранить и выйти из файла конфигурации SSH. Перезапустите службу SSH, чтобы изменения вступили в силу.
$ sudo systemctl restart sshd
Теперь пользователю sk и всем членам «корневой» группы разрешено подключаться к вашему Linux-серверу по ssh. Остальные пользователи (кроме sk и членов группы «root») не имеют доступа к системе через ssh.
Чтобы проверить это, попробуйте подключиться к серверу Linux по ssh от имени любого из запрещенных пользователей:
$ ssh ostechnix@192.168.225.52
Вы получите следующее сообщение об ошибке:
ostechnix@192.168.225.52's password: Permission denied, please try again.

2. Запретить доступ по SSH пользователю или группе
Чтобы отключить или запретить доступ по SSH для пользователя или группы, вам необходимо добавить/изменить следующие директивы в файле sshd_config вашего удаленного сервера.
Чтобы запретить доступ по SSH конкретному пользователю с именем «sk», отредактируйте файл sshd_config:
$ sudo vi /etc/ssh/sshd_config
Добавьте/отредактируйте следующую строку в файле sshd_config.
DenyUsers sk
Убедитесь, что отступы правильные. Не используйте клавишу пробела. Нажмите клавишу Tab и добавьте имя пользователя.
Аналогичным образом, чтобы запретить доступ по SSH нескольким пользователям, укажите имена пользователей через пробел, как показано ниже.
DenyUsers user1 user2
Аналогичным образом, чтобы запретить доступ по SSH для всей группы, например root , добавьте:
DenyGroups root
Сохраните и выйдите из файла конфигурации ssh. Перезапустите службу ssh, чтобы изменения вступили в силу.
$ sudo systemctl restart sshd
Теперь попробуйте ssh на свой Linux-компьютер из заблокированной учетной записи пользователя, например sk:
$ ssh sk@192.168.225.52
Вы получите следующее сообщение:
sk@192.168.225.52's password: Permission denied, please try again. sk@192.168.225.52's password:
3. Отключить вход в систему через SSH-root
Доступ с root-доступом по ssh считается плохой практикой с точки зрения безопасности . Поэтому настоятельно рекомендуется отключить вход в систему SSH Root для защиты вашей системы.
Чтобы отключить вход в систему root ssh, отредактируйте файл sshd_config:
$ sudo vi /etc/ssh/sshd_config
Найдите следующую строку, раскомментируйте ее и установите значение no .
PermitRootLogin no
Перезапустите службу SSH, чтобы изменения вступили в силу немедленно:
$ sudo systemctl restart sshd
Теперь вы знаете, как предоставлять и ограничивать доступ по SSH для определенных пользователей или групп в Linux. Вы также узнали, как запретить или отключить вход root по SSH в Linux. Это одна из рекомендуемых мер безопасности, которую должен применять каждый администратор Linux при настройке сервера Linux.
Насколько публикация полезна?
Нажмите на звезду, чтобы оценить!
Средняя оценка / 5. Количество оценок:
Оценок пока нет. Поставьте оценку первым.
Как отключить доступ пользователю root по SSH
Прочитав этот совет, вы сможете защитить ваш Linux-сервер, отключив суперпользователю root доступ по SSH.
Откройте в вашем любимом текстовом редакторе (к примеру, в Vi) конфигурационный файл SSH (/etc/ssh/sshd_config): sudo vi /etc/ssh/sshd_config
Найдите в разделе ‘Authentication’ строку с параметром PermitRootLogin и измените ее вид на: # Authentication:
#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes
#MaxAuthTries 6 Это позволит отключить возможность удаленного доступа для пользователя root.
Внимание! Советую вам, перед выполнением вышеуказанного, создать пользователя, имя которого отлично от ‘root’, и назначить ему права суперпользователя. Это позволит вам удаленно выполнять административные задачи.
Остались вопросы?
Если у Вас что-то не получилось или остались вопросы по данной проблеме — обратитесь к автору и он Вам поможет.
Станьте одним из экспертов!
Мы будем рады видеть в своих рядах людей, которые могут поделиться своим опытом с другими!
Linux (любые дистрибутивы), MS Windows, Cisco, Python и многое другое.
Более чем 20-летний опыт в IT позволяет мне давать Вам мудрые советы.