Chcemy przejść na zarządzanie loginami SSH oparte na kluczach i zastanawiamy się, czy istnieją systemy zarządzania kluczami, które pozwoliłyby nam centralnie zarządzać kluczami dostępu na całym świecie.
System powinien idealnie zezwalać na wydawanie kluczy na klienta i ich odwoływanie w razie potrzeby, aktualizowanie kluczy serwera na bieżąco.
Czy ktoś wie o takim systemie, komercyjnym lub open source?
UWAGA: Aby to wyjaśnić, potrzebujemy zarządzania kluczami dla dość dużej liczby serwerów w chmurze (podobnych do EC2) i niewielkiej liczby użytkowników usług. Myślę, że łatka LDAP + sugeruje, że może być dobrym rozwiązaniem.
Odpowiedzi:
Jest na to wiele sposobów. Pamięć kluczy LDAP została wspomniana kilka razy, a ja to zrobiłem i działa, o ile to możliwe. LDAP ma jednak swoje własne ciekawostki związane z zarządzaniem, które wymagają trochę nauki.
Jestem wielkim fanem prostych, solidnych serwerów, które mają minimalne zależności od sieci zewnętrznej w przypadku prostych rzeczy, takich jak uwierzytelnianie administratorów, więc skłaniam się ku zdecydowanie bardziej niezawodnej strategii dystrybucji kluczy SSH - mam to do czynienia z systemem zarządzania konfiguracją. Klucz publiczny każdego użytkownika jest przechowywany w systemie zarządzania konfiguracją i wszędzie tam, gdzie osoba musi się zalogować, jego klucz jest dodawany. System konfiguracji wie także o usuwaniu kluczy, które nie zostały określone, więc kiedy ktoś odchodzi lub zmienia się jego klucz, wystarczy usunąć konfigurację klucza, a przy następnym uruchomieniu systemu konfiguracji klucz jest usuwany.
źródło
Użytkownik powinien wygenerować pary kluczy.
Użytkownik zachowuje prywatną połowę - nigdy nie powinieneś jej widzieć. Jeśli posiadasz czyjś klucz prywatny w formie, w której możesz go odczytać / użyć, źle robisz bezpieczeństwo.
Część publiczna jest udostępniana (za pomocą dowolnego mechanizmu: formularza internetowego, wiadomości e-mail, opcji „daj mi to na płycie CD”), która ma być scentralizowana w dowolny sposób. Niektóre miejsca przechowują klucze publiczne w LDAP. Inni wypychają
authorized_keys
pliki za pomocą systemu wdrażania.W moim środowisku użytkownicy, którzy potrzebują dostępu do powłoki, dają mi swoje klucze publiczne. Te klucze są dodawane do naszego systemu LDAP i
sshd
konsultują się z kluczami publicznymi wymienionymi dla każdego użytkownika w celu ich uwierzytelnienia, za pomocą łatki klucza publicznego LDAP .Gdy ktoś musi dodać dodatkowy klucz lub odwołać istniejący klucz, informuje administratora, a my się nim zajmujemy. W końcu, kiedy skalujemy, wdrożę system, który pozwala ludziom obracać swoimi kluczami publicznymi.
Każda z naszych witryn ma parę serwerów LDAP, zsynchronizowanych z naszym serwerem głównym za pomocą replikacji LDAP, dzięki czemu dane są spójne (i dostępne) w każdej lokalizacji.
Wszystko, co opisałem, można zrobić za pomocą oprogramowania typu open source. Istnieją również produkty komercyjne, które robią to samo.
Musisz dokładniej zbadać dostępne opcje i zdecydować, które najlepiej pasują do Twojego środowiska. Jeśli masz dalsze (bardziej szczegółowe) pytania, prawdopodobnie możemy być bardziej pomocni.
źródło
/etc/passwd
oraz/etc/group
plików (pozwala na normalne działanie maszyn i uruchamianie / uruchamianie powiązanych usług, nawet jeśli LDAP nie jest dostępny)Klucze nie powinny być generowane nigdzie, ale na komputerze każdego użytkownika. Klucze prywatne są nazywane jako takie z jakiegoś powodu.
To powiedziawszy, mogłem zobaczyć przypadek użycia dla pewnego rodzaju scentralizowanego repozytorium kluczy publicznych użytkowników. Jedną z opcji byłoby przechowywanie kluczy publicznych w OpenLDAP - najnowsze wersje OpenSSH mogą odczytywać klucze z LDAP.
źródło
Wiem, że jest to nieco starsze pytanie, ale Google zwraca je dość wysoko, gdy szuka tego rodzaju rzeczy.
Dla tych z nas, którzy szukają rozwiązania oprócz LDAP, właśnie znalazłem projekt „SKM”: https://sites.google.com/site/jeromeboismartel/code-s-corner/ssh-key-management-with-skimp
źródło
Istnieje wiele świetnych komercyjnych i otwartych rozwiązań, takich jak Userify [1] (tam, gdzie pracuję), Universal Key Manager [2], SSH Key Box [3] itp. Zależy to od twoich potrzeb i tego, czy jesteś szukając czegoś, co scentralizuje zarządzanie podczas decentralizacji operacji (aby twoje serwery nie polegały na centralnym organie do zalogowania się ... w takim przypadku możesz nie być w stanie zalogować się na żaden z serwerów, jeśli, powiedzmy, twój Serwer LDAP nie działa!)
https://userify.com
https://www.ssh.com/products/universal-ssh-key-manager/
https://www.sshkeybox.com
Zobacz także tę dyskusję Slant:
https://www.slant.co/topics/8010/~managers-for-ssh-keys
źródło