Protegendo scripts de bash

1

Alguém sabe qual é a melhor maneira de proteger os scripts bash? Eu tenho um script que cria banco de dados e backup de código-fonte e ftp para outro servidor. E login / senha para o destino ftp são texto simples. Eu preciso de alguma forma criptografá-lo ou escondê-lo em caso de invasão de sites. Ou devo criar um script escrito em C para criar o arquivo bash, em seguida, executá-lo e excluí-lo? Obrigado.

Obrigado pelas respostas e desculpe, eu não estava claro o suficiente. Gostaria de esclarecer minha dúvida nos seguintes itens.

  1. Estamos armazenando os dados nos arquivos do Rackspace Cloud.
  2. Não conseguimos extrair como os arquivos da nuvem não permitem que você execute um script.
  3. Podemos escrever o script para rodar no Servidor A e extrair dados FTP e MySQL nos servidores B, C, D, etc. E queremos proteger as senhas em A da situação em que A é hackeado. Podemos compilar nosso arquivo de script para ocultá-lo?

Obrigado

    
por minnur 30.11.2009 / 21:20

4 respostas

3

Você não pode "proteger" credenciais quando elas precisam estar disponíveis em texto sem formatação para uso. Ofuscação e codificação (ou "criptografia", se você quiser usar esse termo) eles não são nada exceto segurança por obscuridade (o que não é realmente segurança, e é sem dúvida pior do que nada, pois pode lhe dar um falsa sensação de segurança).

É melhor repensar sua estratégia para executar algum tipo de "extração" de dados de uma máquina menos exposta do que tentar "ocultar" credenciais "à vista".

(Veja também: fraude com cartão de crédito, fraude ACH, "roubo" de identidade e outros exemplos idiotas de segurança por obscuridade do mundo real que não funcionam muito bem. "Segredos" que precisam ser compartilhados abertamente não são secretos , por definição.)

    
por 30.11.2009 / 21:29
2

Eu usei a seguinte abordagem para proteger a senha em scripts bash. A mesma abordagem também funcionaria para o nome de usuário se você quiser manter isso oculto. Essa abordagem não é criptografia, mas supondo que as permissões nos arquivos em questão estejam definidas corretamente, isso impedirá que o usuário médio do sistema veja os detalhes que deseja ocultar. Se o seu sistema é hackeado, então essa abordagem não fará muito, já que provavelmente teria acesso root nesse ponto.

No topo da configuração do script, uma variável que se parece com isso.

MY_PASS='cat /path/securepasswordfile'

Crie um arquivo de texto com apenas a senha nele e, em seguida, proteja-o com permissões de arquivo para que apenas a conta que executa o script possa ler esse arquivo.

Em seguida, para acessar isso em seu script, use apenas algo como o seguinte.

$MYSQL_DUMP -A --host=$SERVER -u root -p$MY_PASS > $BACKUP_DIR/database/backup.sql
    
por 30.11.2009 / 22:05
1

Citando 3dinfluence, acima:

$MYSQL_DUMP -A --host=$SERVER -u root -p$MY_PASS > $BACKUP_DIR/database/backup.sql

Note que em algumas distros isso resultará na senha sendo mostrada na saída de 'ps'.

    
por 22.12.2010 / 19:42
0
Não importa o que você tente, você não pode fazer o que você está tentando fazer, como você está tentando fazer. Se você pensar sobre isso, não importa o quanto você tente criptografar os dados, em última análise, todos os dados estão disponíveis.

Talvez a melhor opção seja ter o ssh do lado remoto e executar esses comandos? Isso é o que fazemos no trabalho - uma máquina muito segura ssh em clientes e faz o backup deles. A própria máquina de backup não permite ssh remoto, etc.

BTW, se você estiver usando FTP, sua senha será transmitida em texto simples já ...

    
por 30.11.2009 / 21:28