Quais são os benefícios reais de atribuir privilégios sudo a um usuário em vez de usar root?

25

Sou bastante novo na administração de servidores e já vi muitos sites recomendando atribuir privilégios sudo a um usuário criado pelo usuário root e fornecendo ao usuário root uma senha incrivelmente longa para aprimoramento de segurança.

Se o usuário recém-criado puder executar as mesmas funções que um usuário root, no entanto, qual é o benefício real de fazer isso?

JM4
fonte
7
O sudoer não pode fazer tudo o que o root pode, apenas o que o root permite ao sudoer, e o sudoer ainda precisa sudo o comando. Por fim, os sudoers sudo as coisas como sua própria conta de usuário, primeiro o que significa que eles não precisam fazer login como root e, em segundo lugar, permitindo que você veja quem escondeu algo.
Keiths

Respostas:

48

Existem vários benefícios em usar sudoa entrega da senha root. Em nenhuma ordem particular:

  • Você não está fornecendo sua senha de root
    Como regra geral, se alguém deixar sua empresa e eles souberem a (s) senha (s) de root, agora você precisará alterar essas senhas em todos os lugares. Com o gerenciamento adequado da configuração, isso é um pequeno aborrecimento. Sem isso, é uma tarefa enorme.

  • Você não está entregando as chaves do reino,
    sudo permitindo especificar uma lista restrita de comandos que os usuários podem executar; portanto, se você decidir que Alice precisa apenas da capacidade de parar e iniciar o Apache, mas Bob precisa de direitos de root completos, você pode definir eles de acordo.

  • Você pode gerenciar a autorização com sudo suporte central à configuração do LDAP, o que significa que todos os sistemas da sua empresa podem consultar um servidor LDAP central para determinar quem tem permissão para fazer o que.
    Precisa autorizar (ou desautorizar) alguém? Altere a configuração dos sudoers no LDAP e todos os seus sistemas são atualizados de uma só vez.

  • Há uma trilha de auditoria
    Com exceção de usuários que têm permissão para fazer sudo su -, sudo shou algo equivalente, sudoirá produzir uma trilha de auditoria de que corria usuário o que comandos.
    (Ele também produzirá uma lista das pessoas que deram a si mesmas um shell raiz não registrado, para que você possa apontar o dedo para elas e assobiar em desaprovação.)

  • sudoé bom para mais do que apenas raiz concentrados todos no sudocomo uma maneira de fazer coisas como o su peruser, mas isso não é tudo o que é bom para.
    Digamos que Alice seja responsável por uma compilação de software específica, mas Bob também poderá executar o script de compilação. Você pode fornecer a Bob uma entrada em sudoers que permite executar o script de construção como usuário de Alice. (Sim, claro, existem maneiras muito melhores de lidar com esse caso em particular, mas o princípio de Let user A run a program as user Bpode ser útil ...).
    Você também obtém os mesmos benefícios da trilha de auditoria que mencionei acima quando faz isso ...

voretaq7
fonte
1
Resposta muito útil - se eu souber (e quero dizer com 100% de certeza) que serei o único a gerenciar um único servidor, você vê muitos benefícios em atribuir privilégios sudo a outro usuário (que seria eu mesmo assim) fora de me impedir de estragar alguma coisa?
JM4
3
@ Consistência JM4 e boas práticas para um dia no futuro, quando você estiver trabalhando em um ambiente maior. Do ponto de vista prático, você nunca deve efetuar login como root diretamente, a menos que esteja no console físico consertando algo que é regado com facilidade, então sudoversus sué uma distinção acadêmica - você terá que pular um aro ou outro. Usar sudooferece a você a chance de exercitar o princípio do mínimo de privilégios (meu último ponto) onde for prático, e isso é sempre algo a considerar seriamente.
voretaq7
2
Além disso, use o visudo para editar seu arquivo sudoers.
23630 Justin Dearing
3
Observe que muitos comandos interativos permitirão que os usuários ignorem a trilha de auditoria. Por exemplo, qualquer usuário que sudo vipuder :! bashuma vez dentro do vi.
Dietrich Epp
4
@DietrichEpp A NOEXECtag ajuda nesse caso.
Shane Madden
17

A principal diferença é que os usuários se autenticam sudousando sua própria senha, enquanto que com suou login root direto a senha root é usada.

Isso significa que você não precisa compartilhar a senha de root com todos , e que, se precisar desativar o acesso root de um ou dois usuários no futuro, poderá desativá-lo para eles, em vez de precisar alterar a senha de root. senha root.

sudotambém é capaz de limitar quais comandos cada usuário pode executar como root, para que usuários específicos possam ter acesso apenas às tarefas que precisam executar, se não exigirem acesso root completo.

Michael Hampton
fonte
1
obrigado pela ajuda. Vejo o benefício do seu ponto de vista, mas também observei realmente um usuário básico para o usuário root como um ponto de autenticação duplo, pois desabilitei o login do usuário root no ssh no meu servidor.
JM4
4

Além das respostas dadas, que são válidas, não esqueça que um usuário logado como root pode potencialmente interromper o sistema a cada comando. Se você forçá-los a digitar sudo antes de fazer algo potencialmente perigoso, pelo menos, você os informa que eles precisam checar novamente antes de executar um comando específico.

Gyin
fonte
2

Sim, de fato - de uma perspectiva de controle e registro, o sudo é muito melhor.

Por exemplo - se você processa o único evento capturado nos logs, está processando. Qualquer coisa depois disso vai como raiz. E se você já olhou os logs no Unix / Linux, sabe que o root faz muita coisa.

Por outro lado, o Sudo registra praticamente tudo como o usuário de origem.

kd1s
fonte
0

O uso do sudo dificulta o acesso de um usuário mal-intencionado a um sistema. Quando há uma conta raiz desbloqueada, um usuário mal-intencionado sabe o nome de usuário da conta que deseja quebrar antes de iniciar. Quando a conta raiz está bloqueada, o usuário precisa determinar o nome de usuário e a senha para invadir um sistema.

Prof McAnthony
fonte