
Temos alguns clusters em execução na AWS (HAProxy/Solr, PGPool/PostgreSQL) e configuramos scripts para permitir que novas instâncias escravas sejam incluídas automaticamente nos clusters, atualizando seus IPs para arquivos de configuração mantidos no S3, em seguida, faça SSHing para a instância mestre para expulsá-los para baixar a configuração revisada e reiniciar o serviço. Está tudo funcionando bem, mas nos testes estamos usando nosso master pem para SSH, o que significa que ele precisa ser armazenado em uma instância. Não é bom.
Quero um usuário não root que possa usar um par de chaves AWS que tenha acesso sudo para executar os scripts download-config-and-restart, mas nada mais. rbash parece ser o caminho a seguir, mas entendo que isso pode ser inseguro, a menos que seja configurado corretamente.
Então, quais falhas de segurança existem nesta abordagem:
- Novo par de chaves AWS criado para user.pem (não chamado de 'usuário')
- Novo usuário nas instâncias: usuário
- A chave pública do usuário está em ~user/.ssh/authorized_keys (obtida criando uma nova instância com user.pem e copiando-a de /root/.ssh/authorized_keys)
- A chave privada do usuário está em ~user/.ssh/user.pem
- 'user' tem shell de login de /home/user/bin/rbash
- ~user/bin/ contém links simbólicos para /bin/rbash e /usr/bin/sudo
- /etc/sudoers possui a entrada "user ALL=(root) NOPASSWD: [caminho para scripts]
- ~user/.bashrc define PATH apenas para /home/user/bin/
- ~user/.inputrc tem 'ativado a conclusão da desativação' para evitar tabulação dupla de 'sudo /' para encontrar caminhos.
- ~user/ -R pertence ao root com acesso somente leitura ao usuário, exceto ~user/.ssh que tem acesso de gravação para o usuário (para escrever Known_hosts) e ~user/bin/* que são +x
- A comunicação entre instâncias usa 'ssh -o StrictHostKeyChecking=no -i ~user/.ssh/user.pem user@[host] sudo [scriptname]'
Qualquer ideia será bem-vinda.
Marca...
Responder1
Ok, nenhuma resposta dizendo que isso está horrivelmente exposto de alguma forma, exceto pelo fato de que se alguém entrar no login do usuário, obterá a chave PEM do usuário. O que não deveria deixá-los chegar a nenhum outro lugar*.
Ele está trabalhando com a abordagem acima.
*Advertências usuais se aplicam