Uwierzytelnianie sieciowe + katalog domowy roamingu - jakiej technologii powinienem używać?

9

Patrzę na oprogramowanie, które zapewnia użytkownikowi jedną tożsamość na wielu komputerach. Oznacza to, że użytkownik powinien mieć takie same uprawnienia na każdym komputerze, a użytkownik powinien mieć dostęp do wszystkich swoich plików (domowy katalog mobilny) na każdym komputerze. Wydaje się, że istnieje wiele rozwiązań tego ogólnego pomysłu, ale staram się wybrać dla mnie najlepsze. Oto kilka szczegółów wraz z wymaganiami:

  1. Sieć maszyn to instancje Amazon EC2 z systemem Ubuntu.
    • Dostęp do maszyn uzyskujemy za pomocą SSH.
    • Niektóre maszyny w tej sieci LAN mogą mieć różne zastosowania, ale dyskutuję o maszynach tylko do określonego użytku (na platformie wielodostępnej).
  2. System niekoniecznie będzie miał stałą liczbę maszyn.
    • Być może będziemy musieli trwale lub tymczasowo zmienić liczbę uruchomionych maszyn. To jest powód, dla którego szukam scentralizowanego uwierzytelniania / przechowywania.
  3. Wdrożenie tego efektu powinno być bezpieczne.
    • Nie jesteśmy pewni, czy użytkownicy będą mieli bezpośredni dostęp do powłoki, ale ich oprogramowanie potencjalnie będzie działało (oczywiście pod ograniczonymi nazwami użytkowników Linuksa) w naszych systemach, co jest tak dobre, jak bezpośredni dostęp do powłoki.
    • Załóżmy, że ze względu na bezpieczeństwo ich oprogramowanie może być potencjalnie złośliwe.

Słyszałem o kilku technologiach / kombinacjach, aby osiągnąć mój cel, ale nie jestem pewien, jakie będą konsekwencje każdej z nich.

  • Starszy post ServerFault zalecał NFS i NIS, chociaż kombinacja ma problemy z bezpieczeństwem, zgodnie z tym starym artykułem firmy Symantec . Artykuł sugeruje przejście na NIS +, ale jak na to stare, w tym artykule w Wikipedii zacytowano wypowiedzi sugerujące odejście od NIS + od Sun. Zalecana wymiana to kolejna rzecz, o której słyszałem ...
  • LDAP. Wygląda na to, że LDAP może służyć do zapisywania informacji o użytkownikach w scentralizowanej lokalizacji w sieci. NFS nadal musiałby być wykorzystywany do pokrycia wymogu „folderu domowego w roamingu”, ale widzę odniesienia do ich używania razem. Skoro artykuł w firmie Symantec wskazywał na problemy związane z bezpieczeństwem zarówno w NIS, jak i NFS, czy istnieje oprogramowanie zastępujące NFS, czy powinienem posłuchać sugestii tego artykułu dotyczących jego zablokowania? Skłaniam się ku LDAP, ponieważ inny podstawowy element naszej architektury, RabbitMQ, ma wtyczkę uwierzytelniania / autoryzacji dla LDAP. RabbitMQ będzie dostępny w ograniczony sposób dla użytkowników w systemie, dlatego chciałbym powiązać systemy bezpieczeństwa, jeśli to możliwe.
  • Kerberos to kolejny bezpieczny protokół uwierzytelniania, o którym słyszałem. Dowiedziałem się o tym kilka lat temu na zajęciach z kryptografii, ale niewiele o tym pamiętam. Widziałem w Internecie sugestie, że można go połączyć z LDAP na kilka sposobów. Czy to konieczne? Jakie są zagrożenia bezpieczeństwa związane z LDAP bez Kerberos? Pamiętam też, że Kerberos był używany w innym oprogramowaniu opracowanym przez Carnegie Mellon University ...
  • System plików Andrew lub AFS. OpenAFS jest dostępny do użycia, choć jego konfiguracja wydaje się nieco skomplikowana. Na mojej uczelni AFS spełnia oba wymagania ... Mogę zalogować się na dowolnym komputerze, a mój „folder AFS” jest zawsze dostępny (przynajmniej po uzyskaniu tokena AFS).

