Jak ważne jest hasło sudo?

25

Wiem, że hasło sudo chroni komputer przed lokalnym włamaniem przez osobę mającą do niego fizyczny dostęp ( edytuj: w rzeczywistości tak nie jest ). Moje hasło jest wystarczająco silne do tego celu, ale wiem, że nie jest wystarczająco silne, jeśli ktoś może zdalnie go wymusić.

Czy ktoś może uzyskać dostęp do mojego komputera w trybie root przy użyciu mojego hasła sudo bez fizycznego dostępu do komputera, w standardowej instalacji na komputerze Ubuntu?

  1. Jeśli masz dostęp do sieci, zdecydowanie tak (krótka odpowiedź)
  2. Jeśli nie zwracasz wystarczającej uwagi na bezpieczeństwo, tak (długa odpowiedź)
  3. Jeśli masz uruchomione „ssh” i nie ma 2FA , tak ( komentarze i odpowiedzi)
  4. Można uzyskać dostęp do komputera jako root bez sudo / hasła użytkownika
mxdsp
źródło
dosłownie „ktokolwiek”, włączając mnie, lub na przykład jakiegoś opiekuna ppa, któremu ufam, kogokolwiek innego.
mxdsp,
1
mogą uzyskiwać dostęp przez SSH i sudo do rootowania.
Aizuddin Zali
1
dokładnie. aby to wzmocnić, możesz użyć 2FA. Postępuj zgodnie z tym przewodnikiem
Aizuddin Zali
1
wtedy jesteś uratowany przed atakiem SSH. Istnieje wiele możliwych technik hakerskich, z których korzystają ludzie.
Aizuddin Zali
1
Po prostu nie ma czegoś takiego jak „hasło sudo”.
hobbs

Odpowiedzi:

34

Wiem, że hasło sudo chroni mój komputer przed lokalnym włamaniem przez osobę mającą fizyczny dostęp do niego.

Nie chcę cię zbytnio straszyć, ale jeśli ktoś ma fizyczny dostęp, przekazujesz mu dostęp bez względu na to, jak silne jest twoje hasło. Ktoś będzie potrzebował 1 restartu, aby ta osoba mogła zmienić twoje hasło roota (można to zrobić z „grub rat” bez konieczności podawania twojego aktualnego hasła). Nawiasem mówiąc: ta metoda jest uważana za prawidłową i stanowi funkcję oraz zaakceptowane ryzyko bezpieczeństwa (w przeciwnym razie nigdy nie będziesz w stanie naprawić swojego systemu w przypadku naruszenia hasła).

ale wiem, że nie jest wystarczająco silny, jeśli ktoś może go brutalnie zmusić zdalnie.

Oto coś innego: ROUTER powinien być wystarczająco inteligentny, aby zablokować dostęp z zewnątrz, jeśli jest to powtarzające się żądanie z prośbą o te same informacje w krótkim czasie. Zasadniczo masz tutaj atak DOS (lub DDOS, jeśli atakują Cię 2+ komputery). Router powinien zabić to połączenie i wymusić okres oczekiwania przed zaakceptowaniem nowych żądań z tego połączenia.

Czy ktoś może uzyskać dostęp do mojego komputera w trybie root przy użyciu mojego hasła sudo bez fizycznego dostępu do komputera, w standardowej instalacji na komputerze Ubuntu?

Najpierw muszą się połączyć, a następnie podać hasło sudo. Tryb „root” jest wyłączony i nie można zalogować się bezpośrednio do monitu „#”.

Pamiętaj, że można nadużyć usługi. Jeśli masz „ssh” uruchomione na tym komputerze, a oni mogą „ssh” do twojego systemu i uzyskać nazwę użytkownika i hasło dla tego użytkownika (a ponieważ jest to użytkownik administracyjny, twoje hasło sudo również) mogą uzyskać dostęp do twojego komputera i zepsuć to. Nawiasem mówiąc: jeśli robią to w ten sposób, muszą najpierw znać Twój system (np. Hasło).

Ale wtedy jest problem z tą (i każdą inną metodą): w jaki sposób uzyskali twoje hasło? NIE mogą go pobrać z samego systemu. I generalnie zgadywanie nie jest warte kłopotów. Jeśli został opracowany społecznie ... oznacza to, że masz problem, nie dotyczy to modelu bezpieczeństwa twojego systemu, Ubuntu czy Linuksa w ogóle.

Tak długo, jak twoje hasło sudo jest twoje, będzie / powinno być w porządku. Będzie Ci jeszcze lepiej, jeśli będzie to silne hasło (być może łatwe do zapamiętania dla ciebie, ale nie do odgadnięcia przez innych). Przykład, którego użyłem wcześniej podczas omawiania tego: jeśli Twój pies nazywa się „Abwegwfkwefkwe”, używając hasła „Abwegwfkwefkwe” jako hasła, jest ZŁY, mimo że wygląda dobrze (ponieważ ktoś może zapytać: „jak ma na imię Twój pies” i spróbuje darmowe przypuszczenie). Jeśli nie masz związku z „Abwegwfkwefkwe”, jest to dobre hasło.

Najlepsza rada, jaką mogę udzielić:

  • nie wpisuj hasła administratora, gdy zostaniesz o to poproszony, chyba że wiesz, że było to wymagane. Jeśli otworzysz przeglądarkę i pojawi się wyskakujące okienko, które wygląda jak nasze „prośba o hasło do konta administratora” ... przestań ... i pomyśl najpierw.

  • nie pozostawiaj systemu bez nadzoru, gdy okres karencji „sudo” jest aktywny. sudo --reset-timestampusuwa bieżący okres karencji i poprosi o hasło ponownie przy następnym użyciu „sudo”. Zablokuj ekran, gdy przejdziesz do AFK.

  • nie instaluj usług ani oprogramowania dla zabawy. Jeśli nie potrzebujesz ssh, nie instaluj ssh, jeśli nie korzystasz z serwera, nie instaluj serwera. I spójrz na aktualnie uruchomione usługi. Jeśli nie używasz BT na notebooku, wyłącz go. Jeśli nie korzystasz z kamery internetowej, wyłącz ją (jeśli jest aktywna). Usuń oprogramowanie, którego już nie używasz.

  • a dla naprawdę paranoików (i tak, Paranoiczna Panda, patrzę na ciebie): zmieniaj hasło co jakiś czas. Możesz nawet zainstalować łowców rootkitów, aby sprawdzić, czy dostęp jest niewłaściwy.

  • wykonaj kopię zapasową ważnych danych do czegoś, co utrzymasz w trybie offline. Więc nawet jeśli znajdziesz kogoś w systemie, możesz go sformatować i zacząć od nowa z nową instalacją, a dane zostaną przywrócone.

Rinzwind
źródło
2
Można skrócić sudo --reset-timestampdo sudo -klub sudo -Kdla naprawdę paranoiczne (konieczne tylko wtedy, gdy atakujący może ustawić czas systemowy do dowolnych wartości, przy której prawdopodobnie już utracone).
Kevin,
Jups. Użyłem długiej wersji, więc jest jasne, co robi. „-k” robi to samo.
Rinzwind
1
@mxdsp: Szyfrowanie może uniemożliwić ludziom odczytanie zawartości zaszyfrowanych partycji, jeśli hasło jest wystarczająco silne, ale może być możliwe uzyskanie klucza szyfrowania z uruchomionego lub niedawno zamkniętego komputera. Crypto jest również bardzo szybko rozwijającą się dziedziną i będziesz musiał nadążać za nowymi rozwiązaniami, aby twoje szyfrowanie nie stało się przestarzałe i łatwe do złamania.
Kevin,
1
@mxdsp tak. Po pierwsze: możesz sformatować dysk, a gdy dane znikną ... to Ty masz problemy.
Rinzwind
1
Pierwsza część domyślnie zakłada brak szyfrowania całego dysku.
otus
6

Tak, moga.

Można to jednak zrobić na wiele sposobów, a brutalne wymuszanie sudohasła prawdopodobnie nie jest pierwszym.

Po pierwsze, sudohasło to hasło użytkownika; więc naprawdę musieliby dostać twoje hasło.

Po drugie, złamanie hasła użytkownika za pomocą brutalnej siły w celu uzyskania dostępu do systemu jest prawdopodobnie ostatecznością.

Istnieją znacznie bardziej eleganckie (ale przede wszystkim bardziej skuteczne) sposoby włamania się do innego systemu.

Zazwyczaj atakujący albo po prostu próbuje wykorzystać najczęstsze luki w zabezpieczeniach (najbardziej znane jest uzyskiwanie powłoki użytkownika w jakikolwiek sposób i wykorzystanie ShellShock w celu uzyskania powłoki roota) lub wykonać najlepszą robotę w następujący sposób:

  • Skanowanie otwartych portów w systemie w celu uzyskania informacji takich jak:
    • Wersja systemu operacyjnego
    • Uruchamianie wersji usług
  • Wykorzystywanie znanych błędów systemu operacyjnego lub uruchamianie usług (przepełnienie bufora, ...) w celu uzyskania przynajmniej powłoki użytkownika, a następnie próby uzyskania powłoki roota (ponownie, może wykorzystując ShellShock)

Brutalne wymuszanie sudohasła / użytkownika może być próbą w przypadku, gdy nie można uzyskać powłoki roota w inny sposób, ale na przykład wykorzystanie usługi działającej jako root nie wymaga od atakującego brutalnego wymuszenia sudohasła / użytkownika.

kos
źródło
1
Dziękuję Ci. krótko mówiąc, oznacza to, że atakujący nie potrzebuje hasła sudo, aby uzyskać dostęp do roota?
mxdsp,
2
@mxdsp Dokładnie. Ujmijmy to tak: jeśli atakującemu uda się w jakikolwiek sposób uzyskać powłokę użytkownika sudoer (na przykład eksplorując uruchomiony program użytkownika sudoer), może użyć znanych exploitów (w mojej odpowiedzi wspomniałem o najbardziej niesławnym), aby uzyskać powłokę root, omijając potrzeba użytkownika / sudohasła. Co więcej, jeśli uda mu się wykorzystać usługę działającą jako root, jest on bezpośrednio rootowany.
Kos
1
@mxdsp Teraz jesteśmy dość uogólnieni, ale obejrzyj ten film, aby zrozumieć na przykład, w jaki sposób użytkownik bez sudouprawnień (= ~ użytkownik, który jest zalogowany, ale którego atakujący nie zna hasła) może uzyskać root po prostu wykorzystując znane błędy (w tym przypadku niesławny ShellShock).
Kos
1
@mxdsp Z boku nie miałem na myśli użytkownika sudoers, tylko użytkownika. To nie jest konieczne, myślałem po prostu zbyt wiele rzeczy naraz.
Kos
3
  1. Jeśli w ciągu ostatnich kilku lat nauczyłem się czegoś o bezpieczeństwie, to jedno: nic nie jest niemożliwe .

  2. Tak długo, jak masz dostęp do sieci, zdecydowanie. Każda usługa działająca w twoim systemie, do której można uzyskać dostęp przez sieć, jest teoretycznie podatna na atak, a zatem potencjalną słabość.

Dlatego dla atakującego z wystarczającą liczbą pomysłów jest to możliwe. Możesz uczynić swój system tak bezpiecznym, jak to możliwe, ale nigdy nie możesz uzyskać 100% bezpieczeństwa.

Dlatego ważne jest, aby ocenić, co jest możliwe przy uzasadnionym wysiłku technicznym i co tak dobrze cię chroni, że sam nie możesz już pracować.

AB
źródło
Mam dostęp do sieci. Czy można bardziej szczegółowo określić prawdopodobieństwo tego rodzaju ataku?
mxdsp,
1
użyj uwierzytelniania dwuskładnikowego. Musisz edytować PAM.D i tak dalej.
Aizuddin Zali
@Arronical link pochodzi z tego forum, a także bardzo fajny przewodnik.
Aizuddin Zali
@Arronical umieściłem go w komentarzu do pytania. Przewodnik
Aizuddin Zali
Przepraszam @AizuddinZali Nie odświeżyłem strony!
Arroniczny
2

Wiem, że hasło sudo chroni komputer przed lokalnym włamaniem przez osobę mającą do niego fizyczny dostęp (edytuj: w rzeczywistości tak nie jest). Moje hasło jest wystarczająco silne do tego celu, ale wiem, że nie jest wystarczająco silne, jeśli ktoś może zdalnie go wymusić. Czy ktoś może uzyskać dostęp do mojego komputera w trybie root przy użyciu mojego hasła sudo bez fizycznego dostępu do komputera, w standardowej instalacji na komputerze Ubuntu?

hasło sudo nie służy wyłącznie do lokalnej ochrony, jego celem jest dodanie dodatkowej warstwy zabezpieczeń w celu korzystania z uprawnień administratora. Dobre dyskusje można znaleźć tutaj /superuser//a/771523/467316

Twoje hasło może nie być tak silne, jak myślisz. Obecnie łamie 20-40% skrótów Active Directory mojego klienta dla tych, które widziałem wcześniej, te, które mają złe reguły haseł, są łamane w 70%. Polecam 16-znakowe, złożone hasła. Karty graficzne oclHashcat i Radeon mogą wyrządzić wiele szkód. Dodaj wszystkie zrzuty haseł od każdego naruszenia w ciągu ostatnich 5 lat, a masz dobry słownik, z którego możesz pracować.

Jeśli w ogóle korzystasz z SSH, dokonaj pewnych zmian w sshd_config

sudo nano /etc/ssh/sshd_config

