Estou no processo de configurar um servidor em nuvem para executar a seguinte pilha: Ruby, Passenger, Apache; no Ubuntu 10.04 (Lucid Lynx).
No processo de tornar o servidor mais fácil de gerenciar, eu configuro as chaves RSA root
e www-data
para que eu possa ssh
entrar no servidor. O que eu não gostei foi www-data
o .ssh
diretório em /var/www
que está a configuração padrão do apache. Minha preocupação é que, se o apache não estiver configurado corretamente, o .ssh
diretório poderá ser exposto.
Me deparei com a solução para mover o ~/.ssh/authorized_keys
arquivo em um local central, alterando AuthorizedKeysFile
em /etc/ssh/sshd_config
. Isso vem com 2 profissionais: um único local para chaves, e sem ter que se preocupar com uma configuração ruim do apache. O único argumento que consigo pensar é que agora todos os usuários estão disponíveis para login no servidor (claramente uma faca de dois gumes do arquivo de chave central).
Há algo que eu perdi nessa configuração? Eu me expus demais ou isso é uma solução melhor do que authorized_keys
arquivos individuais ?
Sou verde quando se trata de gerenciamento de servidores, mas estou totalmente pronto para ser chamado de mau nome por fazer coisas ruins. : D
fonte
id_rsa
arquivo no~/.ssh
e eles conseguem ler isso)Respostas:
Todos os arquivos de chaves podem ser centralizados no mesmo diretório e não misturados no mesmo arquivo.
Simplesmente configure o
sshd_config
arquivo assim:No seu servidor:
/etc/ssh/authorized_keys/www-data
/etc/ssh/authorized_keys/root
Em relação aos direitos de acesso, essas configurações são aceitas pelo sshd:
/etc/ssh/authorized_keys
pertenceroot:root
e tem o modo 755. Os arquivos de chave pertencemroot:root
e têm o modo 644.Outros modos podem funcionar, mas eu não os testei.
fonte
De um modo geral, eu não faria o que você está sugerindo. Ele quebra suposições comuns (como
~/.ssh/authorized_keys
trabalhar para seus usuários e apresenta problemas que você já mencionou na sua pergunta. Se você observar problemas evidentes antes da implementação, significa que sua solução não é ideal.Em termos de segurança, também acho que é uma TERRÍVEL idéia que todos compartilhem uma conta de serviço: agora é só você e você sabe que é você quem faz as alterações. Em cinco anos, quando você tiver cinco administradores, vai querer saber quem mudou o quê e vasculhar os logs de auditoria para ver quem usou qual chave quando é uma dor real.
É melhor que as pessoas efetuem login como elas mesmas e usem
sudo
algo semelhante para aumentar seus privilégios e fazer o que for necessário.Se você ainda deseja centralizar as chaves SSH, sugiro procurar em um sistema de implantação como o Puppet ou o radmind para gerenciar / distribuir os
authorized_keys
arquivos nos~user/.ssh/
diretórios apropriados (ou hackear uma solução caseira que os coloque no lugar).À medida que você expande para vários servidores, pode procurar no patch da Chave Pública LDAP versões mais antigas do OpenSSH (ou a
AuthorizedKeysCommand
diretiva e um script apropriado na versão mais recente do OpenSSH) para poder centralizar seus usuários e não ter que distribuir as chaves deles em toda a sua rede, mas é provável que esteja muito longe para você.fonte
root
nemwww-data
acessível através de uma chave ssh, está correto?~www-data/.ssh
diretório não é uma coisa terrível (com permissões apropriadas, não é um risco substancial), mas se você for usar~www-data/.ssh
, provavelmente é melhor não ter o seu webroot~www-data
(mova o webroot ouwww-data
o diretório inicial do mesmo). A diferenciação dos usuários é o maior argumento do IMHO - sei se vejojsmith
log, sei que é John Smith. Se eu vir owww-data
logon, preciso cavar mais para descobrir quem era.AuthorizedKeysFile
in . Aqui está um espaço reservado para o diretório inicial. O que o impede de configurá-lo para ou mesmo . Você pode até dar ao usuário respectivo acesso de gravação ao seu arquivo individual (e somente o seu) vincular o arquivo ao local padrão (com ) e não quebrar as suposições acima mencionadas./etc/ssh/sshd_config
%h/.ssh/authorized_keys
%h
/some/folder/ssh_keys_by_user/%h/
/root/ssh_keys/%u
ln -s /root/ssh_keys_by_user/username /home/username/.ssh/authorized_keys