Linux - Conexão SSH recusada devido a inexistência de / dev / urandom

4

Hoje, uma de nossa máquina de produção (Amazon EC2) estava inativa e eu não consegui atualizar a instância, pois não consigo entrar no SSH, a conexão foi recusada e não fazia ideia do que fazer, depois de algum tempo capaz de trazer a instância - (ok curto e doce).

De alguma forma eu descobri a causa-raiz do problema que estava faltando no arquivo /dev/urandom e, portanto, SSH não foi capaz de iniciar. Eu tive que criar este arquivo após a reinicialização e criei-o adicionando algumas linhas de código em um dos scripts de inicialização (init) existentes e poderia colocar o servidor em funcionamento significa que eu posso SSH na caixa.

Preciso de um aconselhamento especializado sobre o seguinte e, por favor, não hesite em me dar mais informações:

  1. devo deixar as linhas de código que eu escrevi em um dos arquivos do script init?
  2. qual poderia ser o motivo de perder /dev/urandom file?
  3. o que devo fazer para evitar essa situação no futuro?

Obrigado.

ATUALIZAÇÃO:

Para aqueles que querem saber o que eu escrevi:

#!/bin/bash
cd /dev ; /sbin/MAKEDEV urandom ; /etc/init.d/ssh start
    
por Rakesh Sankar 12.12.2011 / 09:04

2 respostas

4

Eu recomendaria deixar o código no lugar. Eu sei que parece bobo até mesmo sugerir isso, mas o fato de que seu /dev/urandom desapareceu é definitivamente estranho, e isso pode acontecer novamente. Modifique seu código para emitir mensagens de log que você não pode ignorar se precisar recriar arquivos de dispositivos no futuro.

Não há boas razões para o /dev/urandom ser excluído. O melhor que se poderia esperar seria uma ferramenta como puppet ou chef sendo configurada para gravar um diretório de arquivos de um tarball e primeiro limpando o diretório inteiramente como parte da expansão do tarball. (Eu consideraria tal uso um sério erro de configuração da ferramenta.) Mas qualquer processo executado como root terá os privilégios para remover o arquivo, então pode ser quase qualquer coisa.

Você pode configurar auditd para assistir a criações de arquivos, exclusões e renomeações no diretório /dev/ . Coloque as regras em /etc/audit/audit.rules para configurar os relógios persistentes:

-w /dev/ -p wa

Veja o auditctl(8) para detalhes completos sobre como configurar as listas de observação de auditoria; é bastante configurável e pode ser necessário ajustar a configuração ao seu sistema para que os eventos "padrão" não sobrecarreguem seus registros de auditoria.

Outra opção é definir o atributo immutable no arquivo usando o programa chattr(1) . É possível que qualquer programa ou ferramenta que possa ter removido o arquivo possa não ter o objetivo de remover o atributo immutable antes de excluir arquivos.

    
por 12.12.2011 / 09:21
0

Geralmente, problemas semelhantes são notados quando você atualiza o sistema operacional e, devido a algum motivo, a atualização é interrompida. No AWS (EC2), você não deve atualizar o kernel fornecido por eles. Você tentou atualizar seu sistema operacional ultimamente? É melhor você encontrar a causa real da falta / dev / urandom e corrigi-lo. Até então, deixe o código lá no script de inicialização. deixe-nos saber como é isso.

    
por 12.12.2011 / 09:25