Qual é a maneira menos insegura de armazenar uma senha usada por um script?

12

Eu tenho um script Bash que autentica automaticamente com um serviço usando meu nome de usuário e senha. As credenciais são atualmente armazenadas como texto simples no script.

Que precauções devo tomar para armazenar de forma mais segura essas credenciais enquanto ainda permite o acesso ao script?

Pontos de esclarecimento:

  • Eu entendo que, se disponível, outros métodos de autenticação devem ser usados. Eu ainda quero saber o que fazer no caso de a autenticação por senha ser a única opção.
  • Não armazenar a senha não é uma resposta aceitável aqui. Estou perguntando sobre o caso em que o script deve ter acesso autônomo à senha.
por ændrük 07.07.2011 / 21:00

2 respostas

8

Que tipo de serviço? Determinados serviços têm outros métodos para autenticar, por ex. Chaves SSH para SSH em conjunto com o agente SSH.

Eu armazenaria a senha separada do script e garantiria que todos os componentes do caminho tivessem as permissões corretas definidas. Por exemplo, certifique-se de que no caminho /path/to/file , / , /path e /path/to sejam de propriedade de um usuário em quem você confia ( root ) e que eles não possam ser gravados por alguém que não possa ver seu arquivos. Finalmente, as permissões recomendadas para file são 600 ou 400.

Esse file poderia ser assim:

PASSWORD='something that you cannot remember'

No seu script, use o código abaixo para importar a variável:

. /path/to/file

Quanto ao seu script, certifique-se de que ele não contenha buracos que possam permitir que invasores executem código no contexto de script (por exemplo, ambiente não controlado que pode ter um conjunto de variáveis arbitrárias $PATH ou uso inválido de outros arquivos um arquivo gravável do mundo).

Quanto à proteção real da sua senha, você não pode. Deve estar disponível de alguma forma para o outro serviço. Como alternativa, você pode criptografar o arquivo / script que contém a senha usando openssl ou gpg , portanto, é necessário inserir uma senha antes que as credenciais sejam desbloqueadas. Isso é especialmente útil se a senha do seu serviço for difícil de lembrar.

    
por Lekensteyn 07.07.2011 / 21:29
13

Em vez de codificar a senha no arquivo, armazene a senha em um arquivo separado e proteja o arquivo ( chmod 700 ou chmod 500 ) para que apenas os usuários autorizados possam acessá-lo.

Recupere a senha com cat /dir/to/file/with/.password em vez de ler o arquivo e armazenar o conteúdo dele em uma variável.

    
por Rinzwind 07.07.2011 / 21:22