Mamy wiele różnych systemów zarządzanych przez kilka osób. Zdecydowaliśmy się na uwierzytelnianie za pomocą klucza publicznego SSH, aby uzyskać dostęp do tych systemów. Działa to świetnie, ponieważ nie trzeba zarządzać hasłami do kont administracyjnych ani dzielić się nimi, nie trzeba zapamiętywać haseł do różnych systemów (tylko hasło do klucza prywatnego), nie ma potrzeby interakcji (wprowadzania hasła) z każdym zdalnym poleceniem .
Problem polega na tym, że kluczami publicznymi zainstalowanymi w systemach trzeba jakoś zarządzać. Ludzie przychodzą i odchodzą, klucze mogą zostać naruszone, obowiązki się zmienią (osoba upoważniona do wejścia do jednego systemu dzisiaj może być upoważniona do dostępu do innego jutro). Obecnie zarządzamy nim, ręcznie edytując pliki ~ / .ssh / Author_keys na każdym koncie, które tego potrzebuje, ale jest to dużo pracy i podatne na błędy.
Czy istnieje gotowe narzędzie do zarządzania kluczami publicznymi w takim scenariuszu? Czy masz własne rozwiązania? A może cała idea zarządzania systemami w ten sposób jest wadliwa?
źródło
Odpowiedzi:
Jak już wspomniano przez pulegium każdy generic oprogramowanie do zarządzania konfiguracją jak Lalek , Chef , Bcfg2 lub cfengine mógł wykonać zadanie.
Ponieważ plik autoryzowanych_kluczy nie jest tak skomplikowany, do zarządzania tym plikiem możesz także użyć programu rsync lub (D) SCM, takiego jak git lub hg . Masz plik „master” na jednym ze swoich serwerów i podajesz go przez rsync / git / hg /…. Na każdym innym serwerze uruchamiasz zadanie cron, które okresowo pobiera kopię główną (jeśli została zmieniona) i kopiuje ją do właściwej lokalizacji lokalnej. Cholera, działałoby to nawet z czystym HTTP lub FTP.
Najważniejsze jest to: posiadaj jedną „główną” kopię pliku autoryzowanych_kluczy i zaktualizuj go. Pozwól „klientom” (komputerom, które powinny mieć bieżący plik kluczy autoryzowanych) pobrać go z serwera głównego i wdrożyć lokalnie.
źródło
Dostępna jest łatka dla OpenSSH, która pozwala na korzystanie z kluczy publicznych z serwera LDAP, ale ma to sens tylko wtedy, gdy sprawdzanie konta / autoryzacji konta odbywa się również na tym serwerze LDAP (tak konfiguruje się moje środowisko). Jest również tak bezpieczny, jak konfiguracja LDAP (więc chcesz używać SSL i kluczy weryfikacyjnych).
Zobacz http://code.google.com/p/openssh-lpk/, aby uzyskać informacje o łatce i dodatkowe szczegóły. Domyślnie nie znam żadnego systemu operacyjnego dostarczanego z tą łatką, ale jeśli korzystasz z FreeBSD, jest to opcjonalna łatka, jeśli używasz OpenSSH z portów.
źródło
uruchamiam bardzo proste rozwiązanie, które robi to samo z regułami zapory ogniowej
przykładowy plik hosts.conf:
distribute.sh:
to cała magia :-)
źródło
Obecnie sprawdzam SSH KeyDB . Ma to robić dokładnie to, administrować rolami, serwerami i użytkownikami, dystrybuować klucze użytkowników, zbierać klucze hostów itp. Ma nawet coś, co nazywa się „lokalizacjami”.
Jeszcze tego nie wypracowałem i nie jestem pewien, czy to w pełni działa. Kod jest jednak w Pythonie i wydaje się być dość łatwy w zarządzaniu, więc nie powinno być zbyt trudno go odkurzyć i uruchomić.
źródło
Nie jestem pewien, co rozumiesz przez wielu, ani nie wiem, czy chcesz się zmienić, ale Kerberos to droid, którego szukasz. To elegancko rozwiąże twoje problemy i uwierzytelni zarówno ludzi, jak i maszyny.
źródło
Masz dwa (zwykle zmieniające się w 3) różne problemy, które próbujesz rozwiązać:
Autoryzacja za pomocą klucza publicznego jest czasem dobrym sposobem na uwierzytelnienie, ale w ogóle nie dotyczy autoryzacji. Nie podoba mi się uwierzytelnianie za pomocą klucza publicznego, ponieważ bardzo łatwo jest pójść na kompromis (szczególnie wewnętrznie), chyba że masz jakieś dobre kontrole.
Właśnie tutaj wchodzą takie rozwiązania jak Kerberos. W świecie Windows usługa Active Directory rozwiązuje ten problem. W świecie uniksowym istnieje mnóstwo wyborów, co jest zarówno dobre, jak i złe.
Sprawdziłbym projekt Red Hat FreeIPA , który jest pakietem oprogramowania, który ułatwia szybkie uruchomienie i uruchomienie podobnego do AD systemu Kerberos / LDAP / DNS.
źródło
Możesz używać Bcfg2 z kontami bcfg2 do dystrybucji
authorized_keys
. Jako dodatkowy bonus będziesz mieć możliwość kontrolowania użytkowników i grup.Bcfg2 umożliwia również bezbolesną konserwację za
/etc/ssh/ssh_known_hosts
pomocą SSHbase .źródło
Istnieje również SKM
źródło