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.
sudo visudo
zmienić hasło, abyNOPASSWD: ALL
zobaczyć, czy to działaOdpowiedzi:
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/sudo
go tak, aby akceptował go jako metodę autoryzacji. Na koniec może być konieczne dodanieSSH_AUTH_SOCK
do listy zmiennych środowiskowych, które utrzymują się podczassudo
.Wiki Gentoo zawiera szczegółowe informacje na temat tych kroków.
źródło
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).
źródło
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.
źródło