TOOMOLOD
@TOOMOLOD
Веб-мастер

Как ограничить доступ root?

Купил сервер, а там учетка не из под рута а под пользователем с sudo
вопрос, как ограничить рута? и получиться ли полностью его ограничить чтоб он не смог зайти в консоль по ssh
  • Вопрос задан
  • 763 просмотра
Пригласить эксперта
Ответы на вопрос 5
CityCat4
@CityCat4
Если я чешу в затылке - не беда!
Рута (юзера с uid = 0) ни в чем ограничить нельзя. От слова совсем.
А вот запретить логин руту удаленно можно и даже нужно. В sshd_config:
PermitRootLogin no

Кроме того, можно запретить логин вообще всем, кроме допустим логина vasya:
AllowUsers vasya
и все. Совершенно неважно, знают они пароль, не знают они пароль - их будет посылать в любом случае.
Ответ написан
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Нет. Неважно как назван рут, это пользователь с UID=0, и у него в любом случае будут ВСЕ права.
Но запретить ему заходить по ssh несложно. Просто пропишите ему пустой пароль и все.
На всякий случай можно даблчекнуть в настройках sshd, что пользователей с пустым паролем не пускают, но по дефолту это и так должно быть отключено
Ответ написан
Sanes
@Sanes
!
в /etc/ssh/sshd_config все настройки.
Ответ написан
@dfsaraev
Изучаю 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 соединение будет сброшено, при попытке авторизации с помощью логина и пароля соединение будет сброшено.
Ответ написан
ValdikSS
@ValdikSS
Привилегии в 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'ом пользователя, если вы понимаете, что делаете, и к чему это приведёт.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы