Hlavní navigace

Práva: je lepší root nebo sudo?

Petr Krčmář 16. 5. 2006

Poměrně často se u některých systému setkáváme s vyřazením uživatele root, jehož úloha je nahrazena pomocí příkazu sudo. Pojďme se společně podívat na výhody a nevýhody tohoto řešení a možnosti zlepšení bezpečnosti.

O co jde?

Jako uživatelé unixů se běžně setkáváme se dvěma druhy uživatelů. Běžný franta, igor, lubos nebo pepa123 mají přístup do svého domovského adresáře a nemohou napáchat v systému žádné škody. Uživatel root pak má maximální privilegia a může udělat cokoliv, včetně „populárního” příkazu  rm -rf /.

To se samozřejmě mnoha administrátorům nelíbí a čím dál častěji se tak můžeme setkat se systémy, které roota prostě nemají a spoléhají se na funkci příkazu sudo. Ten umí uživateli patřičká privilegia na chvíli propůjčit, spustit příkaz a zase mu je sebrat. Napadlo mě, jestli má sudo vlastně nějakou výhodu proti klasickému přístupu a jak bychom mohli privilegia roota lépe chránit.

Je to lepší?

Obecně se má za to, že se v případě sudo jedná o bezpečnější řešení, které nenabízí naplno otevřenou cestu do systému. Argumenty pro sudo jsou obvykle dva:

  1. nikdo se nemůže z vnějšku (SSH, FTP) přímo přihlásit jako root
  2. každá akce se sudo je zaznamenána do logu

Bohužel všechno má svůj háček a i v tomto případě je tu několik nevýhod. Pro přístup k nejvyšším právům vám stačí jen jedno uživatelské heslo. Jakmile jej někdo získá (třeba odposlechne předchozí FTP spojení), má stejná práva, jako by získal účet samotného roota.

Výhoda logování odpadá ve chvíli, kdy uživatel zjistí, že může zavolat sudo -s a získá plnohodnotný terminál se vším všudy. Co se bude dít dál pak už na záznamu nebude a jediné, co víme, je, že konkrétní uživatel použil sudo.

Jak vidíte, samotné sudo nic nezaručuje a za standardní situace tedy nelze tvrdit, že by nám přineslo nějaká pozitiva ve smyslu bezpečnějšího systému. Varianty root a sudo jsou tedy rovnocenné. Existuje ale několik věcí, které můžeme obecně pro zvýšení bezpečnosti v obou případech udělat.

Vylepšení uživatele root

V první řadě je možno zakázat přihlašování roota přes ssh. Bude pak potřeba napsat při přihlašování dvě nezávislá hesla. Nejprve se budete muset přihlásit jako běžný uživatel, až potom můžete použít třeba su - a po zadání druhého hesla se stanete rootem. Kromě samotného faktu, že máte prostě dva zámky, zabráníte pokusům o odhad hesla roota přímo přes ssh.

Úprava je poměrně snadná a stačí do souboru /etc/ssh/sshd_config připsat řádek

PermitRootLogin no 

Podobně je možno postupovat v případě FTP, ale tam je obvykle přihlašování roota už zakázáno. Nezabezpečeným protokolem by rootovské heslo posílal jen blázen. Zkontrolovat to ovšem můžeme. Účty, kterým zakazujeme přihlášení přes FTP jsou vypsány v souboru  /etc/ftpusers.

Pokud jsme se rozhodli pro variantu s účtem roota, měli bychom zakázat použití sudo, aby nám nikdo „nelezl do zelí”. Je proto ještě potřeba změnit jeden řádek v /etc/sudoers. Ten obvykle povoluje vybrané skupině uživatelů používat sudo. Řádek vypadá přibližně takto:

%wheel        ALL=(ALL)       ALL 

V tomto případě je privilegovanou skupinou wheel a všichni uživatelé v ní mohou neomezeně sudo používat. Tento řádek zakomentujte nebo smažte.

Vylepšení sudo

Může se stát, že budete mít přesto nějaký důvod sudo použít. Také existuje několik možností, jak mu pomoci. V první řadě můžete omezit příkazy, které je možno s pomocí sudo spouštět. To zařídíte opět v souboru /etc/sudoers, ve kterém můžete vyjmenovat jednotlivé spustitelné soubory. Formát souboru podporuje aliasy, které celý proces zpřehledňují. Příklad takového souboru:

Cmnd_Alias RESTART=/sbin/reboot
restart ALL=(ALL)   RESTART 

Tímto jsme určili, že uživatelé, kteří patří do skupiny restart mají právo zavolat se sudo příkaz /sbin/reboot a tím restartovat počítač. Jednotlivé příkazy je možno oddělit čárkou a umožnit tak širší využití.

Další velmi šikovnou a doporučenou možností je požadovat po uživateli při použití sudo další heslo. Musíme k tomu použít malou fintu. Nejdříve aktivujeme účet roota, vybereme mu heslo a jako shell mu nastavíme /bin/false. Tím zajistíme, že nebude možno se na tento účet přihlásit. Do konfiguračního souboru /etc/sudoers pak napíšeme

DEFAULTS:ALL    rootpw 

To zajistí, že při každém použití bude po uživateli požadováno heslo roota. Pochopitelně můžeme vše zkombinovat a využití sudo omezit na konkrétní příkazy a uživatele a ještě chtít při použití heslo.

Závěrem

Sudo není rozhodně samospasitelné a jeho nasazení v systému místo klasického účtu roota nemusí přinést zásadní zlepšení bezpečnostní situace. Pokud ale provedeme správné zásahy a vše ještě „dokonfigurujeme”, získáme bezpečnější systém.

Anketa

Používáte sudo nebo roota?

Našli jste v článku chybu?

6. 6. 2006 12:41

gorila (neregistrovaný)
...co dělali ve Visual FoxPro. Maník co kóduje VFP z cca 40-50% si je těchto věcí vědom. Bastlující trotlové se nacházejí všude.

22. 5. 2006 10:11

Dump (neregistrovaný)
Jasne ze to jde, tisknem takhle na tuto tiskarnu i pod userem. Takze problem neni ve Win ani HP:-) Staci ji nainstalovat pod adminem
Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Podnikatel.cz: Na poslední chvíli šokuje vyjímkami v EET

Na poslední chvíli šokuje vyjímkami v EET

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí