Como temporário é a saída de cat / dev / urandom

2

Estou usando o seguinte comando no meu servidor para criar uma semente:

cat /dev/urandom |tr -dc A-Z9|head -c${1:-81} 

Se eu copiar a saída e depois fechar o terminal, a semente criada será completamente inacessível? Estou preocupado que alguém que possa ter acesso ao meu servidor em algum momento consiga verificar essa saída em algum tipo de histórico.

    
por Leif 06.09.2017 / 18:52

2 respostas

2

Os dados do gerador aleatório passam por vários lugares.

  1. Começa no kernel. O gerador aleatório no kernel, como qualquer outro gerador aleatório, consiste em um gerador de bit aleatório (DRBG) determinístico que é propagado por fontes de entropia. O DRBG usado pelo Linux tem backtracking de resistência, o que significa que mesmo que um atacante consiga descobrir o estado do RNG em algum ponto (o que requer acesso no nível do kernel), eles não podem calcular os estados anteriores, então eles podem ' t encontrar saídas anteriores.

  2. O kernel não mantém uma cópia dos dados que passa para o processo cat , ou mais tarde, através dos canais.

  3. Uma vez que o processo cat tenha terminado, sua memória é liberada de volta ao kernel. A memória liberada não é apagada imediatamente: o Linux limpa apenas a memória antes de entregá-la a um processo. (Isso ocorre porque limpar a alocação tem melhor desempenho do que apagar o lançamento.) Portanto, é possível que os dados ainda permaneçam na RAM por algum tempo após o término do cat . Obter esses dados exigiria acesso no nível do kernel e algumas habilidades forenses para encontrar a página certa na memória entre provavelmente centenas de milhares de candidatos. O mesmo vale para os outros processos ( tr , head ).

  4. Os canos não economizam memória em nenhum lugar. Os dados são copiados diretamente do processo para o processo.

  5. Os dados são exibidos no terminal. Pode ser salvo em algum lugar na memória do emulador de terminal. Definitivamente é salvo desde que você possa rolar de volta para ele, e uma cópia pode permanecer na memória do processo mais tarde, dependendo de como o emulador de terminal gerencia sua memória. Encontrar os dados na memória do emulador de terminal requer acesso à sua conta.

  6. Os dados exibidos no terminal não são armazenados em um arquivo, a menos que você tenha feito o logoff da sessão.

  7. Os dados também podem permanecer na memória de vídeo (não na forma de texto, mas na forma de um grupo de pixels que foram exibidos em algum momento). Não há mecanismo para limpar a memória de vídeo e os fragmentos de imagens podem permanecer por muito tempo. Examinar a memória de vídeo requer acesso no nível do kernel.

  8. Se você usar a área de transferência para copiar os dados do terminal, terá que se preocupar com onde os dados da área de transferência podem ser armazenados. Uma cópia pode permanecer na memória do servidor X por algum tempo, assim como uma cópia pode permanecer na memória do emulador de terminal. Encontrar essa cópia requer acesso em nível de raiz e habilidades forenses sérias.

  9. Se você tiver um gerenciador de área de transferência (talvez como parte de seu ambiente de área de trabalho), precisará se preocupar onde ele pode armazenar um histórico do conteúdo da área de transferência.

Em resumo, o único risco prático é usar um gerenciador de área de transferência.

    
por 07.09.2017 / 01:29
1

A saída de um comando shell não é armazenada no arquivo histórico do shell.

A menos que você salve a saída em um arquivo, ou registre a sessão completa do shell de alguma forma, o resultado desse comando não estará presente em seu sistema.

    
por 06.09.2017 / 18:56