Co jest złego w tym, że zawsze jesteś rootem?

83

Mam wrażenie, że to głupie pytanie, ale zastanawiałem się nad tym od jakiegoś czasu.

Mam VPS i to jest moje pierwsze duże przedsięwzięcie z linuksem. Jestem jedyną osobą, która ma do niego dostęp. Moje pytanie brzmi: co jest złego w logowaniu jako root, a nie w zakładaniu konta i zapewnianiu dostępu do sudo? Jeśli sudoer może zrobić wszystko, co root, to jaka jest różnica? Jeśli haker może złamać moje hasło do mojego standardowego konta użytkownika innego niż root, może on również wykonywać polecenia sudo, więc w jaki sposób haker złamał moje konto roota w ogóle mniej lub bardziej?

ryeguy
źródło
28
Chciałbym również skomentować, że jeśli nie jesteś zaznajomiony z „Unix Way”, nie jest to głupie pytanie. Powinieneś otrzymać premię za zastanowienie się, aby zadać pytanie przede wszystkim jako nowy administrator Linuksa.
Bart Silverstrim
I chciałbym skomentować niektóre odpowiedzi. Zwłaszcza te, które mówią „możesz spieprzyć rzeczy rootujące”. Nie sądzę, że o to chodzi ... „rm -rf /” robi to samo co „sudo rm -rf /”. Chodzi o to, że rzeczy takie jak „sudo rm” nie działają, ale „sudo startMyApp na niskim porcie” działa.
Zlatko
co jest złego w byciu nigdy?
ostendali

Odpowiedzi:

70

Jeśli jesteś zalogowany jako root, możesz łatwo wyczyścić katalogi lub zrobić coś, co z perspektywy czasu jest naprawdę głupie w systemie jednym ruchem palca, podczas gdy jako użytkownik zwykle musisz włożyć kilka dodatkowych cykli mentalnych w to, co piszę przed zrobieniem czegoś niebezpiecznego.

Również każdy program uruchamiany jako root jako uprawnienia roota, co oznacza, że ​​jeśli ktoś lub coś zmusza cię do uruchomienia / kompilacji / przeglądania strony internetowej, która jest niebezpieczna i chce uszkodzić system, na przykład trojan lub inne złośliwe oprogramowanie, ma pełny dostęp do twojego system i może robić, co chce, w tym dostęp do portów TCP poniżej 1024 (dzięki czemu może na przykład zmienić Twój system w remailer).

Zasadniczo pytasz o kłopoty, których możesz uniknąć, logując się samodzielnie. Znałem wielu ludzi, którzy w końcu byli zadowoleni, że mieli tę siatkę bezpieczeństwa w chwili nieostrożności.

EDYCJA: Istnieje również kwestia roota, który jest najbardziej znanym, a zatem łatwym celem, dla skryptów i hacków. Systemy, które wyłączają konto i zamiast tego zmuszają użytkowników do korzystania z sudo, oznaczają, że wszelkie próby złamania roota z ssh lub lokalnego exploita na konto uderzają głową w ścianę. Musieliby zgadnąć / złamać hasło i nazwę użytkownika. Jest to do pewnego stopnia bezpieczeństwo poprzez niejasność, ale trudno argumentować, że nie udaremnia większości ataków skryptu dla dzieci.

Bart Silverstrim
źródło
25
+1 - użycie „sudo” powoduje, że wykonywanie programów jako root jest jawnym działaniem. Nie chodzi o „powstrzymywanie hakerów”, chodzi o to, abyś miał nawyk pracy jako użytkownik nieuprzywilejowany i aby inwokacja uprawnień roota była zamierzonym, jawnym działaniem.
Evan Anderson
2
Zaczynam się zastanawiać, czy Evan jest naprawdę sztuczną inteligencją.
Bart Silverstrim
11
Sudo dodaje również ścieżkę audytu. Jak kto, co i kiedy jest zalogowany, gdy działa jako sudo. Który plik dziennika może się różnić w zależności od dystrybucji, ale dystrybucje RedHat zwykle używają / var / log / secure, a Ubuntu używa /var/log/auth.log ... Nie jestem pewien, czy jest to prawdą dla wszystkich dystrybucji opartych na Debianie.
3dinfluence
3
+1 - nie chodzi tylko o prawa do tworzenia lub robienia rzeczy, ale także o prawa do niszczenia. Logowanie się jako root (lub odpowiednik w innym systemie operacyjnym) jest jak chodzenie z bronią z wyłączonym zabezpieczeniem. Być może nigdy celowo nie dotkniesz tego spustu, ale czy zaufasz sobie, że zrobisz to samo?
Maximus Minimus
3
mh: / ja wkłada kowbojski kapelusz, zdejmuje z pistoletu bezpiecznik, otwiera piwo, mamrocząc coś z pomrukiem na bratki, a potem loguje się jako root.
Kyle Brandt
29

