Inne hasło SSH / login od hasła SUDO

9

Chciałbym użyć innego hasła, aby podnieść status użytkownika do sudo, niż hasło używane do logowania (przez GUI, powłokę lub SSH) do mojego konta. czy to możliwe?

EDYCJA: Ponieważ ustawienie hasła roota pozwoliłoby na zalogowanie się jako root, nie jest to dobra droga. Wolałbym specyficzne dla użytkownika hasło sudo, zamiast systemowego hasła roota.

Richard
źródło
1
Czy możesz to rozwinąć - dlaczego chcesz to zrobić?
Doug Harris
1
Wydaje mi się, że pytanie wyjaśnia się wystarczająco dobrze, ale celem jest zabezpieczenie logowania za pomocą długich, trudnych haseł, a następnie użycie innego hasła do dostępu sudo, aby przejęcie konta użytkownika nie zapewniało automatycznego dostępu do sudo.
Richard
Słyszałem, że można wykonywać sudo za pomocą kluczy rsa / dsa, które mogą mieć dowolne hasło.
Rob

Odpowiedzi:

2

od mężczyzn sudoers:

rootpw          If set, sudo will prompt for the root password instead of the
                password of the invoking user.  This flag is off by default.

runaspw         If set, sudo will prompt for the password of the user defined
                by the runas_default option (defaults to root) instead of the
                password of the invoking user.  This flag is off by default.

Lub możesz po prostu całkowicie zablokować logowanie oparte na hasłach za pośrednictwem ssh. Wymagaj zaszyfrowanego klucza do zdalnego logowania. Następnie możesz używać hasła do sudo. Odpowiednią opcją jest

od man sshd_config

 PasswordAuthentication
         Specifies whether password authentication is allowed.  The default
         is “yes”.
Chas. Owens
źródło
Dzięki za pomoc, Chas. Owens. Obawiam się, że efektem ubocznym twojego rozwiązania jest to, że konto roota będzie miało hasło i dlatego będzie możliwe zalogowanie się jako root, co nie jest bramą, którą chciałbym pozostawić otwartą. Wolałbym specyficzne dla użytkownika hasło sudo, zamiast systemowego hasła roota.
Richard
Możesz także wyłączyć logowanie roota z sshd_config
Rob
1

szukacie tego zamiast tego w sudoers człowieku?

   targetpw        If set, sudo will prompt for the password of the user
                   specified by the -u option (defaults to root) instead of the
                   password of the invoking user. 
johnshen64
źródło
Dzięki za pomoc, johnshen64. Obawiam się, że efektem ubocznym twojego rozwiązania jest to, że konto roota będzie miało hasło i dlatego będzie możliwe zalogowanie się jako root, co nie jest bramą, którą chciałbym pozostawić otwarty. Wolałbym specyficzne dla użytkownika hasło sudo, zamiast systemowego hasła roota.
Richard
ten użytkownik nie musi być użytkownikiem root, domyślnie rootuje, jeśli go nie określisz. możesz poeksperymentować, aby sprawdzić, czy będzie dla Ciebie. unix jest dość otwarty i jeśli te nadal nie działają, możesz nawet napisać skrypt opakowujący lub nawet zmodyfikować sudo (jeśli znasz c), aby zrobić dokładnie to, co chcesz.
johnshen64
@ johnshen64 Myślę, że sprzeciwia się temu, że to samo hasło byłoby używane dla wszystkich użytkowników.
Chas. Owens
Rozumiem, ale dla każdego użytkownika można utworzyć użytkownika administracyjnego, powiedz $ {USER} foradmin, tak aby użytkownik zawsze określał -u $ {USER} foradmin, ale aby wymusić, że sudo nadal musi zostać zastąpione niestandardowym skryptem.
johnshen64
1

Co powiesz na wyłączenie logowania za pomocą SSH i zezwolenie na logowanie za pomocą klucza publicznego, w którym możesz ustawić trudne do odgadnięcia hasło. Następnie lokalne hasło może być krótsze i używane przez sudo.

Poza tym będziesz musiał skonfigurować, /etc/pam.d/sudoaby używać innego (lub dodatkowego) modułu, na pierwszy rzut oka pam_dialpassmoże pozwolić na to, czego potrzebujesz.

Można również skonfigurować konfigurację LDAP dla jednego i hasła lokalne dla drugiego. Wszystko będzie zależeć od tego, ile zmian jesteś w stanie i chcesz wprowadzić, jakie moduły są dostępne itp.

Bram
źródło
Dziękuję za pomoc, Bram. Twoja pierwsza sugestia zadziałałaby, z tym wyjątkiem, że uwierzytelnianie za pomocą klucza publicznego może być zabronione, chyba że jesteś przygotowany na przesyłanie plików kluczy.
Richard
1

ROZWIĄZANIE 1: newgrp

Prostym sposobem rozwiązania twojego przypadku użycia byłoby użycie :NOPASSWDw połączeniu z hasłem grupy i grupy:

Dodaj wiersz do sudoers:

%rudo   ALL=(ALL:ALL) NOPASSWD:ALL

Utwórz grupę chronioną hasłem:

groupadd rudo
gpasswd  rudo # Enter passwd

Teraz, gdy logujesz się jako użytkownik nieuprzywilejowany (zakładając, że nie jesteś jeszcze w rudogrupie), zaloguj się do rudogrupy, w którym to momencie pojawi się monit o hasło.

login user
newgrp rudo

Teraz możesz uruchamiać się bez sudohasła, o ile jesteś zalogowany w grupie.


ROZWIĄZANIE 2: runaspw

Lepszy, być może bardziej bezpieczny sposób, aby to zrobić runaspw. runaspwjest powiązany z runas_defaultopcją, więc musisz również tę opcję dodać.

Zakładając, że masz już domyślny %sudowpis grupy:

%sudo   ALL=(ALL:ALL) ALL

dodaj te linie do pliku sudoers:

Defaults:%sudo  runas_default=sudo
Defaults:%sudo  runaspw

Teraz dodaj nowego sudoużytkownika z hasłem:

useradd sudo -d /nonexistent -s /usr/sbin/nologin -MNr
passwd sudo

Teraz użytkownicy grupy sudo zostaną poproszeni o podanie hasła użytkownika sudo, ale tylko użytkownicy w grupie sudo będą mogli korzystać z sudo (w przeciwieństwie do powyższego rozwiązania grupowego, gdzie każdy w grupie lub z hasłem grupy może sudo).

Drobnym problemem jest to, że domyślny użytkownik runas jest teraz sudotak sudo jako root, musisz jawnie określić root:

sudo -u root <cmd>

Ale dość łatwe do zdefiniowania aliasu ( alias sudo='sudo -u root') lub pośredniego polecenia sudo.

spinkus
źródło