Como gerenciar uma proteção de chave privada SSL de servidores da web (senha vs. sem senha)?

18

Temos uma discussão no grupo de segurança da minha empresa sobre o pior das opções a seguir para gerenciar a chave privada SSL.

O servidor da web precisa acessar a chave privada para a operação de criptografia. Este arquivo deve ser protegido contra acesso não autorizado. Ao mesmo tempo, o servidor deve iniciar automaticamente, sem intervenção humana (se for suficientemente seguro).

Estamos discutindo três opções:

  1. Proteja a chave com permissões do sistema de arquivos.

  2. Use uma chave protegida por senha e insira a chave manualmente em todas as reinicializações.

  3. Use uma chave protegida por senha e armazene a chave no sistema de arquivos para automatizar a reinicialização.

Nossas preocupações são as seguintes:

  1. Com a opção 1, as reinicializações são automáticas, mas um compromisso pode copiar a chave privada e, como não está protegido, pode ser usado para decifrar a comunicação ou representar nossos servidores.

  2. A opção 2 parece ser mais segura, mas precisa de intervenção humana e os administradores de sistemas estão preocupados se ocorrer fora do horário comercial. Além disso, a senha deve ser compartilhada com vários administradores de sistema e você sabe que um segredo compartilhado não é mais um segredo.

  3. A opção 3 tem o melhor das duas opções anteriores, mas se alguém tiver acesso à chave também poderá ter acesso à senha :(, portanto, ela não parecerá tão segura.

Como você gerencia a segurança das chaves privadas de seus servidores? Existem outras opções (mais seguras)?

chmeee
fonte

Respostas:

10

A opção 1 é o padrão aceito.

No entanto, se você realmente deseja segurança extra, por que não possui um servidor seguro (não na sua DMZ) configurado para monitorar seu servidor da Web e, se o apache cair, ele pode efetuar login remotamente automaticamente e reiniciar o apache , fornecendo a senha.

Portanto, a senha é mantida em um computador, mas não a mesma que o apache está sendo executado, e não na sua DMZ. Você ganha a segurança adicional de usar uma senha e mantém a capacidade de reinicialização automática.

Brent
fonte
5

Se alguém tiver acesso suficiente ao servidor para ler a chave, provavelmente também terá acesso suficiente para conectar um depurador e obter a chave da memória.

A menos que você realmente goste de ser acordado no meio da noite para digitar senhas, vá para a opção 1. Quando você tem muitos servidores, deseja reiniciar automaticamente em caso de falha, e a opção 2 não permite isso.

brian-brazil
fonte
1

Uma possibilidade para uma segurança maior que 1. mas menor tempo de inatividade que 2. é criar chaves privadas com validade curta e reciclá-las regularmente. Dessa forma, você pode armazená-los sem senha, mas reduz a janela de vulnerabilidade.

Como você reconheceu, a opção 3. não fornece nenhuma segurança adicional acima de 1.

David Schmitt
fonte
1

A praticidade determina que em quase todas as situações você acabará usando a opção (1). As permissões do sistema de arquivos são o melhor caminho a seguir na maioria dos cenários práticos e de segurança.

Em um sistema * nix, você pode restringir a chave privada apenas ao root, pois a maioria dos bons servidores da Web (como o apache) inicia como root, mas rebaixa seus privs para um usuário restrito, uma vez que eles possuam as portas privilegiadas de que precisam (80, 443 etc.) .

Como você mencionou, a opção (3) é do ponto de vista da segurança, igual à opção (1).

Neobyte
fonte