Por que su fazer root em vez de fazer login como root?


33

Ouvi muitas vezes que é melhor su para fazer root do que fazer login diretamente como usuário root (e é claro que as pessoas também dizem que é ainda melhor usar o sudo). Eu realmente nunca entendi por que um é melhor que o outro, insight?


2
Você está pensando em logins ssh ou também na máquina física?
Telemachus

Respostas:


43

A inferência é somente suou sudoquando necessário.

A maioria das tarefas diárias não requer um shell raiz. Portanto, é uma boa prática usar um shell sem privilégios como comportamento padrão e, em seguida, elevar para o root apenas quando você precisar executar tarefas especiais.

Ao fazer isso, você reduz o escopo de erros perigosos (scripts incorretos, curingas extraviados etc.) e vulnerabilidades de todos os aplicativos que você usa. Especialmente aqueles que se conectam à Internet - veja o velho ditado "Não IRC como root" .

sudo é frequentemente recomendado porque permite uma granulação fina e audita o uso desses privilégios.

Ao observar essas práticas, você também poderá desativar os logins raiz remotos. Isso aumenta a barra de entrada para qualquer possível invasor, pois eles precisam comprometer uma conta de usuário comum que fosse membro do grupo "wheel" e, idealmente, autorizada apenas pelas chaves públicas SSH, e depois pela própria conta root.


1
Você pode entender por que o login raiz remoto é uma "vulnerabilidade razoavelmente grande".
Thepocketwade

5
Como o mundo inteiro sabe o nome de usuário ('root'), é apenas uma questão de descobrir a senha. E eles podem fazer isso com força bruta e assumir o controle do seu computador.
Shalom Craimer

2
Outra vantagem do sudo: Registro de comandos executados.
Manuel Faux

Isso é auditoria;)
Dan Carley

1
Embora sudoseja superior, sutambém permite que você use o -msinalizador para manter as variáveis ​​de ambiente iguais em um terminal raiz. Nada me deixa mais maluco do suque torcer um pouco, apenas para fazer algo com ~o nome do diretório e fazê-lo não funcionar.
tj111 28/09/09

27

Você deve desativar o acesso root a partir do controle remoto, para que um invasor não possa comprometer a raiz sem antes comprometer um usuário e depois escalar para raiz. Ativamos o acesso root apenas no console.

Além disso, cria responsabilidade. :)


+1 curto e
direto

15

O principal motivo é criar uma trilha de auditoria. Se você precisar fazer login em um sistema como um usuário comum e depois su, é possível rastrear quem é responsável por determinadas ações.


Depois que alguém executa o su-root, como você determina quais comandos eles executaram? Isso está registrado em algum lugar?
Dobes Vandermeer

10

O sudo também registra automaticamente todos os comandos no syslog e você pode definir os comandos que cada usuário pode usar.


3
Quanto ao registro: Este é o caso de todo comando precedido por 'sudo', mas no caso em que o sudo é usado para elevar a um shell raiz, os comandos são registrados apenas nas áreas tradicionais (especificamente no histórico do shell).
Zenham 16/07/09

2
De fato, sudo vim foo.txtlargar para um shell no vim fornecerá um shell raiz sem o registro regular do sudo.
Ophidian

Ou simplesmente sudo -ipara obter uma sessão interativa ...
Kamil Kisiel

Eu não entendo o problema com o sudo vim foo.txt. Eu corri isso, saí do vim e ainda era eu mesmo, há algo que estou perdendo?
Thepocketwade

você pode "enganar" o sudo para obter um shell digitando sudo su - ou sudo vim e depois entrar em um novo subshell. Mas se você usa o sudo porque deseja ter tudo logado no syslog (centralizado) e sabe que ele também pode ser usado para obter outro subshell, não vejo nada de errado com ele, é apenas um bônus, desde que Eu não dependo apenas disso.
precisa saber é o seguinte

9

Outro bom motivo: ao elevar para o root via sudo, um usuário se autentica com suas próprias credenciais, o que significa que eles não precisam necessariamente receber a senha de root, facilitando o bloqueio quando alguém sai da sua organização.


4

Se você deseja criar uma trilha de auditoria e não deseja ser vítima dos problemas "sudo su -" ou "sudo vim foo.txt" mencionados aqui, você pode usar "sudosh". Distribua o acesso root via sudo, mas faça o único comando permitido para executar "sudosh".

sudosh é um shell de registro e você pode reproduzir toda a sessão do terminal posteriormente, mostrando exatamente o que o usuário viu no terminal.


Isso pressupõe, é claro, que o sudosh esteja disponível no sistema. Acabei de verificar e não o tenho em nenhuma das minhas caixas do Linux.
31920 John Gardeniers

Você também pode usar o novo ksh93 com o log de trilha de auditoria ativado. Verifique este artigo no IBM developerWorks: ibm.com/developerworks/aix/library/au-korn93/…
Mei

Bastante fácil de ignorar, basta executar um script de shell (que você limpa depois). Crie o script com um nome inócuo como um usuário não auditado (ou pesquise-o na sua estação de trabalho), depois sudo e execute-o. Você pode até escondê-lo nomeando 'ls' ou algo assim e colocando-o em $ PATH (alterando $ PATH se necessário) e fazê-lo fazer seu trabalho sujo enquanto invoca / bin / ls para que pareça normal. Limpe depois. O log de auditoria não saberá que / home / anthony / bin costumava conter um 'ls'.
21449 derobert

Sim, não é perfeito; sabemos disso - mas é um site danado melhor que o simples "sudo su -" IMHO. E sim, não é instalado por padrão em nenhum lugar do AFAIK. No entanto, ele roda no Solaris e Linux com bastante facilidade.
Mibus

1

Você deve praticar a segurança em profundidade.

Proibir o acesso root remoto (ou pelo menos o acesso root através de senhas). (se você permitir acesso root via chaves, controle-as com cuidado ou, melhor ainda, use algo como o kerberos que permita a revogação centralizada de chaves).

Eu desativaria o su e usaria o sudo. Dessa forma, os usuários usam chaves (de preferência criptografadas) para acessar o sistema e, em seguida, usam suas senhas apenas para escalar privilégios. Você pode restringir os programas que as pessoas acessam com o sudo, mas principalmente restringe o acesso a quem sabe a senha root.

Em um mundo ideal, você deve poder publicar suas senhas de root na Internet e isso não importaria, mesmo que você desse acesso às pessoas à sua máquina (mas não as colocasse no arquivo / etc / sudoers). Obviamente, você não deve publicar a senha root, mas a idéia é que você proteja seus sistemas com camadas concêntricas de proteção.


0

A idéia é desativar o login raiz e, portanto, não possui uma conta de administrador padrão. Dessa forma, um invasor deve adivinhar o nome de usuário e a senha (e não apenas a senha).


0

Se você estiver usando o root regularmente, suas permissões podem estar erradas ou pode ser necessário conceder direitos sudo ou um novo grupo para r / w / x os arquivos ou diretórios.

Os bons esquemas de permissões são algo que até os usuários antigos do Linux erram ou não percebem o escopo que possuem.

Nem me inicie no que o Ubuntu fez!


-2

Isso impede você de executar o rm -r -f / que acabei de executar há 2 dias (como um usuário sem privilégios, eu pretendia executar o rm -r -f *)


A resposta aceita já continha todas as informações.
Theuni
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.