Sim, este é um dos problemas com as chaves SSH sem senha. Se você armazenar uma chave privada no servidor A que permita a conexão com o servidor B, obter acesso ao servidor A estará efetivamente obtendo acesso ao servidor B. (O contrário não é verdadeiro - obter acesso ao servidor B não resultaria em uma comprometimento imediato do servidor A, supondo que você também não tenha as chaves SSH configuradas para permitir logins sem senha nessa direção.
Existem algumas coisas que você pode fazer para atenuar isso:
- Se o processo não precisar ser totalmente automatizado, adicione uma senha às suas chaves SSH. (Isso provavelmente não funcionará para você, pois você nota que é para backup)
- Para logins sem senha em sua própria conta em várias máquinas, recomendo criar uma chave com senha para cada máquina em que você digita fisicamente e use um agente SSH para armazenar a chave na memória enquanto você a usa. O encaminhamento de agente deve permitir que você "salte" de host em host sem criar chaves em cada host remoto.
- Para chaves SSH automatizadas e sem senha, recomendo restringir os comandos que a chave pode executar. No seu
authorized_keys
arquivo, prefixe cada chave com:
command="<allowed command line here>",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty
Há 8 ou 9 anos, trabalhei em um ambiente de usuário compartilhado com centenas de usuários locais, e os logons baseados em chave SSH foram desativados porque não havia como impor políticas de senha nas chaves. Enquanto você estiver controlando o cenário completamente, hoje em dia as chaves SSH são definitivamente melhores do que apenas usar senhas.
Em qualquer ambiente que eu tenha controle, sempre fui um defensor real do privilégio mínimo possível para as contas de serviço.
Nesse caso, sugiro garantir que a conta de usuário no servidor remoto tenha permissão para executar apenas um pequeno conjunto de executáveis bem definido. Você pode usar várias contas no lado remoto e sudo para fazer isso.
Mesmo nesse caso, você ainda está sujeito aos erros de escalação de privilégios locais; portanto, seja meticuloso e acompanhe os erros de segurança.
fonte