Pergunta

Eu estou trabalhando em script Perl que usa Esperar para o login via telnet a máquinas remotas (don 't perguntar, telnet uso gotta). Eu também faço Perforce P4 operações de login como necessário e uso esperar tubulação nas senhas corretas. Por agora eu acabei de ler senhas de variável de ambiente texto claro, ou seja, export PASSWORD=password, que sei que há segurança boa sábio.

Qual é a melhor maneira de armazenar senhas para scripts como estes que precisam de uma grande quantidade de senhas para vários sistemas? Criptografada em um arquivo de texto de alguma forma? Ou algo mais?

Tenha em mente que não pode facilmente mudar os sistemas existentes, como, por exemplo, eu realmente não posso instalar SSH ou qualquer coisa assim.

Foi útil?

Solução

Provavelmente a sua melhor maneira é colocar as senhas em um arquivo separado e trava de segurança para esse arquivo para baixo o acesso para que apenas você leu. Infelizmente, se você armazena uma senha criptografada em seu script, você também tem que armazenar o método de decodificação, de modo que um atacante pode executar a descriptografia e recuperar sua senha.

Outras dicas

Houve uma pergunta muito semelhante anteriormente, consulte minha resposta -lo.

Em suma, um ser humano tem que lançar a cadeia de confiança. Tudo o resto é confusão.

Por que se preocupar com as senhas no script se você estiver usando telnet? Um atacante presuntivo vai encontrá-lo tão fácil ou mais fácil de capturar os dados fora do fio de fora da máquina remota, e não há realmente nada que pudesse fazer sobre isso em qualquer caso.

Isso soa como um caso de tentar colocar grades na janela e deixando a porta se abrindo.

Uma vez que você já está usando esperar, você deve olhar para ser capaz de redirecionar uma -d gpg em um arquivo criptografado que contém suas senhas. Armazenar senhas em uma variável de ambiente do sistema é apenas errado liso. A senha que será usada para descriptografar o arquivo gpg seria inserido no início, em seguida, carregar todas as senhas do arquivo e executar o seu material. Então você está feito, então as senhas só existem em texto simples enquanto a aplicação está em execução.

Editar apenas como uma nota lateral, colocando todas as senhas em um script é maldade; lembre-se que o script é apenas um arquivo de texto simples que faz ver que a senha fácil como qualquer coisa. Da mesma forma até mesmo aplicativos que você compilar pode ser revertida com "strings" que podem olhar para cordas que estão contidos no código (geralmente senhas).

Sobre a chance de que você está usando Mac OS X, eu encontrei desta forma bacana para usernames de apoio e as senhas do seu Keychain .

Atualizar : O link parece estar quebrado a partir de 22 de julho de 2013. O código a seguir mostra o bash trecho de como eu uso a técnica (para baixar o iTunes dados de vendas):

domain="itunesconnect.apple.com"
user="user@example.com"
pass=$(security find-internet-password -ws $domain -a $user)

Eu gosto da solução já mencionado de colocar senhas em um arquivo separado. Além disso, você poderia botar as senhas reais, muito parecido com o que é feito em / etc / passwd. Embora você possa usar a mesma chave de hash para todos eles, dependendo de como a sua aplicação. Obviamente, a desvantagem é que alguém tem que entrar no HashKey, a fim de executar o script e não é isso vai funcionar em um ambiente de grupo.

Um lugar para começar a aprender algo sobre hashing é a partir deste stackoverflow questão

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top