Eu tenho um script Bash que se autentica automaticamente com um serviço usando meu nome de usuário e senha. As credenciais estão atualmente armazenadas como texto sem formatação no script.
Que precauções devo tomar para armazenar essas credenciais com mais segurança e ainda permitir o acesso ao script?
Pontos de esclarecimento:
- Entendo que, se disponíveis, outros métodos de autenticação devem ser usados. Ainda quero saber o que fazer caso a autenticação por senha seja a única opção.
- Não armazenar a senha de todo não é uma resposta aceitável aqui. Estou perguntando sobre o caso em que o script deve ter acesso autônomo à senha.
Respostas:
Que tipo de serviço? Certos serviços têm outros métodos para autenticar, por exemplo, chaves SSH para SSH em conjunto com o agente SSH.
Gostaria de armazenar a senha separada do script e garantir que todos os componentes do caminho tenham as permissões corretas definidas. Por exemplo, certifique-se de que no caminho
/path/to/file
,/
,/path
e/path/to
são propriedade de um usuário que você confia (root
) e que estes não são editáveis por alguém que não tem permissão para ver seus arquivos. Por fim, as permissões recomendadasfile
são 600 ou 400.Isso
file
poderia ser assim:No seu script, use o código abaixo para importar a variável:
Quanto ao seu script, verifique se ele não contém falhas que podem permitir que invasores executem código no contexto do script (por exemplo, ambiente não controlado que pode ter um
$PATH
conjunto de variáveis arbitrário ou uso inválido de outros arquivos (por exemplo, fornecendo um arquivo gravável em todo o mundo) .Quanto à proteção real da sua senha, você não pode. Ele 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.fonte
Em vez de codificar a senha no arquivo, armazene a senha em um arquivo separado e proteja o arquivo (
chmod 700
ouchmod 500
) para que somente os usuários autorizados possam acessá-lo.Recupere a senha em
cat /dir/to/file/with/.password
vez de ler o arquivo e armazenar o conteúdo em uma variável.fonte
--passphrase-file
opção do gpg .chmod 400
para arquivos (somente leitura). Obviamente, você deve proteger os diretórios principais (700 ou 500 ou até 100, se for paranóico). Observe que 400 (ou 500 para diretórios) é suficiente, outros modos (100) podem ser considerados como segurança pela obscuridade , assim como ocultar o arquivo colocando um ponto na frente do nome.Eu sei que essa é uma pergunta antiga, mas enfrentei esse problema semelhante e usei o chaveiro do Ubuntu para resolvê-lo. Aqui está uma solução no ubuntu 18.04LTS Abra o terminal Escreva,
keyring set {{service}} {{username}}
por exemplo, se você estiver usando isso para o log de senhas da escola:Ele registrará você para obter uma senha, digite a senha. Agora a senha que você digitou está armazenada no chaveiro do Ubuntu.
Para obter essa senha, escreva no terminal:
para usar isso no contexto de um script:
Agora a senha continua com a senha digitada anteriormente.
fonte