chroot je v informatice název pro unixové systémové volání (a též příkaz), které slouží ke změně kořenového adresáře pro daný proces a jeho potomky vzniklé voláním fork(). Chroot nebyl původně navržen jako bezpečnostní prvek, a proto je nutné ho pokládat spíše za ochranu před nechtěnými omyly.[1] Bezpečnější uzamčení programu zajišťuje sandbox.

Bezpečnost použití editovat

Při používání chrootu je nutné dbát zvýšené opatrnosti.[2] Změna kořenového adresáře může být provedena pouze uživatelem root, což je nutné například kvůli bezpečnostnímu riziku, kdy by běžný uživatel systému mohl například „podstrčit“ v chrootu nově vytvořený soubor /etc/passwd. Program poté nový kořenový adresář již nemůže běžným způsobem změnit na nadřízený adresář nebo operaci odvolat. Problémem je však oprávnění správce, které umožňuje zbavit se chroot prostředí jinými způsoby.[3] Program se sice může oprávnění správce zbavit, avšak kvůli chybě v programu uvnitř chroot nebo chybě v jádře systému je může opět získat. Proto není možné chroot považovat za bezpečnostní opatření (jak se však často chybně děje), nýbrž spíše za ochranu před rutinními chybami (například omylem provedené smazání souboru). Proto se chroot využívá např. při testování programů, které by mohly dělat nežádoucí změny v souborovém systému, při vytváření Live CD, opravě poškozeného systému, instalaci systému nebo při sledování prvních kroků potenciálních útočníků.

Příklady použití editovat

V současnosti je mnoho démonů poskytujících služby mimo počítač (do počítačové sítě) uzavřena do tzv. chroot jail (změna kořenového adresáře pomocí systémového volání chroot()). Implementováno je například pro webové servery (Apache, Lighttpd), FTP servery (FTPD, vsftpd), databázové servery (MySQL, PostgreSQL), DNS servery (BIND).

Protože některé operace (např. otevření síťového portu) vyžadují administrátorská oprávnění (v unixových systémech uživatel root), je typicky nejprve provedena tato operace a následně se program uzamkne do chroot jailu a zbaví se administrátorských oprávnění. To však způsobí například nepřístupnost konfiguračních souborů (v unixových systémech typicky v adresáři /etc), speciálních zařízení (/dev) nebo knihoven, které je pak nutné do chrootu nakopírovat.

Reference editovat

  1. ANDREWS, Jeremy. Abusing chroot. KernelTrap [online]. 2007-09-26 [cit. 2010-11-08]. Dostupné v archivu pořízeném dne 2010-09-23.  – neplatný odkaz !
  2. FRIEDL, Steve. Best Practices for UNIX chroot() Operations [online]. unixwiz.net [cit. 2010-11-08]. Dostupné online. (angličtina) 
  3. Simon. How to break out of a chroot() jail [online]. bpfh.net, 2002-05-12 [cit. 2010-11-08]. Dostupné v archivu pořízeném dne 2016-01-27. (angličtina) 

Externí odkazy editovat