2013-10-06 11 views
12

mam wiele malutkie Linux wbudowane serwery na Beaglebone czerni (może przez Raspberry Pi, to nie ma znaczenia), które muszą wymieniać informacje z głównego serwera (hostowane na sieć).Najlepsze praktyki w celu uwierzytelnienia 2 maszyny w środowisku M2M

Idealnie, każdy system komunikuje się ze sobą za pomocą prostych poleceń RESTful - na przykład serwer główny wysyła nowe konfiguracje do wbudowanych serwerów - a serwery odsyłają dane. Polecenia mogą być również wydawane przez użytkownika z głównego serwera lub bezpośrednio z wbudowanych serwerów.

Jaki byłby najbardziej "standardowy" sposób uwierzytelniania każdego serwera względem siebie? Myślę OAuth, zakładając, że każda maszyna ma własnego użytkownika OAuth - ale nie jestem pewien, czy jest to właściwy wzór do naśladowania.

Odpowiedz

6

Co byłoby najbardziej „standardowy” sposób uwierzytelniania każdego serwera przed sobą? Myślę OAuth, zakładając, że każda maszyna ma własnego użytkownika OAuth - ale nie jestem pewien, czy jest to właściwy wzór do naśladowania.

Uwierzytelnianie maszyn nie różni się od uwierzytelniania użytkowników. Obaj są podmiotami zabezpieczeń. W rzeczywistości Microsoft stworzył maszyny najwyższej klasy obywatelem w systemie Windows 2000. Mogą one być głównymi użytkownikami zabezpieczonych obiektów, takich jak pliki i foldery, tak jak zwykli użytkownicy.

(Istnieje pewne machnięcie ręką, ponieważ serwery zwykle cierpią na problem z nienadzorowanym przechowywaniem kluczy opisany przez Gutmann w jego książce Engineering Security).

Chciałbym użyć prywatnego PKI (tj. Być moim własnym organem certyfikującym) i korzystać z wzajemnego uwierzytelniania na podstawie par kluczy publicznych/prywatnych, takich jak SSL/TLS. Ma to dodatkową zaletę ponownego wykorzystania dużej ilości infrastruktury, więc HTTP/HTTPS/REST "po prostu działa" tak jak zawsze.

Jeśli używasz Prywatna PKI, wydawania certyfikatów dla maszyn, które obejmują następujący klucz Zastosowanie:

  • Podpis cyfrowy (Wykorzystanie Key)
  • Key Szyfrowanie (Wykorzystanie Key)
  • Umowa klawisz (Key Usage)
  • Web Client Authentication (Extended Key Usage)
  • Web Server Authentication (Extended Key Usage)

Można też uruchomić prywatną PKI i zezwalać tylko na komunikację między serwerami za pomocą sieci VPN na podstawie infrastruktury PKI. Nadal można tunelować żądania RESTful, a żadne inne nie będą w stanie nawiązać połączenia VPN z jednym z serwerów. Dostajesz filtry IP za darmo.

Lub użyj protokołu w stylu Kerberos z centrum dystrybucji kluczy. Będziesz potrzebować całej infrastruktury Kerberos, w tym KDC. Skonfiguruj bezpieczne kanały na podstawie sekretów przetwarzanych przez KDC.

Lub użyj systemu SSH, par kluczy publicznych/prywatnych i sieci sneaker-net, aby skopiować klucze publiczne peer'a do siebie nawzajem. Zezwalaj tylko na połączenia z komputerów, których klucze publiczne posiadasz.

Prawdopodobnie nie użyłbym systemu podobnego do OAuth. W systemie podobnym do OAuth będziesz zarówno dostawcą, jak i stroną ufającą. W takim przypadku możesz równie dobrze być urzędem certyfikacji i ponownie użyć wszystkiego z SSL/TLS.

+0

Czy oznacza to, że klient i serwer mają własny certyfikat (samopodpisany)? Czy zabezpieczenia są naruszane, gdy certyfikaty są w tym przypadku podpisywane automatycznie? – Joyce