GNU/Linux >> Znalost Linux >  >> Linux

Jaký je nejbezpečnější způsob, jak získat kořenová oprávnění:Sudo, Su Nebo Přihlásit?

Chtěl bych mít účet root v bezpečí, i když bude ohrožen můj neprivilegovaný uživatel.

Na Ubuntu můžete ve výchozím nastavení používat sudo pouze z „bezpečnostních důvodů“. Nejsem si však jistý, že je to bezpečnější než pouhé přihlášení na konzole v textovém režimu. Existuje příliš mnoho věcí, které se mohou pokazit, pokud útočník může spustit kód jako můj běžný uživatel. Například přidávání aliasů, přidávání věcí do mé PATH, nastavení keyloggerů LD_PRELOAD a X11, abychom zmínili alespoň některé. Jedinou výhodou, kterou vidím, je časový limit, takže se nikdy nezapomenu odhlásit.

Mám stejné pochybnosti o su, ale nemá ani časový limit. Některé operace (zejména přesměrování IO) jsou pohodlnější se su, ale z hlediska bezpečnosti se to zdá být horší.

Přihlášení na konzoli v textovém režimu se zdá být nejbezpečnější. Protože je spuštěn init, pokud útočník může ovládat PATH nebo LD_PRELOAD, je již root. Události stisku klávesy nemohou být zachyceny programy běžícími na X. Nevím, jestli programy běžící na X mohou zachytit [ctrl]+[alt]+[f1] (a otevřít okno na celou obrazovku, které vypadá jako konzole) nebo je to bezpečné jako [ctrl]+[alt]+[del] ve Windows. Kromě toho jediný problém, který vidím, je nedostatek časového limitu.

Takže mi něco chybí? Proč se kluci z Ubuntu rozhodli povolit pouze sudo? Co mohu udělat pro zlepšení zabezpečení kterékoli z metod?

A co SSH? Root se tradičně nemůže přihlásit přes SSH. Ale použití výše uvedené logiky by nebylo nejbezpečnější:

  • povolit root přes SSH
  • přepnout do textového režimu
  • přihlaste se jako root
  • ssh na druhý počítač
  • přihlásit se jako root?

Přijatá odpověď:

Bezpečnost je vždy o kompromisech. Stejně jako příslovečný server, který je v root na dně oceánu, odpojený od elektrické sítě. by bylo nejvíce bezpečný, pokud by k němu nebyl vůbec žádný způsob přístupu.

Útoky LD_PRELOAD a PATH podobné těm, které popisujete, předpokládají, že již existuje útočník s přístupem k vašemu účtu nebo alespoň k vašim souborům dot. Sudo proti tomu nechrání vůbec dobře – pokud mají vaše heslo, koneckonců není třeba se vás pokoušet oklamat na později… stačí jim použít sudo teď .

Je důležité vzít v úvahu, k čemu bylo Sudo původně navrženo:delegování konkrétního příkazy (jako ty pro správu tiskáren) „podadministrátorům“ (možná postgraduálním studentům v laboratoři), aniž by se úplně vzdali root. Pomocí sudo uděláte vše je nejběžnější použití, které teď vidím, ale není to nutně problém, který měl program vyřešit (proto ta směšně komplikovaná syntaxe konfiguračního souboru).

Ale sudo-for-unrestricted-root dělá řeší další bezpečnostní problém:spravovatelnost hesel root. V mnoha organizacích mají tendenci být předávány jako bonbón, psány na tabule a ponechány navždy stejné. To ponechává velkou zranitelnost, protože zrušení nebo změna přístupu se stává velkým produkčním číslem. Dokonce i sledování toho, který počítač má jaké heslo, je výzvou – natož sledování toho, kdo který.

Související:Co dostanu, když sudo program destruktivní jádra?

Pamatujte, že většina „kybernetické kriminality“ pochází zevnitř. S popsanou situací s heslem uživatele root je těžké vystopovat, kdo co udělal – něco, s čím si sudo se vzdáleným protokolováním poradí docela dobře.

Na vašem domácím systému si myslím, že jde spíše o pohodlí, kdy si nemusíte pamatovat dvě hesla. Je pravděpodobné, že mnoho lidí je jednoduše nastavilo tak, aby byly stejné – nebo ještě hůř, nastavili je tak, aby byly zpočátku stejné, a pak je nechali, aby se nesynchronizovaly, takže heslo roota bylo zničeno.

Používání hesel vůbec protože SSH je nebezpečné, protože trojské ssh démony, které sledují hesla, se používají v přibližně 90 % skutečných systémových kompromisů, které jsem viděl. Je mnohem lepší používat klíče SSH a to může být funkční systém i pro vzdálený přístup root.

Problém je však v tom, že jste nyní přešli ze správy hesel na správu klíčů a klíče ssh ve skutečnosti nejsou příliš spravovatelné. Neexistuje žádný způsob, jak omezit kopie, a pokud někdo vytvoří kopii, má všechny možné pokusy, aby heslo vynutil hrubou silou. Můžete vytvořit zásadu, že klíče musí být uloženy na vyměnitelných zařízeních a připojeny pouze v případě potřeby, ale neexistuje žádný způsob, jak to vynutit – a nyní jste představili možnost ztráty nebo odcizení vyměnitelného zařízení.

Nejvyšší zabezpečení bude dosaženo prostřednictvím jednorázových klíčů nebo kryptografických tokenů založených na čase/počítadle. Ty lze provést softwarově, ale hardware odolný proti neoprávněné manipulaci je ještě lepší. Ve světě open source existují WiKiD, YubiKey nebo LinOTP a samozřejmě existuje také proprietární těžký RSA SecurID. Jste-li ve střední až velké organizaci, nebo dokonce v malé organizaci, která si uvědomuje bezpečnost, důrazně doporučuji podívat se na jeden z těchto přístupů pro administrativní přístup.

Je to však pravděpodobně přehnané pro domácnosti, kde ve skutečnosti nemáte problémy se správou – pokud dodržujete rozumné bezpečnostní postupy.


Linux
  1. Jaký je nejbezpečnější způsob, jak vyprázdnit adresář v *nix?

  2. Získat celkovou velikost mého pevného disku v Linuxu pomocí příkazového řádku bez oprávnění root?

  3. Jak získat číslo displeje, které mi přidělil X

  1. Jak fungují vnitřnosti sudo?

  2. Proč se heslo 'sudo' liší od hesla 'su root'

  3. Je mým úkolem jako správce Linuxu zrušit oprávnění uživatele root aplikací, nebo úkolem vývojáře aplikací?

  1. Proč potřebuje uživatel root oprávnění sudo?

  2. Linux:Jak získat všechny přihlašovací protokoly ze systému?

  3. Extrahujte sériové číslo Linuxu bez sudo