Como usar a senha criptografada no shell script AIX

3

Eu escrevi um script de shell que se conectará com o banco de dados para executar algumas operações

Este é o meu código de amostra

#!/usr/bin/ksh
. /home/ram/.profile

sqlplus username/pwd@TNS<<EOF
select sysdate from dual;
exit;
EOF

Estou usando este código em AIX system, quero que o pwd seja criptografado.

Existe algum comando no shell, ouvi o comando crypt ter alguns problemas de segurança

Programas para quebrar criptografia (1) criptografia estão amplamente disponíveis. O Crypt Breaker's Workbench de Bob Baldwin, [2] que foi escrito em 1984-1985, é uma ferramenta interativa que fornece suposições sucessivas de texto plano que devem ser corrigidas pelo usuário. O unixcrypt-breaker [3] de Peter Selinger usa um modelo estatístico simples para adivinhar textos planos plausíveis e não requer interação do usuário. (fonte- wikipedia ).

Mesmo que eu tenha tentado o comando crypt no meu AIX, mas ele gera um erro

[shell-ksh]$uname    
AIX
[shell-ksh]$crypt
ksh: crypt: command not found
[shell-ksh]$echo $SHELL
/usr/bin/ksh

Eu gostaria de saber sobre qualquer método seguro para criptografar a senha no shell?

    
por Jeyanthinath 24.03.2014 / 12:24

3 respostas

1

Em vez de codificar a senha em seu script de shell, você pode usar o oracle password repository para usar a senha em seu script de shell.

Esta ferramenta usa um arquivo simples para armazenar as senhas criptografadas. Você pode proteger esse arquivo para torná-lo não acessível para outras pessoas. A ferramenta pode ser encontrada aqui . Você pode ver as etapas de instalação desta ferramenta em aqui .

    
por 24.03.2014 / 17:45
1

Assumindo que user e pass estão armazenados em user.txt e pass.txt

Criptografar com:

$ openssl aes-256-cbc -salt -in user.txt -out user.txt.enc -pass file:pass.txt

Descriptografar com:

$ openssl aes-256-cbc -d -salt -in user.txt.enc -out user.txt.dec -pass file:pass.txt

Para ter uma criptografia mais segura, você pode tentar usar seu próprio sal complexo com -S "your complex string" . No entanto, isso pode ser suficiente para a maioria dos usos.

    
por 24.03.2014 / 19:02
0

Você pode usar um túnel SSH . Você pode configurar o banco de dados para escutar em uma porta local e permitir que um usuário se conecte sem uma senha nessa porta (rejeite todas as conexões diferentes de 127.0.0.1 em uma interface específica) e use o SSH para negociar um túnel para essa porta. Em seguida, você usa a autenticação de certificado para se conectar ao SSH, isso é mais difícil de falsificar e não há senhas codificadas. Se esse script é algo que deve operar em um cron job, ele pode ser executado como uma conta de serviço que é executada com um shell nologin.

Qual é a sua preocupação nesse ponto é o gerenciamento de chaves SSH e há muitas ferramentas para ajudar com / a>. As únicas pessoas que podem acessar a chave privada localmente são os usuários com acesso root e, nesse caso, o armazenamento de senha criptografada também não é seguro para eles.

Outro benefício é que o script pode ser colocado sob controle de versão remota e a autenticação é deixada como um detalhe de implementação, não algo que pode ser extraído do script caso o código vaze além da máquina na qual ele foi implementado.

Alguns bancos de dados já suportam a autenticação de certificado (Postgresql, por exemplo), mas o uso do túnel SSH funcionaria para qualquer banco de dados que tivesse um cliente de linha de comando. Eu usei isso para backups de script do MySQL e Postgresql, funciona como um encanto.

    
por 24.03.2014 / 19:32