sudo bez hasła po zalogowaniu za pomocą prywatnych kluczy SSH

23

Czy można wprowadzić polecenie sudo do obsługi kluczy prywatnych SSH, aby użytkownik logował się przy użyciu klucza prywatnego, aby mógł sudo bez wpisywania hasła?

Pozwoliłoby to na przechowywanie haseł sysadmin systemu UNIX w zaszyfrowanym chłodni i nigdy nie musiałby uzyskać do nich dostępu, zakładając, że użytkownicy używają bezpiecznych prywatnych kluczy SSH zawsze do logowania się na serwerze.

Mikko Ohtamaa
źródło
askubuntu.com/a/135838 Jeśli umieścisz tych użytkowników w grupie, na pewno możesz!
Rob
spróbuj sudo visudozmienić hasło, aby NOPASSWD: ALLzobaczyć, czy to działa
pneumatyka
3
@AlanTuring To działałoby również dla użytkowników w tej grupie, którzy zidentyfikowali się za pomocą hasła.
Xyon
@AlanTuring To skutecznie zmniejszyłoby bezpieczeństwo serwera - Chcę tylko niektórych użytkowników, nie wszystkich, sudo
Mikko Ohtamaa
Możliwe jest nadanie uprawnień określonym użytkownikom. Zobacz moją odpowiedź.
Isaac Rabinovitch

Odpowiedzi:

10

Taka możliwość istnieje od (przynajmniej) kwietnia 2014 r .

Będziesz musiał zainstalować pakiet o nazwie pam_ssh_agent_auth(dostępny dla Centos 7 po wyjęciu z pudełka, YMMV), a następnie skonfigurować /etc/pam.d/sudogo tak, aby akceptował go jako metodę autoryzacji. Na koniec może być konieczne dodanie SSH_AUTH_SOCKdo listy zmiennych środowiskowych, które utrzymują się podczas sudo.

Wiki Gentoo zawiera szczegółowe informacje na temat tych kroków.

Liam Dawson
źródło
1
Cudownie, dziękuję Liam. Szkoda, że ​​od wielu lat nie jestem administratorem systemu!
Mikko Ohtamaa
1

Nie jest to możliwe bez poważnych zmian w kodzie sudo i sshd. Sudo nie wie o metodach logowania, a ssh nie publikuje w innych programach niczego, co wskazywałoby, czy do logowania użyto klucza publicznego, hasła lub innego mechanizmu.

Jak ktoś inny powiedział, możesz używać opcji NOPASSWD w sudoersach - dotyczyłoby to jednak zawsze określonych użytkowników, nie tylko wtedy, gdy używają ssh z kluczami prywatnymi.

Jeśli naprawdę chcesz, mogą istnieć sztuczki, które możesz wykonać za pomocą programu suid, który sprawdza dziennik sshd i blokuje / edytuje plik sudoers, aby umożliwić temu użytkownikowi wykonanie sudo bez hasła, a także okresowe zadanie cofnięcia tego uprawnienia.

To powiedziawszy, myślę, że to zły pomysł. Wymaganie hasła do komend uprzywilejowanych ma kilka zalet, których nie zapewnia klucz prywatny SSH. W szczególności pozwala on na przekroczenie limitu czasu na autoryzację (hasło musi zostać ponownie wprowadzone, nie jest prawdziwe w przypadku sesji ssh), pozwala na minimalne hasła i rotację (w przeciwieństwie do kluczy ssh, które mają hasło poza kontrolą serwera).

Dagon
źródło
11
„Nie da się tego zrobić” nie jest odpowiedzią, zwłaszcza gdy da się to zrobić.
Isaac Rabinovitch
Zmiana odpowiedzi na poprawną zawierającą nowe informatino.
Mikko Ohtamaa
1

Kilka odpowiedzi Wskaż sudo bez oddzielnego hasła użytkownika. Powinieneś być świadomy, że zmniejszy to twoje bezpieczeństwo.

Dla użytkownika, który już silnie uwierzytelnił się za pomocą certyfikatu, może to nie stanowić problemu, ponieważ posiada on certyfikat, który teoretycznie mógłby go zrootować.

Jeśli jednak pomyślisz o lukach, które zapewnią atakującemu ograniczoną powłokę użytkownika, a ten użytkownik ma ustawiony plik NOPASSWD w pliku sudoers, atakujący jest rootem bez żadnych poświadczeń w systemie.

Jeśli sudo wymaga hasła od użytkownika, atakujący potrzebuje czasu i szczęścia, aby zwiększyć swoje uprawnienia do rootowania.

Sebastian Brabetz
źródło