MUSI od razu przejść przez bramę (ostatnia, aby wyłączyć serwer ftp, jeśli go nie używasz).

Protocol 2
X11Forwarding no
PermitEmptyPasswords no
MaxAuthTries 5
#Subsystem sftp /usr/lib/openssh/sftp-server

Zapisz, uruchom ponownie ssh

sudo service ssh restart

Użyj szyfrowania klucza publicznego Rozpocznij od stworzenia sobie klucza na zdalnym komputerze (za pomocą puttygen lub innego smaku dostępnego w systemie operacyjnym). Skopiuj klucz publiczny na maszynę Ubuntu jako użytkownik, którego chcesz się zalogować jako plik autoryzowanych_kluczy (prawdopodobnie będziesz musiał go utworzyć)

sudo nano /home/yourdumbusername/.ssh/authorized_keys

skopiuj klucz publiczny w tym formacie

ssh-rsa 23r0jfjlawjf342rffjfa89pwfj8ewfew98pfrfj8428pfwa9fupfwfcajwfpawf8rfapfj9pf892jpfjpwafj8a where-ever-you-have-your-private-key-for-your-own-notes

zapisz go i skonfiguruj sshd_config, aby umożliwić logowanie za pomocą klucza publicznego

sudo nano /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

zapisz i uruchom ponownie ssh

sudo service ssh restart

Spróbuj SSHing na hoście Ubuntu z komputera z kluczem prywatnym, używając szyfrowania klucza publicznego. Jeśli wszystko poszło dobrze, wróć do hosta Ubuntu i wyłącz uwierzytelnianie hasła.

sudo nano /etc/ssh/sshd_config

PasswordAuthentication no

Zapisz i uruchom ponownie ssh

sudo service ssh restart

Spróbuj ponownie sshing z komputera z kluczem prywatnym, aby potwierdzić.

Chcesz dodać więcej? skonfiguruj konto nieuprzywilejowane, włącz PermitRootLogin nie, zrestartuj ssh, dodaj swój klucz publiczny do kluczy autoryzowanych nowego konta, zaloguj się jako konto nieuprzywilejowane, su do konta root lub uprzywilejowanego, gdy chcesz zrootować lub uprościć sobie drogę.

sonofapharmacist
źródło
2

Cel sudo nie jest związany z hasłem, ale zamiast tego daje niektórym użytkownikom uprawnienia rootowania, jednocześnie ograniczając innych na maszynie, bez konieczności przedstawiania loginu root (hasło / klucz / token bezpieczeństwa / itp.). Na przykład w mojej pracy codzienni pracownicy mogą uruchamiać / zamykać / instalować i aktualizować swoje stacje (z firmowego repozytorium) za pośrednictwem sudo. Nie otrzymują innych podstawowych uprawnień, takich jak celowe usuwanie /, formatowanie urządzeń, dodawanie i usuwanie użytkowników, decydowanie, które moduły jądra powinny znaleźć się na czarnej liście lub co działa w crontabie (itp. Itp.). Natomiast w domu sudo umożliwia pełny dostęp do maszyny. Jeśli chodzi o hasło, w rzeczywistości to hasło do konta użytkownika jest wymagane przez sudo (to samo hasło, którego używałbyś do logowania, jeśli automatyczne logowanie nie jest włączone.

Zła wskazówka : jeśli chcesz, aby root był zwykłym kontem na uniksowym systemie sudo (linux / apple osx), uruchom następujące polecenie

sudo -s
passwd
Enter your unix password:

W tym momencie root ma zwykłe hasło i możesz się po prostu wylogować i zalogować jako root przy użyciu wspomnianego hasła w „stary sposób”.

Jeśli chodzi o bezpieczeństwo, jeśli jeden program (powiedzmy serwer WWW, mysql, demon php, sshd) działa jako konto z podwyższonym poziomem uprawnień .. powiedzmy root i ma znany exploit, wtedy napastnicy mogą nie potrzebować żadnych poświadczeń bezpieczeństwa, aby uzyskać dostęp. Mogą skorzystać z podatności programu i po prostu spawnować nową powłokę z tego programu działającego jako root. Jest to jednak dość rzadkie, ponieważ menedżerowie dystrybucji zdają sobie sprawę z podobnych problemów i wykonują znakomitą pracę, budując dobrze przemyślane i zwykle bezpieczne domyślne środowisko.

W innym systemie operacyjnym operacją podobną do sudo byłoby kliknięcie prawym przyciskiem myszy i uruchomienie jako administrator systemu (lub utrudnianie uprawnień UAC).

użytkownik 283885
źródło