Czy wraz z sugestiami, na którą ścieżkę powinienem się zwrócić, czy ktoś ma jakieś przewodniki, które byłyby szczególnie pomocne? Jak wskazał pogrubiony tekst, LDAP wydaje się najlepszym wyborem, ale szczególnie interesują mnie szczegóły implementacji (Keberos? NFS?) W odniesieniu do bezpieczeństwa.

Brian
źródło

Odpowiedzi:

7

Uwierzytelnianie, autoryzacja i informacje o katalogu

To nie jest pełna odpowiedź na twoje pytanie, ale pomyślałem, że może pomóc w rozwiązaniu twoich pytań na temat NIS vs. LDAP vs. Kerberos.

Zacznij od tego , który zapewnia dobry przegląd różnicy między uwierzytelnianiem a autoryzacją , co należy zrozumieć w przypadku tego rodzaju dyskusji.

Kerberos to, jak mówisz, tylko protokół uwierzytelniania. Biorąc pod uwagę zestaw poświadczeń - np. Nazwę użytkownika i hasło - powie ci, czy są one prawidłowe, czy nie. To wszystko, co robi.

Natomiast zarówno NIS, jak i LDAP są usługami katalogowymi. Pozwalają klientowi zapytać ich o informacje o użytkownikach (jaki jest twój katalog domowy? Jaki jest twój identyfikator użytkownika?). Oba mogą być używane jako źródła uwierzytelniania o różnym stopniu trudności.

NIS tak naprawdę nie wykonuje dla ciebie żadnego uwierzytelnienia. Zamiast tego wyświetla hash hasła na komputerach klienckich, a system lokalny wykonuje rzeczywisty krok uwierzytelniania w taki sam sposób, jak w przypadku kont lokalnych. Problem polega na tym, że każdy, kto ma konto na jednym z twoich klientów NIS, może złapać wszystkie skróty hasła, a następnie przeprowadzić na nich atak brutalnej siły.

Protokół LDAP jest nieco bezpieczniejszy, ponieważ krok uwierzytelniania jest faktycznie wykonywany na serwerze. Musisz upewnić się, że szyfrujesz swoje sesje LDAP za pomocą protokołu SSL lub TLS, w przeciwnym razie hasło zostanie ujawnione w postaci jawnego tekstu w sieci, gdzie jest podatne na wąchanie pakietów.

Bardzo często używa się Kerberos do uwierzytelniania, a następnie NIS lub LDAP do autoryzacji (zwykle oznacza to „członkostwo w grupie”) i informacji o katalogu. Argumentowałbym, że NIS, po usunięciu skrótów haseł (poprzez przeniesienie uwierzytelnienia do Kerberos), nie jest tak naprawdę mniej bezpieczny niż LDAP i ma tę zaletę, że jest dostępny „od razu po wyjęciu z pudełka” w dowolnej nowoczesnej dystrybucji Linuksa.

Z drugiej strony LDAP jest ogólnie znacznie bardziej rozszerzalny, skaluje się lepiej, jeśli masz dużą liczbę użytkowników (lub innych obiektów katalogu), zapewnia bogate zapytania i jest ogólnie łatwiejszy w zarządzaniu. LDAP jest również obsługiwany natywnie w różnych aplikacjach, podczas gdy NIS ma dziwny kazirodczy związek z podstawowym systemem operacyjnym, co może być niepożądane.

Jeśli budujesz rzeczy od zera, sugerowałbym Kerberos do uwierzytelnienia i LDAP dla twojej usługi katalogowej.

Systemy plików

