Skonfigurowałem .ssh / autoryzowane_klucze i jestem w stanie zalogować się przy użyciu nowego „użytkownika” przy użyciu klucza pub / private ... Dodałem również „użytkownika” do listy sudoers ... Problem, który mam teraz, to kiedy Próbuję wykonać polecenie sudo, coś takiego jak:
$ sudo cd /root
wyświetli monit o podanie hasła, które wpisuję, ale nie działa (używam ustawionego hasła klucza prywatnego)
Ponadto wyłączyłem hasło użytkownika za pomocą
$ passwd -l user
czego mi brakuje?
Gdzieś moje początkowe uwagi są źle rozumiane ...
Próbuję zahartować mój system ... ostatecznym celem jest użycie kluczy pub / private do logowania, a nie proste uwierzytelnianie hasłem. Nauczyłem się, jak to wszystko skonfigurować za pomocą pliku autoryzowanych_kluczy.
Ponadto ostatecznie zapobiegnę logowaniu się do serwera za pośrednictwem konta root. Ale zanim to zrobię, potrzebuję sudo do pracy dla drugiego użytkownika (użytkownika, z którym będę cały czas logował się do systemu).
W przypadku tego drugiego użytkownika chcę zapobiec regularnemu logowaniu się za pomocą hasła i wymuszać tylko logowanie do klucza publicznego / publicznego, jeśli nie zablokuję użytkownika za pomocą „passwd -l user ... to jeśli nie użyję klucza, nadal mogę dostać się na serwer za pomocą zwykłego hasła.
Ale co ważniejsze , muszę sprawić, aby sudo współpracowało z konfiguracją klucza publicznego / publicznego z użytkownikiem, którego hasło zostało wyłączone.
Edycja: OK, myślę, że mam (rozwiązanie):
1) Dostosowałem / etc / ssh / sshd_config i ustawiłem. PasswordAuthentication no
Zapobiegnie to logowaniu się za pomocą hasła ssh (pamiętaj, aby mieć działającą konfigurację klucza publicznego / prywatnego przed zrobieniem tego)
2) Poprawiłem listę sudoers visudo
i dodałem
root ALL=(ALL) ALL
dimas ALL=(ALL) NOPASSWD: ALL
3) root to jedyne konto użytkownika, które będzie miało hasło, testuję z dwoma kontami użytkownika „dimas” i „sherry”, które nie mają ustawionego hasła (hasła są puste, passwd -d user
)
Powyższe zasadniczo uniemożliwia wszystkim logowanie się do systemu za pomocą haseł (klucz publiczny / prywatny musi zostać skonfigurowany).
Dodatkowo użytkownicy na liście sudoers mają uprawnienia administratora. Mogą również korzystać su
z różnych kont. Więc w zasadzie „Dimas” może sudo su sherry
jednak „Dimas może NIE su sherry
. Podobnie żadnego użytkownika nie ma na liście sudoers nie można zrobić su user
lub sudo su user
.
UWAGA Powyższe działa, ale jest uważane za słabe bezpieczeństwo. Każdy skrypt, który może uzyskać dostęp do kodu jako użytkownik „dimas” lub „sherry”, będzie mógł wykonać sudo, aby uzyskać dostęp do roota. Błąd w ssh, który pozwala zdalnym użytkownikom zalogować się pomimo ustawień, zdalne wykonanie kodu w coś takiego jak Firefox lub inna wada, która pozwala na uruchomienie niechcianego kodu, ponieważ użytkownik będzie mógł teraz działać jako root. Sudo powinno zawsze wymagać hasła, możesz równie dobrze zalogować się jako root zamiast jakiegoś innego użytkownika.
passwd -l
usuwa hasło w tym sensie, że konto jest ZABLOKOWANE - to znaczy żadne hasło nie będzie działać. Chcesz wyłączyć uwierzytelnianie hasła w sudo.To, co chcesz zrobić, jest możliwe, ale będzie wymagało trochę doświadczenia, ponieważ będziesz musiał skompilować moduł PAM o nazwie pam-ssh-agent-auth .
Proces jest dość prosty:
Edytuj konfigurację sudo:
Dodaj następujące:
Kontynuuj, zmieniając ustawienia sudo PAM:
Dodaj (tuż powyżej linii @include):
źródło
/etc/pam.d/sudo
instrukcje) są nieaktualne w przypadku bieżących wersji Ubuntu. W swojej odpowiedzi podałem zaktualizowane instrukcje.Odpowiedź Andre de Mirandy zapewnia dobre rozwiązanie przy użyciu pam_ssh_agent_auth , ale części są nieaktualne. W szczególności
/etc/pam.d/sudo
instrukcje dotyczące korzystania z wielu aktualnych wersji systemu Linux.Jeśli używasz systemu Ubuntu 12.04 precyzyjnie, w rzeczywistości uprościłem ten proces, udostępniając kompilację pam_ssh_agent_auth z ppa: ppa: cpick / pam-ssh-agent-auth .
Możesz zainstalować pakiet, uruchamiając:
Po instalacji, jeśli chcesz używać tego modułu PAM z sudo, musisz skonfigurować ustawienia sudo i konfigurację PAM, w Ubuntu 12.04 precyzyjnie możesz to zrobić, tworząc następujące dwa pliki:
/etc/sudoers.d/pam-ssh-agent-auth:
/etc/pam.d/sudo:
Jeśli używasz szefa kuchni, powyższy proces można zautomatyzować za pomocą mojej książki kucharskiej, którą można znaleźć w jednej z dwóch następujących lokalizacji:
https://github.com/cpick/pam-ssh-agent-auth
http: //community.opscode .com / książki kucharskie / pam-ssh-agent-auth .
Katalog książki kucharskiej
files
zawiera opisane powyżej pliki/etc/pam.d/sudo
i/etc/sudoers.d/pam-ssh-agent-auth
, które działają dokładnie z Ubuntu 12.04 i powinny być pomocnym punktem wyjścia przy korzystaniu z innych wersji / dystrybucji.źródło
Jedynym sposobem, w jaki wiem, jak ominąć wprowadzanie hasła, jest wyłączenie go w twoim
sudoers
pliku.Coś takiego da
root
wszystkim członkomwheel
pełny dostęp bez hasła:Nie jest to jednak absolutnie zalecane . Jeśli masz określone polecenie do wykonania dla tego serwera, daj im dostęp tylko do tego polecenia. Lub jeszcze lepiej, znajdź inny sposób na osiągnięcie tego, co chcesz zrobić, co nie wymaga wybicia dziury w zabezpieczeniach.
źródło