Node + PM2 - Como ler com segurança chave privada SSL com usuário não root?

4

Eu estou procurando uma maneira de executar o nó via PM2 enquanto lê uma chave privada SSL que é colocada em um diretório seguro.

Detalhes: Pilha Bitnami LEMP com Node

permissões para / etc / ssl / private:

drwx------ 2 root root  4096 private

permissões para arquivo-chave:

-rw-r----- 1 root root 1704 my_key_file.key

Com as permissões acima, nginx e php são executados sem nenhum problema (acho que isso é porque o processo master do nginx é executado como root?), e também o node como sudo.

No entanto, gostaria de executar este código de nó como um usuário não raiz, pois isso reduz o risco de segurança caso o servidor do nó seja comprometido.

Quais são minhas opções aqui? O jeito que eu entendo é algo como essas opções:

  • Desabilite as permissões na pasta / arquivo de chave privada (Ruim, envolve alterações em / etc / ssl / private!)
  • Copie private_key e torne-a legível apenas por um usuário seguro que execute pm2 (Bit messy, envolve o rastreamento de arquivos copiados para atualizações etc.)
  • Execute o PM2 master como root, que gera um processo / instância como um usuário não-root (muito parecido com o funcionamento do nginx, não tenho certeza se isso é possível)
  • Execute o PM2 como root, altere o código para soltar seu próprio nível de privilégio depois de fazer algumas coisas como root (conforme descrito aqui - parece um pouco confuso e também pode ser um risco de segurança)

Qualquer tipo de ajuda é muito apreciado! Obrigado

    
por jolian 19.02.2015 / 15:12

1 resposta

2

Você pode criar um grupo chamado ssl-cert e adicionar pm2user a esse grupo.

sudo groupadd ssl-cert
sudo usermod -a -G ssl-cert pm2user

Em seguida, altere o grupo do diretório /etc/ssl/private e seu conteúdo para ssl-cert . Você também precisará adicionar permissões de execução de grupo para o diretório private .

sudo chown -R root:ssl-cert /etc/ssl/private/
sudo chmod 650 /etc/ssl/private/
sudo chmod 640 /etc/ssl/private/my_key_file.key

Isso permitirá o acesso do PM2 para ler o arquivo. É mais ou menos seguro? Isso pode depender de quem tem acesso ao servidor e de quão amplamente o grupo ssl-cert é compartilhado. Mantenha o uso do grupo no mínimo absoluto: somente contas que não são de login. Você provavelmente precisará reiniciar os serviços Nginx e PM2 para que eles se reconectem com as novas permissões.

    
por 28.11.2018 / 04:00