Ahoj,
ale jo, myslim, ze je fajn zminit pomocnika jailkit. Ale rad bych se dozvedel - tady v diskusi - k cemu se vubec chroot pouziva. Jako bezpecnostni reseni to pry neni dobre (ale kdo z nas tady na foru se umi dostat z chrootu?). K cemu to ale jinak je?
Jednou velmi davno jsem pouzil chroot, kdyz jsem bootoval z diskety tomtools a nejak jsem opravoval system. Ale uz si nevybavuju, proc to bylo nutny.
Linux z nejkeho duvodu pritahuje mimo jine male lidi s velkym egem. Nerikam, ze predchozi autor je takovy, jen mi jeho poznamka evokuje tuhle situaci.
Ciste technicky - konstatovani: kazdy rozumny to chape, jen ty nicemu nerozumis a otravujes fora ani neresi dotaz a ani neprispiva k redukci zbytecnych postu na forech.
Ciste sociologicky - takove konstatovani je zpusobem, jak ukazat ve spolecnosti sve nadrazene postaveni. Pritom ve skutecnosti neni k tomuto prohlaseni nutna nijaka znalost a tedy takovy zpusob budovani si spolecenske pozice muze lehce pouzivat i ten, kdo vi, ze existuje prikaz man.
Ciste prakticky - obcas zazni akronym RTFM, ktery ukazuje na nejlepsi odpoved na dany dotaz - v rade pripadu ovsem jde o spis o predani knowhow, ci spise jeste kulturnich hodnot. A na to man nestaci.
btw.: chroot je jednoducha vec, umozni procesu, aby si 'myslel', ze nejaky adresar (napr. /home/apache) je jeho rootovsky adresar (t.j. adresar /). Proces teda pri pristupe na /bin v skutocnosti pristupuje k /home/apache/bin. Vyhodou je, ze pokial sa kvoli nejakej bezpecnostnej diere pokusi dostat uzivatel k datam mimo povolenej adr. struktury (napr. trik cez ../../tmp), nepodari sa mu to, kdezto, keby spravil ../../tmp v /home/apache bez chroot, dostal by sa do realneho /tmp adresara.
Gratuluji Vam a mate moji podporu! Moc krasne jste vystihl vsechny ty podivny lidi kolem linuxu. Sam se linuxu venuji a je mi smutno, kdyz vidim komentare ve stylu toho na ktery jste reagoval.
VB
ja pouzivam chroot na beh binarnych aplikacii ktore boli kompilovane na 32bit, sources nie su a casom masiny presli na 64bit... Teoretickym riesenim je aj virtualizacia, ale toto sa mi javi ako lepsie riesenie
Hmm, omlouvám se za mystifikaci, koukal jsem do manuálových stránek k BSD, tam to nejde. U Linuxu je explicitně napsáno, že to lze. (docela by mě zajímalo, proč s tím někdo něco neudělá)
Pokud je ovšem v chrootu připojený /dev (nebo povolen mknod()) a aplikace běží pod rootem, tak ani další chroot() nebotřebuje, a může páchat, co se jí zlíbí.
Na útěk z chrootu stačí dokonce i jediný omylem zapomenutý otevřený soubor.
Nabootoval jsi z diskety, ale potřeboval jsi pracovat se systémem, jako kdyby běžel -> chroot. K ničemu jiného to prakticky moc není (utéct z chrootu je sice dnes již prakticky nemožné, kernel si to velice hlídá, ale aplikace má úplný přístup k síti a posílání signálů jiným aplikacím a někdy i dev zařízením, což na páchání škod úplně stačí).
Jinak pro zabezpečení aplikací je nejlepší používat virtualizaci, případně systrace.
i pres vsechny ty reci o nizke bezpecnosti chrootu, pouzivam na svy malych serverech pro apache modul mod_chroot (http://core.segfault.pl/~hobbit/mod_chroot/), a musim rici, ze dle logu mi resi vetsinu dnesnich automatizovanych utoku na webserver. v error logach se mi to projevuje napriklad nasledne:
sh: line 1: perl: command not found
sh: line 1: id: command not found
sh: line 1: uname: command not found
sh: line 1: sysctl: command not found
sh: line 1: sysctl: command not found
sh: line 1: sysctl: command not found
sh: line 1: sysctl: command not found
sh: line 1: id: command not found
sh: line 1: ls: command not found
sh: line 1: uname: command not found
sh: line 1: sysctl: command not found
sh: line 1: sysctl: command not found
sh: line 1: sysctl: command not found
sh: line 1: sysctl: command not found
sh: line 1: id: command not found
sh: line 1: which: command not found
sh: line 1: cannot redirect standard input from /dev/null: No such file or directory
sh: line 1: perl: command not found
sh: line 1: uname: command not found
sh: line 1: sysctl: command not found
sh: line 1: sysctl: command not found
sh: line 1: sysctl: command not found
sh: line 1: sysctl: command not found
sh: line 1: id: command not found
sh: line 1: which: command not found
i kdyz se mi tam holt nekdo bude chtit dostat, tak se mi tam rozhodne dostane, ale aspon mu muzu jeho prunik trosku stizit, ze?
jo je to pravdepodobne, protoze na tech serverech je hostovani vetsi mnozstvi php aplikaci, ktery byly psany ruznymi autory na ruznych urovnich znalosti, coz ja neovlivnim. chtel jsem jen poukazat na to, ze kdybych nemel apache v chrootu, tak sem asi o trosku vice v haji zelenym....
Nebylo by lepší použít setuid CGI skripty? Takhle sice útočník nemůže nic udělat s ostatními aplikacemi, ale může zkusit haluzit se soubory ostatních hostovaných.