Jeśli nie pozwolisz idiocie zalogować się na serwerze jako root, nie zawsze uruchamiaj się jako root. Chyba że potrafisz powiedzieć na pamięć, że nigdy nie byłeś idiotą. Nie naprawdę? Jesteś pewien? :)

Korzyści: zmniejsza prawdopodobieństwo, że będziesz jednocześnie rootem i idiotą.

Tom Newton
źródło
6
+1 - „Korzyść: zmniejsza możliwość bycia rootem i idiotą jednocześnie”. Absolutnie to uwielbiam.
Evan Anderson
+1 za filozofię Scotta Adamsa, że ​​każdy jest idiotą. :) Tak, to znaczy, że ty i ja też.
Ernie,
Oczywiście - to jedno z moich kluczowych pytań podczas rozmów kwalifikacyjnych - kiedy ostatnio spieprzyłeś? Każdy ma, wystarczy przeczytać tutaj wątki o „najbardziej zabawnym fubar sysadmin” lub cokolwiek innego. Jeśli ktoś nie przyzna się do popełnienia prawdziwego głupiego błędu przynajmniej raz w życiu, prawdopodobnie istnieje kilka powodów, dla których nie chcesz z nim pracować.
Tom Newton
9

Głównym powodem są błędy. Jeśli zawsze jesteś rootem, prosta literówka może naprawdę popsuć system. Jeśli logujesz się tylko jako root lub używasz sudo do robienia rzeczy, które tego wymagają, minimalizujesz ryzyko popełnienia niebezpiecznego błędu.

Kyle Brandt
źródło
9

Kiedy jesteś rootem, leniwie podchodzisz do uprawnień, ponieważ masz dostęp do wszystkiego przez cały czas, nie obchodzi cię, kiedy jest 777 lub 644 czy cokolwiek. Jeśli kiedykolwiek pozwolisz komukolwiek innemu w twoim systemie, że nie chcesz mieć dostępu do wszystkiego, nagle staje się to trudnym zadaniem, aby uczynić maszynę bezpieczną dla innych osób.

Stu
źródło
5
Nazywa się to „zgnilizną korzeni”.
kmarsh
1
Podoba mi się ten termin „zgnilizna korzeni”. Rzeczywiście, ciągłe uruchamianie jako root może zmienić maszyny * nix w dziwaczne maszyny podobne do systemu Windows 95, bez widocznego bezpieczeństwa wielu użytkowników. (Pamiętam maszynę SCO sprzed lat, w której każdy użytkownik aplikacji do współdzielonej księgowości działał jako root, ponieważ „sprawił, że problemy z pozwoleniami zniknęły”.> Wzdycha <)
Evan Anderson
Pamiętam, że otrzymałem takie wyjaśnienie - mieli narzędzie do listy mailingowej działające jako root wraz z sendmailem. Moja odpowiedź brzmiała: „Problemy hakerów również zniknęły”.
duffbeer703
7

Istnieje kilka kluczowych powodów, dla których nie loguje się jako root: 1) Hasło roota nigdy nie jest wysyłane przez sieć w czasie logowania 2) Nie ma sposobu, aby powiedzieć, kto coś zrobił, jeśli wielu użytkowników zaloguje się jako to samo konto (root lub inne). 3) Przypadkowo robiąc coś „głupiego”

Jeff Hengesbach
źródło
3

Chodzi o ochronę przed samym sobą, dzięki czemu masz drugą szansę przejrzenia poleceń o wyższych uprawnieniach, które próbujesz uruchomić, analogicznie do UAC w systemie Windows. Bardzo łatwo jest przypadkowo zrobić coś takiego, rm -rf /gdy jesteś zalogowany jako root.

Ponadto masz możliwość śledzenia. Nie jest to duży problem w sytuacji, gdy jesteś jedynym (teoretycznie) wydawającym polecenia, ale zdolność do rejestrowania się i śledzenia z powrotem do konkretnej osoby jest kluczowym składnikiem wielu form analizy.

squillman
źródło
Identyfikowalność ma kluczowe znaczenie w systemach, w których więcej niż jedna osoba pracuje jako administrator systemu. Jest to nie tylko pożądane, że nakazują to systemy regulacyjne.
APC
Zrobiłem to w piątek. zamiast usuwania „/ dump / folder /” I usunięte folder /. Jeden śmierdzący ukośnik przypomniał mi, dlaczego nie logujemy się jako root.
oneodd1,
2

