M
M
MOLOD2020-07-29 23:05:47
linux
MOLOD, 2020-07-29 23:05:47

How to restrict root access?

I bought a server, and there the account is not from under the root, but under the user with sudo
the question is, how to limit the root? and whether it will be possible to completely restrict it so that it cannot enter the console via ssh

Answer the question

In order to leave comments, you need to log in

5 answer(s)
C
CityCat4, 2020-07-30
@CityCat4

Root (user with uid = 0) cannot be limited in anything. From the word at all.
But it is possible and even necessary to prohibit login to the root remotely. In sshd_config:
PermitRootLogin no
In addition, you can disable login in general for everyone, except for the login vasya:
AllowUsers vasya
and that's it. It doesn't matter if they know the password, they don't know the password - they will be sent anyway.

S
Saboteur, 2020-07-29
@saboteur_kiev

No. It doesn't matter what the root is named, it's a user with UID=0 and will have ALL permissions anyway.
But forbidding him to log in via ssh is easy. Just give him an empty password and that's it.
Just in case, you can double-check in the sshd settings that users with an empty password are not allowed, but by default this should be disabled anyway

V
ValdikSS, 2020-09-02
@ValdikSS

Privileges in Linux are set using capabilities. By removing all capabilities, you can make the root user even less privileged than normal.
There are several programs for managing capabilities. You can use the standard capsh.
The following command will start a root shell without any 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

You can put it in a script and assign a user as the shell if you understand what you are doing and where it will lead.

S
Sanes, 2020-07-29
@Sanes

in /etc/ssh/sshd_config all settings.

D
Dmitry, 2020-08-05
@dfsaraev

In general, here is my mini-manual for you:

SSH port setting

sudo nano /etc/ssh/sshd_config
// Заменить дефолтный (22) порт на кастомный:
Port 112
// Сохранить изменения в файле конфигурации и закрыть его. Не закрывая текущий терминал, нужно перезапустить службу ssh:
sudo service ssh restart
// С помощью нового терминала нужно убедиться в возможности подключения с использованием нового порта и в отсутствии возможности подключения по дефолтному (22) порту. Только после проверки возможности подключения можно закрывать начальный терминал.

Disabling the possibility of authorization under the root user

sudo nano /etc/ssh/sshd_config
// Для отключения возможности авторизации под root пользователем, внести следующие изменения:
PermitRootLogin no
// Не закрывая текущий терминал, нужно перезапустить службу ssh:
sudo service ssh restart
// С помощью нового терминала нужно убедиться в возможности авторизации под обычным пользователем и в отсутствии возможности авторизации под root пользователем. Только после проверки возможности авторизации можно закрывать начальный терминал.

Adding a User SSH Key

// Ключи должны быть сгенерированы заранее (например, с помощью «puttygen»)
// Далее необходимо создать в домашнем каталоге пользователя каталог «.ssh»
mkdir ~/.ssh
// И ограничить доступ к нему для остальных пользователей, установив соответствующие права на каталог:
chmod 700 ~/.ssh
// Созать файл «authorized_keys», скопировать в него ПУБЛИЧНЫЙ ключ пользователя, после чего файл сохранить и закрыть:
nano ~/.ssh/authorized_keys
// Далее нужно установить на файл с публичным ключом права только на чтение:
chmod 600 ~/.ssh/authorized_keys
// С этого момента для подключения к серверу можно пользоваться ключами ssh, ввод пароля при этом не потребуется.

Disabling the possibility of authorization by login and password

sudo nano /etc/ssh/sshd_config
// Для отключения возможности авторизации по логину и паролю нужно внести следующие изменения:
PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no
// Не закрывая текущий терминал, нужно перезапустить службу ssh:
sudo systemctl reload sshd
// С помощью нового терминала следует убедиться в возможности авторизации с помощью ключа и в отсутствии возможности авторизации по логину и паролю. Только после проверки авторизации можно закрывать начальный терминал.

In the future, ssh authorization is possible only on behalf of a regular user (not root) and only with a key. If you try to authorize as root, the connection will be reset, if you try to authorize using a login and password, the connection will be reset.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question