Melhor prática para autenticar 2 máquinas em um ambiente M2M

tenho múltiplos servidores minúsculos do Linux incorporados no Beaglebone Black (poderia por um RaspberryPi, não faz diferença) que precisam de trocar informações com um servidor principal (hospedado na web).

idealmente, cada sistema fala uns com os outros por simples comandos RESTful - por exemplo, o servidor principal envia novas configurações para os servidores embutidos - e os servidores enviam dados de volta. Comandos também podem ser emitidos por um usuário humano a partir do servidor principal ou diretamente para os servidores incorporados.

Qual seria a forma mais" padrão " de autenticação de cada servidor um contra o outro?Estou a pensar em OAuth, assumindo que cada máquina tem o seu próprio utilizador OAuth - mas não tenho a certeza se esse é o padrão correcto a seguir.

Author: Roberto, 2013-10-06

2 answers

Qual seria a forma mais" normal " de autenticação de cada servidor um contra o outro? Estou a pensar em OAuth, assumindo que cada máquina tem o seu próprio utilizador OAuth-mas não tenho a certeza se esse é o padrão correcto a seguir.

Autenticar máquinas não é diferente de autenticar utilizadores. São ambos Directores de segurança. Na verdade, a Microsoft fez das máquinas um cidadão de primeira classe no Windows 2000. Eles podem ser um princípio em objetos securáveis como arquivos e pastas, tal como os utilizadores normais podem.

[[[2]} (há alguma mão acenando uma vez que os servidores geralmente sofrem com o problema de armazenamento de chave sem vigilância descrito por Gutmann no seu livro de segurança de Engenharia {[[9]}).

Eu usaria um PKI privado (isto é, seria a minha própria Autoridade de certificação) e utilizaria autenticação mútua baseada em pares de chaves público/privado como SSL/TLS. Isto tem o benefício adicional de reutilizar um monte de infra-estrutura, de modo que o HTTP/HTTPS / REST "apenas funciona" como sempre ha.

Se usar um PKI privado, emite certificados para as máquinas que incluem a seguinte Utilização da chave:

  • Assinatura Digital (Utilização Da Chave)
  • Introdução De Chaves (Utilização De Chaves)
  • Acordo De Chaves (Utilização Das Chaves)
  • Autenticação Do Cliente Web (Utilização Da Chave Alargada)
  • Autenticação Do Servidor Web (Utilização Da Chave Alargada)

Ou, execute um PKI privado e só permita comunicações entre servidores usando um VPN baseado no seu PKI. Ainda podes tunnel seus pedidos RESTful, e nenhum outro será capaz de estabelecer um VPN para um de seus servidores. Você recebe os filtros IP de graça.

Ou usar um protocolo estilo Kerberos com um centro de distribuição de chaves. Vais precisar de toda a infra-estrutura Kerberos, incluindo um KDC. Configurar canais seguros com base nos segredos procurados pelo KDC.

Ou, use um sistema semelhante ao SSH, pares de chaves públicos/privados e sneaker-net para copiar as chaves públicas uns dos outros. Permitir apenas as ligações de máquinas cujas chaves públicas tens.

Eu provavelmente não usaria um sistema Tipo OAuth. No sistema do tipo OAuth, você vai ser o Provedor e a parte de confiança. Neste caso, você pode muito bem ser um CA e reutilizar tudo a partir de SSL/TLS.
 8
Author: jww, 2017-01-27 06:01:21

Acho que precisa de implementar autenticação mútua entre servidores que usam SSL para o seu pedido.
Eu não sei muito sobre o ambiente M2M , mas usar o OAuth para autenticar seus servidores é exagero .

https://security.stackexchange.com/questions/34897/configure-ssl-mutual-two-way-authentication


Cifrar também o seu canal de comunicação enquanto envia os comandos torná-lo-ia mais seguro dos ataques

 1
Author: spetzz, 2017-03-17 10:45:55