NFS ma dużą zaletę: już go masz, jest szeroko stosowany i ogólnie stabilny. Istnieją dwa główne wady NFS:

  • Nie skaluje się dobrze dla równoległych we / wy. Jeśli masz wiele komputerów uderzających w ten sam system plików, twój pojedynczy serwer NFS może mieć trudności z utrzymaniem. Dlatego większe klastry zazwyczaj używają systemu plików klastra (takiego jak Luster, GlusterFS, GPFS, GFS itp.), Który został zaprojektowany do obsługi równoległych operacji we / wy.

  • Ma zły model bezpieczeństwa. Zasadniczo decyzje dotyczące bezpieczeństwa NFS opierają się całkowicie na twoim numerycznym identyfikatorze użytkownika. Jeśli masz root w systemie, który może zamontować system plików NFS, masz dostęp do wszystkich plików - ponieważ zawsze możesz utworzyć lokalnego użytkownika z odpowiednim identyfikatorem użytkownika. To nie jest absolutnie prawdą, ponieważ zarówno NFSv3 i NFSv4 mają różne poziomy wsparcia dla uwierzytelniania Kerberos, ale mam jeszcze spotkać nikogo, używając tego ... więc przebieg może być różny.

W przypadku małych wdrożeń większość ludzi korzysta z NFS pomimo jego ograniczeń.

Istnieje wiele innych rozwiązań - systemy plików klastrowych, o których wspomniałem powyżej, a także AFS i inne - ale większość z nich będzie wymagać od ciebie trochę pracy, aby uruchomić je na dowolnej wybranej dystrybucji. Ostatnio słyszałem dobre rzeczy o GlusterFS, więc gdybym szukał alternatywy dla NFS, może to być pierwsze miejsce, w którym szukam.

Larsks
źródło
Dzięki za wyjaśnienie tych rzeczy. Właściwie mam dobrą podstawę do autoryzacji vs. uwierzytelnienia; Po prostu nie jestem pewien, jakie są możliwości każdego oprogramowania. Ważna jest także część do przechowywania; czy wiesz, w jaki sposób model bezpieczeństwa Kerberos / LDAP łączy się z NFS?
Brian
Zaktualizowałem odpowiedź kilkoma informacjami o NFS.
larsks
W tym przypadku nie widzę powodu, aby ograniczać się do jednego serwera NFS, chociaż jeden może być wystarczający, a więcej można dodać później. help.ubuntu.com/community/AutofsLDAP
84104
Próbowałem przejrzeć ten przewodnik AutofsLDAP, a także inne. Jest albo źle napisany, albo nieaktualny, ponieważ moje wyniki są różne i nie mogę przejść dalej niż pewien punkt. :(
Brian
Możesz otworzyć nowe pytanie z odpowiednimi szczegółami.
larsks
0

To jest częściowa odpowiedź.

NIS / NIS +
Nie używaj NIS. Użyj LDAP ze schematem nis.

OpenLDAP (alias slapd na Ubuntu)
Upewnij się, że skonfigurowałeś właściwe ACL i SSF (czynniki siły bezpieczeństwa).
Jeśli nie jesteś ostrożny, wysyłanie haseł jest bardzo łatwe.
http://www.openldap.org/doc/

NFS
NFS nie jest zaszyfrowany.
Może być zawinięty w ssl z pewnymi sztuczkami.
Bez protokołu Kerberos uwierzytelnianie opiera się na ip_addr.
Dzięki Kerberos możliwe jest, że SASL jest używany do szyfrowania wszystkiego.

Kerberos
wymaga, aby OpenLDAP miał uwierzytelnianie tranzytowe SASL dla uwierzytelniania LDAP. (Nie trudne.)
Należy użyć wpisów DNS. (Nie wymagane, ale bardzo przydatne).
Zamiast ssh-keys można użyć GSSAPI. (Może współistnieć.)
Maszyny KDC powinny być oddzielone od maszyn klienckich.

OpenAFS
Encrypted with DES. (Nie uważany za bezpieczny.)
Wymaga kerberos lub własnego starszego serwera.
Ma własne listy ACL systemu plików.

84104
źródło