Qual é a melhor solução para gerenciar a senha root de milhares de servidores

12

Sou administrador do sistema. No ambiente de produção, preciso gerenciar milhares de servidores. Meus colegas e eu usamos um servidor de gerenciamento central e distribuímos sua chave pública por outros servidores. Portanto, podemos usar esse servidor de gerenciamento para ssh para outros servidores.

Às vezes, precisamos usar a senha root, por exemplo, quando o servidor está inoperante, precisamos usar o iLO para determinar o motivo.

Atualmente, usamos uma senha root compartilhada. Não é seguro. Também observei algumas soluções de servidor único como OPIE(Senhas descartáveis ​​em tudo), mas como temos muitos servidores, essa não é uma idéia muito boa.

EDITAR:

O que eu quero da solução de gerenciamento de senhas é:

  1. Como deve ser seguro, a Senha de uso único é uma ótima solução.
  2. A senha pode ser facilmente digitada, às vezes precisamos conectar o monitor ao servidor ou com o iLO, como mencionei acima.
  3. A solução deve funcionar mesmo que o servidor esteja offline (sem nenhuma conexão de rede)

Portanto, não é uma boa idéia definir a senha raiz como uma string longa e aleatória, embora seja gerada a partir de algum comando conhecido (como openssl passwd). É difícil lembrar, e às vezes é difícil gerar (sem meu laptop por perto)

yegle
fonte
1
Você já está usando um sistema de gerenciamento de configuração como o fantoche? O que você está usando?
Zoredache
Puppet ++ para isso.
Tom O'Connor
Nós usa cfengine :-)
yegle

Respostas:

5

Você pode usar o Puppet para enviar a alteração de senha a todos os seus servidores. Você definiria rootusando o usertipo da seguinte maneira:

    user { 'root':
            ensure => present,
            password => '$1$blablah$blahblahblahblah',
    }

Para gerar a senha criptografada:

openssl passwd -1 -salt "blah"

Eu sugiro que talvez a mude todo mês mais ou menos - talvez usando um esquema que seus SAs memorizem. Você também pode distribuí-lo por um método seguro ou colocá-lo em um cofre.

Belmin Fernandez
fonte
3

Você sempre pode definir uma senha desativada. Isso impediria qualquer acesso de rede ao root e, se você inicializar no modo de usuário único, a maioria das distribuições inicializará diretamente em um shell.

Provavelmente, esse não é um problema de segurança tão grande quanto você imagina. É trivial ignorar a senha root de qualquer maneira, a menos que você tenha bloqueado o grub com uma senha, praticamente qualquer um poderia simplesmente dizer ao grub para iniciar o bash em vez do initrd.

Claro que isso pode significar que você deve descobrir como proteger com senha o seu carregador de inicialização.

Zoredache
fonte
0

Você pode usar senhas únicas com um gerenciamento central. Eu sei que isso não se encaixa em "deve funcionar quando o eth estiver offline e o servidor acessado com o iLO".

Enfim: A questão é: com que frequência o servidor está offline.

Então você pode pensar na seguinte configuração:

Use uma solução OTP gerenciada centralmente como privacyidea ( http://www.privacyidea.org ). Você pode atribuir vários tokens OTP diferentes ao usuário raiz. Cada token possui um PIN OTP diferente e é um dispositivo diferente. Assim, todos os seus colegas podem efetuar login como root do usuário, mas no log de auditoria, você verá qual token autenticado, para que você possa saber qual colega fez login e em que momento.

Nos servidores, você precisa configurar o pam_radius para passar a solicitação de autenticação ao RADIUS e privacyIDEA.

Vadio. Agora seu servidor fica offline. Nesse caso, você deve jogar com sua pilha de pam. Eu poderia pensar em algo como:

auth sufficient pam_unix.so
auth required pam_radius.so use_first_pass

Para que você possa fazer login com uma senha fixa offline, caso contrário, a senha será entregue a pam_radius e será validada como OTP contra privacyIDEA.

Veja este tutorial em https://www.howtoforge.com/manage-two-factor-authentication-in-your-serverfarm-with-privacyidea .

cornelinux
fonte