Výrazně aktualizováno po 69 hlasech pro, původní odpověď naleznete v historii odpovědí. Děkujeme @JimmyJames za diskuzi.
Nejprve si promluvme o modelu hrozby:v čem se snažíte potenciálnímu útočníkovi zabránit?
Model hrozby:krádež identity / ransomeware v systému pro jednoho uživatele
Obecně pro systémy koncových uživatelů de facto modelem hrozby je krádež identity / ransomware. Pokud má útočník přístup k vašim dokumentům a/nebo může spouštět příkazy shellu jako vy, je konec hry. Z tohoto pohledu přístup root útočníkovi nic nezíská; mohou bez toho získat, co chtějí.
Pokud je krádež identity / malware jediná věc, které se obáváte, pak se nezdá, že by na tom příliš záleželo, zda má váš uživatel sudo
nebo zda prohlížeč běží jako root.
(Měl bych také zdůraznit, že k malwaru / připojení k botnetu může dojít bez přístupu root, protože přihlašovací skripty / plánování úlohy cron nevyžadují root).
Zdá se, že Randall Munroe z XKCD s tímto názorem souhlasí:
Nakonec přidám toto vyloučení odpovědnosti:Ano, jsem si vědom toho, že to odporuje obecnému veřejnému mínění, že „větší bezpečnost je vždy lepší“. Prostě to není pravda. Někdy je větší zabezpečení horší, například příliš složité zásady hesel, které nakonec nutí lidi, aby si svá hesla zapisovali. Vždy se musíte podívat na rizika a rozhodnout se, jak velké zabezpečení je skutečně vhodné. V tomto případě není na škodu uzamčení přístupu root, ale komplikujete si život a není jasné, že tím něco získáváte.
Model hrozby:root přístup nebo víceuživatelský systém
Pokud máte model hrozby, kde útočník chce něco, k čemu má přístup pouze root, nebo pokud je na počítači více než jeden uživatelský účet, pak odpověď ve skutečnosti závisí na tom, o kterém *nixu mluvíte. To se rychle dostává pryč z osobních počítačů a do serverových skříní, ale přesto budu diskutovat. V případě linuxu by kvůli chybě (*ehm funkce*) v okenním systému Xorg neměl váš každodenní účet pravděpodobně obsahovat sudo
pravomoci. Pro operační systémy, které nepoužívají X, je to pravděpodobně v pořádku.
Linux (s okenním systémem X.org)
Zde je skvělý článek, který vám ukáže, jak zaznamenat všechny úhozy na počítači s linuxovým gui pomocí jednoduchého příkazu shellu user-land (non-root). Shrnuto:
$ xinput list
zobrazí všechna připojená zařízení s lidským vstupem
$ xinput test <id>
začne opakovat všechny stisknuté klávesy na vybraném zařízení.
Testoval jsem a dostávám protokoly hesla, které zadávám do sudo
v jiném okně terminálu. Pokud zamknu počítač, při opětovném přihlášení se zobrazí protokoly hesla, které jsem zadal na zamykací obrazovce. Zjevně to není chyba v X, je to funkce. Dobře, teď se půjdu schovat pod postel.
Takže ano, to podporuje myšlenku, že žádný uživatel, se kterým se přihlásíte v gui, by neměl mít sudo
pravomoci, protože je triviální přihlásit své heslo a poté se stát rootem. Předpokládám, že měli byste mít vyhrazený účet pro sudo
a přepněte na terminál TTY (ctrl+alt+#
), když chcete použít sudo
. Zda vám to stojí za to dělat si starosti, nebo ne, je na vás:osobně mám všechna data, která mě zajímají, již v mém uživatelském účtu, ale pravděpodobně změním nastavení svého notebooku, protože jsem bezpečnostní odborník.
Všimněte si, že v mých testech jsem nebyl schopen keylogovat mezi uživateli. Provedením "Přepnout účet" v gui nebo startx
Zdá se, že v novém terminálu tty spouští izolovanou instanci X.
Děkujeme @MichaelKjörling za tento postřeh:
To je jedna z věcí, kterou se Wayland [systém oken navržený jako náhrada X] ve skutečnosti snaží opravit (viz odrážka o zabezpečení). Pamatujte, že X11 vznikl v době, kdy byl model hrozeb výrazně odlišný od toho, co je dnes.
Pro systémové správce :to posiluje zvyk interagovat s linuxovými boxy pouze přes ssh, nikdy nepoužívejte GUI.
Mac OSX
Nejsem odborník na OSX, ale vím, že nepoužívá server Xorg, takže bych předpokládal, že GUI společnosti Apple to zvládá správně, ale byl bych rád, kdyby to zvážil někdo expertnější než já.
Windows
Nejsem ani odborník na Windows, ale domnívám se, že funkce Řízení uživatelských účtů (UAC) zavedená ve Windows 7 to vyřešila tím, že se výzvy správce vykreslovaly na zabezpečené ploše, jejíž vstupní sběrnice jsou izolovány od vaší běžné plochy.
Ve většině situací je vyžadování hesla pomocí sudo dostatečnou ochranou.
Hlavní rozdíl mezi su
ing na jiný účet a sudo
Získání oprávnění spočívá v tom, že pomocí sudo zadáte stejné heslo, jaké jste použili k přihlášení. Pokud váš model ohrožení předpokládá, že útočník zná heslo k vašemu účtu, pak jste již v dost hlubokých potížích, více než jiné heslo na účtu root vás ochrání před.
Zjistil jsem, že mít dva účty na svých unixových systémech je nezbytné z následujícího důvodu:
Pokud si někdy pokazím svůj .bashrc nebo jiný přihlašovací/terminálový nastavovací soubor, mohu se dostat do situace, kdy se nebudu moci ani přihlásit. Takže mě to úplně štve. Toto je nejhorší situace, jakou si lze představit, protože pokud se nemůžete přihlásit, nemůžete mnoho dělat.
Jediný způsob, jak jsem to mohl opravit na několika počítačích, bylo mít jiné přihlášení, které mi umožňuje vstoupit a pomocí sudo opravit spouštěcí soubory pro můj primární účet. Poté se odhlásím ze svého účtu '2' a vrátím se ke svému běžnému účtu.
Někdy možná být schopen použít možnost bootování z USB, ale abych byl upřímný, zjistil jsem, že se mohu přihlásit k jinému účtu, použít sudo a opravit můj .bashrc, poté se odhlásit a zpět do druhého účtu, to vše lze provést během několika sekund s druhým přihlášením a mnohem méně děsivé / neznámé než možnost opravy spouštění USB. Samozřejmě YMMV (Your Mileage May Very)