Dlaczego su do rootowania zamiast logowania jako root?

33

Często słyszałem, że lepiej jest suować się na rootowanie niż zalogować się bezpośrednio jako użytkownik root (i oczywiście ludzie mówią również, że lepiej jest używać sudo). Nigdy tak naprawdę nie rozumiem, dlaczego jedno jest lepsze od drugiego, wgląd?

thepocketwade
źródło
2
Czy myślisz o logowaniu ssh, czy też logowaniu z komputera fizycznego?
Telemachus

Odpowiedzi:

43

Wnioskowanie jest tylko sulub w sudorazie potrzeby.

Większość codziennych zadań nie wymaga powłoki roota. Dlatego dobrą praktyką jest używanie nieuprzywilejowanej powłoki jako domyślnego zachowania, a następnie podniesienie uprawnień do rootowania tylko wtedy, gdy trzeba wykonywać specjalne zadania.

W ten sposób zmniejszasz zakres niebezpiecznych błędów (złe skrypty, źle umieszczone symbole wieloznaczne itp.) I luk w zabezpieczeniach aplikacji, których używasz. Zwłaszcza te, które łączą się z Internetem - zobacz stare powiedzenie „Don't IRC as root” .

sudo jest często zalecane, ponieważ pozwala na dokładne sprawdzenie i sprawdzenie korzystania z takich uprawnień.

Obserwując te praktyki, możesz także wyłączyć zdalne logowanie do roota. Zwiększa to pasek wejścia dla każdego potencjalnego napastnika, ponieważ musiałby naruszyć zarówno zwykłe konto użytkownika, które było członkiem grupy „koło” i najlepiej autoryzowane tylko przez klucze publiczne SSH, a następnie samo konto root.

Dan Carley
źródło
1
Czy możesz wyjaśnić, dlaczego zdalne logowanie do roota jest „stosunkowo dużą podatnością”.
thepocketwade
5
Ponieważ biorąc pod uwagę, że cały świat zna nazwę użytkownika („root”), to tylko kwestia znalezienia hasła. I mogą to zrobić brutalną siłą i przejąć komputer.
Shalom Craimer
2
Kolejna zaleta sudo: rejestrowanie wykonanych poleceń.
Manuel Faux
To audyt;)
Dan Carley
1
Chociaż sudojest lepszy, supozwala również używać -mflagi, aby zachować zmienne środowiskowe bez zmian w terminalu głównym. Nic nie napędza mnie bardziej wściekłością niż rootowanie su, tylko zrobienie czegoś z ~nazwą katalogu i sprawienie, żeby to nie działało.
tj111
27

Powinieneś wyłączyć dostęp roota ze zdalnego, aby osoba atakująca nie mogła złamać uprawnień roota bez uprzedniego narażenia użytkownika, a następnie eskalacji do roota. Umożliwiamy dostęp do konta root tylko na konsoli.

Dodatkowo tworzy odpowiedzialność. :)

egorgry
źródło
+1 krótki i do
rzeczy
15

Głównym powodem jest utworzenie ścieżki audytu. Jeśli musisz zalogować się do systemu jako zwykły użytkownik, a następnie su, możesz ustalić, kto jest odpowiedzialny za dane działania.

Tim
źródło
Po tym, jak ktoś uruchomił su - root, w jaki sposób określasz, jakie polecenia uruchomił? Czy to gdzieś jest zarejestrowane?
Dobes Vandermeer
10

sudo automatycznie rejestruje każde polecenie w syslog i możesz zdefiniować polecenia, które każdy użytkownik może używać.

Jure1873
źródło
3
Jeśli chodzi o rejestrowanie: tak jest w przypadku każdego polecenia poprzedzonego słowem „sudo”, ale w przypadku, gdy sudo jest używane do podniesienia poziomu powłoki roota, polecenia są rejestrowane tylko w tradycyjnych obszarach (szczególnie w historii powłoki).
Zenham
2
Rzeczywiście, sudo vim foo.txtnastępnie upuść do powłoki z poziomu vima da ci root root bez regularnego logowania sudo.
Ophidian
Albo po prostu, sudo -iaby uzyskać interaktywną sesję ...
Kamil Kisiel
Nie rozumiem problemu z sudo vim foo.txt. Uruchomiłem to, potem wyszedłem z vima i wciąż byłem sobą, czy czegoś mi brakuje?
thepocketwade
możesz „oszukać” sudo, aby uzyskać powłokę, wpisując sudo su - lub sudo vim, a następnie przechodząc do nowej podpowłoki. Ale jeśli używasz sudo, ponieważ chcesz mieć wszystko zalogowane w syslog (scentralizowane) i wiesz, że można go również użyć do uzyskania kolejnej podpowłoki, to nie widzę w tym nic złego, to tylko bonus, o ile nie polegam tylko na tym.
Jure1873
9

