Devemos desativar o usuário root?

21

Devemos remover a senha root, desativar o login remoto e basicamente exigir que os administradores usem o sudo para executar ações administrativas?

texto alternativo

jldugger
fonte

Respostas:

16

Todos os meus servidores têm a conta raiz desativada ( sp_pwdpdefinida como *). Isso é necessário sudopara todo acesso root. [1] O objetivo disso é ter todas as atividades de superusuário auditadas, para que as pessoas possam ver o que foi feito no sistema.

Para uma opção mais explícita, você pode sudogravar em um arquivo de log (ao contrário de syslog) e torná-lo apenas como anexo (usando chattrno Linux ou chflagsno BSD). Dessa forma, ninguém pode editar a auditoria posteriormente.

[1] Eu também tenho uma política de não executar um shell raiz ou fazer escape de shell de um processo raiz. (Não há problema em usar sudo sh -c '...'pipelines ou redirecionamentos.)

Chris Jester-Young
fonte
3
"Também não há conchas!" Uhm, você sabe quantos programas possuem um comando "drop to shell"? Mesmo antes de você começar a olhar para controle de trabalho shell ...
womble
Estou falando de "no shell" como uma política, não como uma opção sudo. (sudo tem uma opção noexec, mas obviamente que não é estanque a menos que você restringir os programas específicos que um usuário é capaz de executar.)
Chris Jester-Young
É possível configurar o sudo para que "sudo -s" não possa ser usado? Eu usei apenas sudoers para configurar comandos individuais.
@ Graham: Você pode. No entanto, como você pode ver nos comentários acima, isso não para nada, se seus usuários puderem executar alguma coisa. A única solução estanque é uma abordagem de lista de permissões, na qual você lista um programa específico que os usuários podem executar e todos devem ser vinculados dinamicamente (para que a opção "noexec" possa funcionar).
31520 Chris Jester-Young 14 de
Como política em que você confia nos administradores, isso é bom. Você pode ver quais comandos as pessoas executam, o que pode ser realmente útil ao tentar descobrir o que mudou.
2129 Hamish Downer
15

Eu recomendo enfaticamente contra a desativação do usuário root. Desabilite ou restrinja logins raiz (via securetty e sshd_config e via PAM e via o que você possui) Se o seu sistema permitir, limite os privilégios de root ou divida a função raiz (semelhante à maneira como o RSBAC faz isso). Mas, por favor , faça não desabilite a conta root removendo a senha, caso contrário, será impossível fazer login no sistema via sulogin. suloginé usado por todos os initscripts que eu conheço em caso de erros graves relatados pelo fsck - e isso significa que você será bloqueado para fora do sistema se o sistema de arquivos raiz for corrompido.

Para esclarecer: "desativando a conta root removendo a senha", quero dizer os vários mecanismos que terminam com a! ou um * no campo de senha de / etc / shadow ou similar. Não quero dizer "altere o mecanismo de login raiz para não ser solicitada uma senha".

Mihai Limbăşan
fonte
Isso é um problema em sistemas como o Ubuntu que nunca definem uma senha root? Parece que sou capaz de executar o "sudo sulogin", mas talvez não compreenda um aspecto crítico.
Jldugger #
Infelizmente, não estou familiarizado com a maneira como o Ubuntu lida com raiz. Mas se você é capaz de executar o "sudo sulogin" e obter um shell raiz sem ser solicitada uma senha root, então não, isso não é um problema, pois é possível que o mesmo mecanismo seja aplicado na inicialização. Você pode tentar procurar grepping por sulogin através dos initscripts para verificar quando e como é chamado.
Mihai Limbăşan
1
O Ubuntu não usa sulogin. Se você entra no modo de usuário único, obtém um shell raiz imediatamente. No entanto, leia meu comentário (no meu post) para ver por que isso não é um problema, na maioria dos casos.
4911 Chris Jester-Young
Além disso, há alegações de que ter suou sudoem seu sistema disponível para os usuários significa mais riscos à segurança que você pode evitar se tiver apenas usuários root dedicados. Essa é uma posição defendida pelos autores da distribuição segura Owl (e pelo designer Solar entre eles) - unix.stackexchange.com/questions/8581/… tenta apresentar sua posição com referências.
imz - Ivan Zakharyaschev
Acabei de ter este problema: bloqueei meu usuário root e um fsck foi forçado devido a uma reinicialização completa. Felizmente, eu poderia inicializar meu Linux com defeito com a fastbootopção, desbloquear a conta root e reiniciar para finalmente rodar fsckmanualmente.
tommyd
3

Eu tenho a conta root ativada em todos os meus servidores. Todos os administradores têm seu próprio usuário e precisam fazer login através dele. De lá, eles mudam para a raiz. (o ssh raiz está desativado)

Mantenha a contagem do administrador baixa. Somente as pessoas que realmente precisam de acesso root nesse servidor têm a senha.

Eu não sou fã de sudo. É muito fácil fazer 'sudo bash' para um shell raiz. Estou ciente de que isso pode ser desativado, mas por que se preocupar? Apenas limite os usuários que podem executar tarefas de administrador e conversar entre si. Nós temos uma política para não deixar os terminais raiz abrirem sem supervisão. Então é log in, su, faça o trabalho, logout.

Nota: Eu trabalho em uma empresa relativamente pequena (funcionários com 50 e poucos anos) e contamos com apenas 2 administradores de meio período (1 windows / 1 linux). Essa maneira de fazer as coisas pode não ser a melhor quando você tem ordens de magnitude em mais usuários. Eu pessoalmente ainda não usaria o sudo. Existem outras maneiras de registrar a atividade raiz.