Różnica polega głównie na
tym, że przez przypadek nie można zrobić nic złego.
ten „zły” kod nie może przejąć systemu.
Uwaga: zły kod niekoniecznie oznacza, że ​​ktoś ma już dostęp do systemu.

StampedeXV
źródło
Zauważyłem, że w dzisiejszych czasach zły kod zwykle oznacza boty spamowe, które mogą działać jako każdy użytkownik.
Ernie,
Jeśli myślisz o wirusie (próbującym coś zniszczyć) lub rootkicie, złośliwe oprogramowanie jest o wiele bardziej skomplikowane, jeśli nie jesteś rootem.
StampedeXV
2

Zawsze powinieneś używać kont z najniższym możliwym poziomem uprawnień. Cały czas działanie jako root zachęca do złych nawyków i lenistwa, które czynią życie nieprzyjemnym, gdy pracujesz z wieloma użytkownikami lub narażasz coś na działanie sieci publicznej / półpublicznej.

Należy również pamiętać, że łamanie haseł jest tylko jednym scenariuszem kompromisowym - i nie jest też najczęstszym scenariuszem. Bardziej prawdopodobne jest, że padniesz ofiarą luki w przeglądarce lub luki w zabezpieczeniach niektórych demonów działających w twoim systemie.

Pomyśl o kodzie, którego używasz bez zastanowienia. Na przykład port linuksowy Adobe Flash, który jest parującą kupą kupy, która stała się użyteczna dopiero w stosunkowo niedawnej przeszłości. Jak myślisz, jak bezpieczny jest ten kod? Czy chcesz, aby mógł on w pełni kontrolować Twój system?

duffbeer703
źródło
2

Może zapobiec atakom siłowym SSH. Każdy unix ma konto „root”. Jednak z zewnątrz nie jest jasne, jaka byłaby twoja nazwa użytkownika „sudo”. Dlatego jeśli ktoś chce spróbować brutalnej siły, wie, że istnieje konto root i prawdopodobnie spróbuje. Jednak nie wiedzą, od czego zacząć, jeśli używasz sudo.

Rory
źródło
1

Radzę spróbować przez jakiś czas używać roota; wkrótce odkryjesz, dlaczego nie powinieneś :)

Siekacz 3
źródło
1

Nawet jeśli nie ufam „bezpieczeństwu przez zaciemnienie”, z pewnością istnieje korzyść z używania niestandardowego logowania zamiast dotychczasowego logowania root. W ten sposób można również skonfigurować SSH, aby zapobiec logowaniu się użytkownika root.

Jak powiedzieli inni, root może zrobić wszystko bez żadnego potwierdzenia. Używanie nieuprzywilejowanego użytkownika może zapobiec głupiemu błędowi i literówkom.

Kolejnym argumentem przemawiającym za wieloma kontami użytkowników jest uruchamianie różnych programów dla różnych użytkowników. W ten sposób, jeśli w jednej aplikacji zostanie wykorzystana luka w zabezpieczeniach, exploit może uzyskać dostęp tylko do plików i zasobów dostępnych dla uruchomionego użytkownika.

Ostatni punkt za nieużywanie root: zużycie zasobów. Root nie ma ograniczenia co do ilości pamięci, czasu przetwarzania, programów obsługi plików lub miejsca na dysku. Na wielu systemach plików istnieją bloki danych zarezerwowane tylko dla rootowania. Tak więc normalny użytkownik nigdy nie może ich użyć do zapełnienia dysku. Komendy ulimit można także użyć do ograniczenia pamięci i numeru procedury obsługi plików, które użytkownik może zużyć. Ale jeśli jesteś rootem (lub aplikacją działającą jako root), nic nie stoi na przeszkodzie, aby zmienić ten limit.

rolaf
źródło
0

Tak, zgadzam się z tobą i myślę, że jest to kwestia ochrony przed ludzkimi błędami, a czasem przed złośliwymi programami. Złą rzeczą, której nigdy nie widziałem, jest używanie roota jako domyślnego konta gnome.
Myślę, że większość użytkowników, którzy to robią, to użytkownicy systemu Windows, którzy niedawno przeprowadzili migrację do systemu Linux lub Unix. Spróbuj skopiować wykorzystanie uprawnień administratora do rootowania.

Ali Mezgani
źródło
0

Nie ma nic złego w byciu zalogowanym jako root. Pomaga rozwijać pamięć mięśni, aby wpisywać tylko bezpieczne polecenia i promuje dokładność myślenia podczas wykonywania działań o dużych konsekwencjach. Zdecydowanie polecam pracę jako root, aby uzyskać lepszą administrację systemem.

możesz także robić fajne rzeczy ping -i 0.2 -c 1000 example.com

zawietrzny
źródło