Konfiguruję kilka ubuntu
skrzynek i używam opscode chef
jako narzędzia konfiguracyjnego. Byłoby dość łatwo zainstalować klucze publiczne dla każdego użytkownika na każdym z tych serwerów i wyłączyć uwierzytelnianie za pomocą hasła.
Jednak użytkownicy powinni mieć również sudo
uprawnienia, które domyślnie wymagają hasła.
Jeśli chcę używać kluczy publicznych przez użytkowników jako metoda zarządzania dostępem i pozwalają użytkownikom sudo
przywileje, to znaczy, mam również skonfigurować użytkownikom NOPASSWD: ALL
w visduo
, czy jest jakiś sposób, że użytkownik może zmieniać swoje hasło jeśli oni masz tylko uwierzytelnianie za pomocą klucza publicznego?
man sudoers
dostarczy informacji o tym, że niektóre polecenia mogą być uruchamiane z sudo bez konieczności podawania hasła użytkownika. Możesz nawet dodać skrypt shellscript do / etc / sudoers, który pozwoliłby na ustawienie „własnego hasła” dla każdego użytkownika bez konieczności wcześniejszego hasła.NOPASSWD: ALL
, do której należą członkowie zespołu. Jeśli możesz zasugerować lepsze rozwiązanie, opublikuj je jako odpowiedź.Odpowiedzi:
Sudo, w swojej najczęstszej konfiguracji, wymaga wpisania hasła przez użytkownika. Zazwyczaj użytkownik użył już swojego hasła do uwierzytelnienia na koncie, a ponowne wpisanie hasła jest sposobem na potwierdzenie, że legalny użytkownik nie porzucił konsoli i został przejęty.
W twojej konfiguracji hasło użytkownika będzie używane tylko do uwierzytelnienia w sudo. W szczególności, jeśli włamany zostanie klucz SSH użytkownika, osoba atakująca nie będzie mogła podnieść uprawnień do rootowania na serwerze. Osoba atakująca może podłożyć rejestrator kluczy na konto, ale ten rejestrator kluczy byłby wykrywalny przez innych użytkowników, a nawet być obserwowany automatycznie.
Użytkownik zwykle musi znać swoje bieżące hasło, aby zmienić je na inne hasło.
passwd
Program weryfikuje to (może być skonfigurowany, aby nie, ale to nie jest przydatne lub w ogóle wskazane w scenariuszu). Jednak root może zmienić hasło dowolnego użytkownika, nie znając starego; w związku z tym użytkownik z uprawnieniami sudo może zmienić swoje hasło bez wprowadzania go popasswd
znaku zachęty, uruchamiającsudo passwd $USER
. Jeślisudo
jest skonfigurowany tak, aby wymagał hasła użytkownika, musi onsudo
mimo to wpisać hasło .Możesz selektywnie wyłączyć uwierzytelnianie za pomocą hasła. W tej sytuacji wyłączysz uwierzytelnianie hasła w ssh i ewentualnie w innych usługach. Większość usług na większości współczesnych jednorożców (w tym Ubuntu) korzysta z PAM do konfigurowania metod uwierzytelniania. W systemie Ubuntu pliki konfiguracyjne PAM są dostępne
/etc/pam.d
. Aby wyłączyć uwierzytelnianie za pomocą hasła, skomentujauth … pam_unix.so
linię/etc/pam.d/common-auth
. Ponadto, upewnij się, że maszPasswordAuthentication no
w/etc/ssh/sshd_config
wbudowanemu uwierzytelniania hasłem wyłączyć sshd za.Możesz zezwolić niektórym użytkownikom administracyjnym na logowanie się za pomocą hasła lub zezwolić na uwierzytelnianie za pomocą hasła w konsoli. Jest to możliwe w przypadku PAM (jest dość elastyczny), ale nie mogłem powiedzieć, jak mam czubek głowy; zadaj osobne pytanie, jeśli potrzebujesz pomocy.
źródło
sudo passwd
że zmieniłby hasło dla bieżącego użytkownika, a nie dla użytkownika sudo?sudo
może zmienić własne hasło. Dokładne polecenie tak naprawdę nie ma znaczenia, ale w celu uzyskania bardziej szczegółowych informacji, byłoby to,sudo passwd bob
gdziebob
jest nazwa użytkownika lub coś równoważnego. Bez argumentówsudo passwd
rzeczywiście zmieniłby hasło do roota.Możesz użyć modułu pam_ssh_agent_auth . Kompilacja jest dość prosta, a następnie wystarczy dodać wpis
przed drugim
auth
(lubinclude
) wpisami w/etc/pam.d/sudo
i
do
/etc/sudoers
(przezvisudo
).Teraz każdy użytkownik może albo uwierzytelnić się
sudo
za pośrednictwem (przekazanego lub lokalnego) agenta SSH lub swojego hasła. Rozsądne może być poproszenie użytkowników ossh-add -c
takie użycie , aby każdesudo
połączenie wymagało przynajmniej potwierdzenia.źródło
Tak, jest niesamowicie niepewny i umożliwia użytkownikowi dostęp do haseł innych użytkowników, ale ponieważ mają sudo, niewiele można zrobić.
Zasadniczo wykonujesz następujące czynności:
$ sudo -i
Teraz jesteśmy rootem. Mamy dostęp do wszystkiego.
# passwd $username
$ nazwa użytkownika może być dowolną nazwą użytkownika.
Boom, hasło zmienione. Ponownie, niesamowicie niepewny, ponieważ możesz zmienić każdego, ale działa, ale działa. Nie polecam tego, ale raczej podaję tę odpowiedź jako przykład tego, czego nie należy robić.
źródło
sudo -i
bez aktualnego hasła użytkownika.sudo bash
może być bez hasła, biorąc pod uwagę taką konfigurację w/etc/sudoers
pliku. Myślę @jrg jest jak powiedział bardziej koncentrując się na kwestii braku bezpieczeństwa z sudo tutajsudo -i
, możesz przejść bezpośrednio dosudo passwd $username
@Miro, nie musisz znać aktualnego hasła użytkownika. Aby korzystać z sudo, musisz jedynie znać hasło rootaChodzi o to, aby hakerzy, którzy uzyskali klucz użytkownika lub znaleźli nienadzorowany terminal, nie mogli uzyskać dostępu do konta root. Z tego powodu nie poleciłbym żadnego rozwiązania, które wymagałoby sudo bez hasła.
Proponuję trzymać go prosta: może wysłać użytkownikowi domyślne hasło ze ścisłymi instrukcjami, aby go zmienić jak najszybciej, albo wstawić skrypt w ich
.profile
lub.login
czy coś takiego, że to wymaga nowego hasła przy pierwszym logowaniu. Po zakończeniu może się wyłączyć i możesz użyćexpect
istniejącego hasła, aby nigdy nie musiało go znać.źródło
> Powinno to umożliwić użytkownikom, którzy mogą logować się tylko przy użyciu kluczy publicznych i nie mogą używać haseł do logowania. Będzie jednak zmuszony zmienić hasło przy pierwszym logowaniu ... ale bez konieczności podawania mu pewnego hasła z góry ... Użytkownicy zostaną poproszeni o zresetowanie hasła, a następnie będą mogli go używać tylko w sudo ale nie będzie w stanie zalogować się (ssh) przy użyciu tego hasła. Zwróć uwagę, że sztuczka polega na tym, aby nie podawać użytkownikom fałszywego hasła, które będą musieli wprowadzić podczas logowania, gdy będą musieli zmienić swoje hasło ... W skorupie orzecha brak komunikacji od administratora (root) do faktycznego użytkownika jest wymagany.
źródło