Gert M
fonte
Se você quiser o shell raiz a partir de um console, basta executar 'sudo -i' em vez de abri-lo no sudo bash. Pessoalmente, eu realmente não gosto da idéia de fazer login diretamente como usuário root, pois é muito arriscado para navegação maliciosa (ou seja, deixar acidentalmente o computador desbloqueado com o shell raiz aberto).
Spoike
Você perde o registro / auditoria com isso, no entanto. Faça com que todos usem o sudo e proíba as pessoas de fazerem o sudo bash ou sudo -i ou sudo -s com a política corporativa. Isso fornece uma trilha de auditoria e, se você estiver enviando todos os seus logs para um host de log central, é fácil verificar se as pessoas estão seguindo as políticas.
Christopher Cashell
Essa é a abordagem adotada e defendida pelos autores da distribuição segura do Owl (e pelo designer Solar entre eles) - unix.stackexchange.com/questions/8581/… tenta apresentar sua posição com referências.
Imz - Ivan Zakharyaschev
2

Desabilitar a senha do root é uma "boa idéia" falsa. No dia em que você precisar, você realmente precisará. (de acordo com a sua configuração, pode ser necessário fazer login no modo de usuário único, por exemplo)

Desativar o login remoto raiz pode ser relevante, mas apenas se você puder fazer logon localmente.

E sim, o sudo deve ser instalado em todos os seus servidores. É útil e fácil de configurar. Por que você gostaria de não usá-lo?

Benoit
fonte
E se a inicialização no modo de usuário único for uma opção do grub?
Jldugger # 29/09
Qual é o objetivo de desativar a conta raiz? O que você fará se seu freio for seu binário ou configuração do sudo (ou qualquer outra ferramenta que você usar)?
Benoit
Disabling root remote login might be relevant but only if you are able to log on locally.Isso é flagrantemente falso. Você pode fazer login remotamente com qualquer conta; desativar o login remoto raiz não o limita ao acesso local.
Dan
2

Eu apenas desabilito o acesso SSH para root e exijo que os usuários (geralmente apenas desenvolvedores) usem chaves ssh. Existem muitos ataques de dicionário e alterar a porta SSH não é uma opção para nós.

Dessa forma, você não precisa confiar na capacidade de ninguém para escrever uma boa senha. Uma vez dentro, apenas os administradores têm permissões para o sudo.

pablasso
fonte
Alterar a porta SSH é inútil de qualquer maneira. Um simples portscan o revela facilmente. Quando eu telnet para a porta 22 na minha máquina, eu recebo SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1.2
Matt Simmons
@MattSimmons Sim, mas a maioria dos ataques de dicionário é automatizada e muito elementar. Eles não se preocupam com a varredura de portas; eles tentam se conectar a endereços IP aleatórios na porta 22 e, se atingirem o tempo limite, passam para o próximo IP da lista. Não é uma medida de segurança, apenas ajuda a se livrar dos ataques automatizados da porta 22. Obviamente, um ataque direcionado é um jogo totalmente diferente.
Dan
2

Eu sei que esse tópico é realmente antigo, mas existem algumas falhas importantes na lógica dos artigos vinculados e estou me sentindo "rant'ie" - o sudo permite a lista de permissões e a lista negra. Não apenas preto, como eles especificam no artigo vinculado - Isso ignora a idéia de AAA (Autenticação, Autorização e Auditoria) - su & sudo permite autenticação e prestação de contas graduadas.

Cenário 1 Um administrador introduz acidentalmente algum código não autorizado em um sistema, conectado como root, o código tem acesso completo e o administrador pode nunca saber o que aconteceu. Pelo menos com logins classificados (por exemplo, su / sudo), o administrador será solicitado a se autenticar se o código não autorizado tentar usar direitos elevados ... Se ele não elevar, ficará restrito aos direitos dos usuários, o que resultará em danos mínimos.

Cenário 2 Um administrador não autorizado deseja obter informações / fazer uma alteração. Eles se conectam ao console (acesso físico ao console, acesso ao console HP iLo / similar ou vGuest), efetuam login como root e fazem o que desejam. A menos que exista um cartão de acesso / conta nomeado usado para obter acesso ao console, provavelmente não há muita trilha de auditoria.

  1. Certifique-se de que eles realmente são quem eles dizem que são. O roubo de identidade não é o problema, é a verificação de identidade.
  2. Verifique sua autorização, apenas dê a eles o que eles precisam naquele momento. A autorização graduada permite elevar quando eles precisam.
  3. Faça uma auditoria de tudo, tenha um registro para saber quem, fez o que, quando e onde. De preferência por que também
Mike
fonte
1

Você deve exigir que todos usem o sudo para todos os comandos raiz como uma política. Nunca há uma razão para executar o "sudo bash" ou algo semelhante, é apenas por conveniência, devido à ignorância ou para cobrir as faixas.

Se você desabilitar logins diretamente na conta raiz, prejudicará sua capacidade de corrigir o sistema quando houver problemas graves.

Se você não conseguir convencer seus administradores a fazer login como eles mesmos e executar o sudo para todos os comandos executados como root, e não quebrá-lo em um shell, você terá sérios problemas para os quais não há solução técnica.

Carlito
fonte
1

Os autores da distribuição segura do Owl (e designer Solar) têm um ponto de vista cuidadosamente justificado oposto; consulte, por exemplo, a resposta /unix/8581/which-is-the-safest-way-to-get-root-privileges-sudo-su-or-login/8660#8660 para uma apresentação de suas reivindicações. O problema de auditar as ações do superusuário (qual pessoa fez o que) também é abordado em seu ponto de vista (basicamente, a solução é ter vários usuários raiz com nomes diferentes).

imz - Ivan Zakharyaschev
fonte