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ável | Função |
|---|---|
| API_HOST | endereço da API |
| API_USER | usuário de autenticação |
| API_PASS | senha 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