Como proteger senhas em Shell Script usando GPG

Aprenda como criar scripts shell seguros no Linux sem expor senhas ou credenciais. Use variáveis no .bashrc e criptografia GPG para proteger dados sensíveis.


Senhas em Shell Script no Linux usando .bashrc e GPG

Ao desenvolver scripts shell no Linux, é comum precisar acessar APIs, serviços internos ou plataformas administrativas. Esses scripts geralmente utilizam usuários, senhas ou tokens de autenticação.

Um erro bastante frequente é colocar essas informações diretamente no código do script, o que pode gerar sérios riscos de segurança.

Entre os problemas mais comuns estão:

  • exposição de credenciais em repositórios Git
  • vazamento de dados internos do ambiente
  • dificuldade de rotacionar senhas
  • acesso indevido caso o script seja compartilhado

Uma solução simples e eficiente é separar completamente o código do script das credenciais, utilizando:

  • variáveis globais no .bashrc
  • arquivos criptografados com GPG

Essa abordagem é muito utilizada em ambientes DevOps, automação de infraestrutura e operações de redes.


Estrutura segura para scripts Linux

A arquitetura da solução fica organizada da seguinte forma:

Script Shell
      ↓
Variáveis de ambiente (.bashrc)
      ↓
Arquivo criptografado com GPG

Assim:

  • o script nunca contém credenciais
  • as variáveis ficam centralizadas
  • as senhas permanecem criptografadas no sistema

Criando variáveis globais no .bashrc

O arquivo .bashrc permite definir variáveis de ambiente globais, que ficam disponíveis para qualquer script executado pelo usuário.

Exemplo de configuração:

export API_HOST="api-interna.local"
export API_USER="usuario_api"

export API_PASS="$(gpg --quiet --batch --yes \
--passphrase "8ca71b11-89f7-49a1-a42a-4ab7a816470e" \
--decrypt /secure/api_pass.gpg)"

Nesse exemplo:

VariávelFunção
API_HOSTendereço da API
API_USERusuário de autenticação
API_PASSsenha descriptografada com o TOKEN

Quando o terminal é iniciado, o GPG descriptografa o arquivo e carrega a senha na variável.

Mais a frente explico como foi criado o TOKEN informado.


Criando o arquivo com a senha

Primeiro crie um arquivo contendo somente a senha real.

nano API_PASS

Dentro do arquivo coloque apenas a senha.

senha_super_secreta


Criptografando a senha com GPG

Agora criptografe o arquivo:

gpg -c API_PASS

Ele irá exigir uma senha mestre que será utilizada para exibir a senha original, eu sugiro usar um gerador de UUID para ser utilizado como uma senha mestre, sendo muito confiável e será tratada como um TOKEN para acesso as suas senhas originais. Exemplo: utilize o site https://www.uuidgenerator.net/

8ca71b11-89f7-49a1-a42a-4ab7a816470e

Isso criará o arquivo:

API_PASS.gpg

Durante o processo será solicitado definir uma senha de criptografia (passphrase). Utilize o TOKEN gerado.


Removendo o arquivo com senha em texto

Após a criptografia, remova o arquivo original.

rm API_PASS

Agora apenas o arquivo criptografado permanecerá no sistema.


Utilizando as variáveis no script

Com as variáveis carregadas no .bashrc, o script pode usá-las normalmente:

curl -u "$API_USER:$API_PASS" \
https://$API_HOST/api/v1/status

Note que nenhuma credencial aparece no script.


Benefícios dessa abordagem

Implementar esse modelo traz várias vantagens:

✔ evita vazamento de senhas
✔ permite compartilhar scripts com segurança
✔ facilita rotação de credenciais
✔ centraliza configurações sensíveis
✔ melhora a segurança da automação

Esse método é amplamente utilizado em ambientes de automação Linux e integração com APIs.


Boas práticas adicionais

Para aumentar a segurança:

Restrinja permissões do arquivo criptografado

chmod 600 api_pass.gpg

Restrinja acesso ao .bashrc

chmod 600 ~/.bashrc

Armazene arquivos sensíveis em diretórios protegidos

Exemplo:

/secure/
/root/
/etc/secrets/


Conclusão

Proteger credenciais em scripts Linux é uma prática essencial para qualquer ambiente profissional.

Ao utilizar variáveis de ambiente no .bashrc combinadas com criptografia GPG, é possível manter scripts seguros, reutilizáveis e alinhados com boas práticas de segurança.

Essa abordagem simples ajuda a evitar vazamentos de credenciais e melhora significativamente a segurança da automação em servidores Linux.


Referências

GNU Privacy Guard (GPG)
https://gnupg.org

Bash Reference Manual
https://www.gnu.org/software/bash/manual/

Linux Environment Variables
https://www.redhat.com/sysadmin/linux-environment-variables

Comments are closed