Como Armazenar Login e Senha com Segurança em Shell Scripts

Quando criamos automações com Shell Scripts, muitas vezes precisamos armazenar credenciais, como login e senha, para acessar APIs, bancos de dados ou sistemas remotos. Entretanto, deixar essas informações expostas no código pode representar um grande risco de segurança. Neste artigo, vou apresentar as melhores práticas para proteger suas credenciais em scripts Shell.

Por que evitar armazenar credenciais diretamente no código?

Se você incluir login e senha diretamente no script, qualquer pessoa que tiver acesso ao arquivo poderá visualizar suas credenciais. Além disso, se o script for armazenado em um repositório Git, as credenciais podem ser expostas publicamente caso o repositório seja comprometido.

Para evitar esses riscos, a melhor estratégia é criptografar as credenciais e usá-las dinamicamente no script. Vamos explorar algumas abordagens seguras.


1️⃣ Usando GPG para Armazenamento Seguro

O GPG (GNU Privacy Guard) é uma excelente ferramenta para criptografar senhas de forma segura.

🔹 Passo 1: Criptografando a Senha

Antes de executar o script, primeiro precisamos criptografar a senha e armazená-la em um arquivo protegido:

echo "MinhaSenhaSecreta" | gpg --symmetric --cipher-algo AES256 --output senha.gpg

Esse comando pedirá que você defina uma senha para criptografar a informação. O arquivo gerado (senha.gpg) conterá a senha protegida.

Para aumentar a segurança, limite as permissões do arquivo:

chmod 600 senha.gpg

🔹 Passo 2: Recuperando a Senha no Script

Agora, dentro do seu Shell Script, podemos descriptografar a senha dinamicamente:

#!/bin/bash

LOGIN="meu_usuario"
SENHA=$(gpg --decrypt senha.gpg 2>/dev/null)

echo "Autenticando..."
curl -u "$LOGIN:$SENHA" "https://meuservico.com/api/login"

Nota: O gpg pedirá a senha de descriptografia durante a execução. Se quiser evitar isso, use um agente GPG.


2️⃣ Usando OpenSSL para Criptografar a Senha

Outra alternativa segura é utilizar o OpenSSL para criptografar as credenciais.

🔹 Passo 1: Criptografando a Senha

echo -n "MinhaSenhaSecreta" | openssl enc -aes-256-cbc -pbkdf2 -salt -base64 -pass pass:"ChaveSecreta" > senha.enc

🔹 Passo 2: Recuperando a Senha no Script

#!/bin/bash

LOGIN="meu_usuario"
SENHA=$(openssl enc -aes-256-cbc -pbkdf2 -salt -base64 -d -pass pass:"ChaveSecreta" < senha.enc)

echo "Autenticando..."
curl -u "$LOGIN:$SENHA" "https://meuservico.com/api/login"

Essa abordagem permite armazenar credenciais de forma segura, mas é fundamental proteger o arquivo senha.enc com permissões restritivas.


3️⃣ Usando Variáveis de Ambiente

Se não quiser armazenar credenciais em arquivos, uma opção mais simples é utilizar variáveis de ambiente:

🔹 Definir as credenciais antes de rodar o script

export MEU_LOGIN="meu_usuario"
export MINHA_SENHA="MinhaSenhaSecreta"

🔹 No script, utilizar as variáveis

#!/bin/bash

LOGIN="$MEU_LOGIN"
SENHA="$MINHA_SENHA"

echo "Autenticando..."
curl -u "$LOGIN:$SENHA" "https://meuservico.com/api/login"

Atenção: Variáveis de ambiente podem ser expostas caso um usuário mal-intencionado liste os processos em execução.


Conclusão

Se precisar armazenar credenciais em um Shell Script, siga estas boas práticas:

Mais seguro: GPG para criptografia de senhas. ✅ Boa segurança: OpenSSL para armazenar credenciais protegidas. ✅ Alternativa prática: Variáveis de ambiente, com risco reduzido.

Se o nível de segurança exigido for ainda maior, considere usar gerenciadores de segredos como HashiCorp Vault, AWS Secrets Manager ou Azure Key Vault.

CATEGORIES:

Software Livre

Comments are closed