Embora não seja prático remover o superusuário, é possível limitar o acesso que o usuário root
tem no interesse de segurança.
Vou incluir alguns trechos, mas copiá-los todos seria uma grande resposta, então vou apenas dar a essência:
The following are four different ways that an administrator can further ensure that root logins are disallowed:
Changing the root shell
To prevent users from logging in directly as root, the system administrator can set the root account's shell to /sbin/nologin in the /etc/passwd file.
Disabling root access using any console device (tty)
To further limit access to the root account, administrators can disable root logins at the console by editing the /etc/securetty file. This file lists all devices the root user is allowed to log into. If the file does not exist at all, the root user can log in through any communication device on the system, whether through the console or a raw network interface. This is dangerous, because a user can log in to their machine as root using Telnet, which transmits the password in plain text over the network.
Disabling root SSH logins
To prevent root logins through the SSH protocol, edit the SSH daemon's configuration file, /etc/ssh/sshd_config, and change the line that reads:
#PermitRootLogin yes
to read as follows:
PermitRootLogin no
Using PAM to limit root access to services
PAM, through the /lib/security/pam_listfile.so module, allows great flexibility in denying specific accounts. The administrator can use this module to reference a list of users who are not allowed to log in. To limit root access to a system service, edit the file for the target service in the /etc/pam.d/ directory and make sure the pam_listfile.so module is required for authentication.
Todas as seções têm mais informações que eu deixei de fora, mas podem colocá-lo em outras leituras caso seja do seu interesse.
SELINUX
selinux
pode ser usado para remover root
privileges em geral, modificando o contexto selinux do serviço / executable / port / etc. Isso está entrando em um tópico enorme, então eu vou ligar o documento do RHEL ao invés de entrar em um monte: link
Para uma restrição de exemplo realmente brutal, execute selinux
em enforcing
e tente: semanage login -a -s user_u root
.
Isso distribuiria as permissões de usuário padrão para o usuário root (supondo que ele seja executado, não tenho certeza, já que não tenho uma máquina a ser bloqueada no momento) e restringi-lo de fazer qualquer "root" "como ações.
Isso, no entanto, pode impedir que init
e vários serviços sejam iniciados, portanto, pode exigir muita outra configuração selinux
para permitir que esses serviços sejam executados como algum outro usuário (que pode ser insanamente seguro e insanamente difícil de manter, dado que comprometer um serviço não daria acesso a outros).