Kolejny dobry powód: podczas przechodzenia na rootowanie przez sudo użytkownik uwierzytelnia się na podstawie własnych poświadczeń, co oznacza, że ​​niekoniecznie musi zostać podane hasło roota, co ułatwia blokowanie rzeczy, gdy ktoś opuści Twoją organizację.

Zenham
źródło
4

Jeśli chcesz utworzyć ścieżkę audytu i nie chcesz paść ofiarą wspomnianych tutaj problemów „sudo su -” lub „sudo vim foo.txt”, możesz użyć „sudosh”. Rozdaj dostęp rootowi przez sudo, ale wykonaj jedyne dozwolone polecenie, aby uruchomić „sudosh”.

sudosh jest powłoką rejestrującą i możesz odtworzyć całą sesję terminala w późniejszym terminie, pokazując dokładnie to, co użytkownik zobaczył na swoim terminalu.

mibus
źródło
Zakłada się oczywiście, że sudosh jest dostępny w systemie. Właśnie sprawdziłem i nie mam go na żadnym z moich Linux'ów.
John Gardeniers,
Możesz także użyć nowego ksh93 z włączonym rejestrowaniem dziennika inspekcji. Sprawdź ten artykuł w IBM developerWorks: ibm.com/developerworks/aix/library/au-korn93/…
Mei
Dość łatwo można go obejść, uruchamiając skrypt powłoki (który następnie czyści się). Utwórz skrypt pod nieszkodliwą nazwą jako użytkownik niebędący audytem (lub zeskanuj go ze stacji roboczej), a następnie sudo i uruchom go. Możesz nawet naprawdę go ukryć, nazywając go „ls” lub jakimś innym i wstawiając go do $ PATH (zmieniając $ PATH, jeśli to konieczne), i sprawi, że wykona swoją brudną robotę podczas wywoływania / bin / ls, aby wyglądał normalnie. Wytrzyj później. Dziennik kontroli nie będzie wiedział, że / home / anthony / bin zawierał „ls”.
derobert
Tak, to nie jest idealne; wiemy o tym - ale jest to cholerna strona lepsza niż zwykłe „sudo su -” IMHO. I tak, nie jest domyślnie instalowany w żadnym miejscu AFAIK. Działa jednak dość dobrze w systemach Solaris i Linux.
mibus
1

Powinieneś ćwiczyć bezpieczeństwo dogłębnie.

Nie zezwalaj na zdalny dostęp do konta root (lub przynajmniej dostęp do konta root za pomocą haseł). (jeśli zezwalasz na dostęp do konta root za pomocą kluczy, dokładnie kontroluj te klucze lub jeszcze lepiej użyj czegoś takiego jak Kerberos, który umożliwia scentralizowane odwoływanie kluczy).

Wyłączę su i użyję sudo. W ten sposób użytkownicy korzystają z klawiszy (najlepiej zaszyfrowane), aby uzyskać dostęp do systemu, a następnie używają ich hasła tylko do przekroczenia uprawnień. Możesz ograniczyć dostęp do programów, do których dostęp mają ludzie za pomocą sudo, ale głównie ograniczasz dostęp do tego, kto zna hasło roota.

W idealnym świecie powinieneś być w stanie opublikować swoje hasła roota w Internecie i nie miałoby to znaczenia, nawet jeśli dałeś ludziom dostęp do twojego komputera (ale nie umieściłeś ich w pliku / etc / sudoers). Oczywiście nie powinieneś publikować hasła roota, ale chodzi o to, aby chronić swoje systemy koncentrycznymi warstwami ochrony.

Chris
źródło
0

Chodzi o to, aby wyłączyć logowanie roota, a zatem nie masz domyślnego konta administratora. W ten sposób atakujący musi odgadnąć zarówno nazwę użytkownika, jak i hasło (a nie tylko hasło).

Johan
źródło
0

Jeśli regularnie korzystasz z roota, twoje uprawnienia mogą być błędne lub być może będziesz musiał przyznać uprawnienia sudo lub nowe prawa grupy do r / w / x plików lub katalogów.

Dobre schematy uprawnień są czymś, co nawet długoterminowi użytkownicy Linuksa mylą się lub nie zdają sobie sprawy z zakresu, jaki mają.

Nawet nie zaczynaj od tego, co zrobił Ubuntu!

Aiden Bell
źródło
-2

To powstrzymuje cię przed uruchomieniem rm -r -f / Właśnie uruchomiłem to 2 dni temu (jako nieuprzywilejowany użytkownik chciałem uruchomić rm -r -f *)

gizmo
źródło
Akceptowana odpowiedź zawierała już wszystkie informacje.
Theuni