Erinevus lehekülje "Apache mod chroot" redaktsioonide vahel

Allikas: Kuutõrvaja
(Install)
 
(ei näidata ühe teise kasutaja 10 vahepealset redaktsiooni)
1. rida: 1. rida:
 
===Sissejuhatus===
 
===Sissejuhatus===
  
chroot(2) changes the root directory of a process to a directory other than "/". It means the process is locked inside a virtual filesystem root. If you configure your chroot jail properly, Apache and its child processes (think CGI scripts) won't be able to access anything except the jail.
 
  
There are many documents about running programs inside a chroot jail. Some daemons (tinydns, dnscache, vsftpd) support it out of the box. For others (like Apache) you need to carefully build a "virtual root", containing every file the program may need.  
+
Chroot muudab protsessi juur failisüsteemi mingisse kindlasse kausta.
Creating this structure is great fun. Run the program, read the error message, copy the missing file, start over. Now think about upgrading - you have to keep your "virtual root" current - if there is a bug in libssl, you need to put a new version in two places. Scared enough? Read on.
+
Ehk teisitiöeldult protsess on lukustatud kindlasse kausta. Antud näites
 +
apache ja tema child protsessid pole võimelised pääsema kuhugi väljapoole chrootu.
  
Lähemalt sellest tehnikast
+
On üsnagi palju dokumente kuidas programme käivitada chroot keskkonnas. Mõned teenused
 +
(tinydns, dnscache, vsftpd) sisaldavad juba enda sees koodi ,et teostada chrootimist.
 +
Kuid päris paljud (näiteks apache) vajavad eraldi loodud "virtuaalset juurkataloogi"
 +
mis peab sisaldama kõiki faile mida programm vajab
 +
 
 +
Sellist struktuuri luua on suhteliselt keerukas. Käivita programm, loe veateateid,
 +
kopeeri puuduvaid faile, käivita taaskord. Kui mõelda veel sellise süsteemi uuendamise peale -
 +
näiteks kui on turvaviga libssis ning pead uue versiooni kopeerima kahte erinevasse kohta.
 +
 
 +
Lähemalt sellest apache chroot raskemast buildimise tehnikast lingil
  
 
http://www.faqs.org/docs/securing/chap29sec254.html
 
http://www.faqs.org/docs/securing/chap29sec254.html
  
mod_chroot allows you to run Apache in a chroot jail with no additional files. The chroot() system call is performed at the end of startup procedure - when all libraries are loaded and log files open.
+
mod_chroot lihtsustab väga tugevalt apache käivitamist chroot keskkonnas. Nimelt
 +
chroot() käsk käivitatakse apache startimise protsessi lõpus. Kui librad on laaditud
 +
ning log failid avatud. Seetõttu ei pea mod_chrooti kasutades mingeid lisafaile
 +
kuhugi kindlasse kausta paigutada vaid saab hõlpsasti installitud apache chrootida.
 +
Järgnevalt sellest lähemalt.
  
 
===Install===
 
===Install===
20. rida: 33. rida:
 
viimane kasutab FreeBSD jail süsteemi käske apache eraldamiseks.
 
viimane kasutab FreeBSD jail süsteemi käske apache eraldamiseks.
  
 
+
Mina kasutasin mod_chroot moodulit lisaks koos mpm-itk toega
 +
ning soovitaks maksimaalse turvalisuse saavutamiseks sellist kombinatsiooni.
 +
(mod_chroot koos MPM itk toega töötab kuni apache versioonini 2.2.9 Alates apache versioonist 2.2.10 on mod_chroot juba apache sisse ehitatud aga seda ainult worker, prefork ja peruser MPM'dega. Kuna MPM-itk sisse pole mod_chroot'u ehitatud siis antud meetodit (MPM-itk + mod_chroot) alates apache versioonist 2.2.10 kasutada ei saa.)
  
 
Loome vajalikud kaustad. Kaust kus hakkab elutsema chrooditud apache on edaspidi '''/home/chroot'''
 
Loome vajalikud kaustad. Kaust kus hakkab elutsema chrooditud apache on edaspidi '''/home/chroot'''
42. rida: 57. rida:
 
===Testimine===
 
===Testimine===
  
 +
Testimiseks proovime php skriptiga liikuda chroodust välja.
 
Tekitame kausta /home/chroot/var/www/html
 
Tekitame kausta /home/chroot/var/www/html
  
 
  mkdir -p /home/chroot/var/www/html
 
  mkdir -p /home/chroot/var/www/html
  
Virtualhosti kirjutame kataloogiks
+
ja loome virtualhosti kuhu kirjutame kataloogiks
  
 
  /var/www/html
 
  /var/www/html
73. rida: 89. rida:
  
 
  Unable to open /etc/
 
  Unable to open /etc/
 +
 +
Muidugi pole mod_chroot mõeldud vaid php chrootimiseks. Selleks
 +
on juba php's endas hulga vahendeid. Mod_chroot on mõeldud kõigi
 +
apache moodulite vahele üheks turvakihiks (näit mod_perl, mod_ruby jpt)
  
 
===Lingid===
 
===Lingid===
  
 
http://core.segfault.pl/~hobbit/mod_chroot/
 
http://core.segfault.pl/~hobbit/mod_chroot/
 +
 +
Apache Chrootimist võimaldab ka mod_security
 +
 +
http://www.modsecurity.org/documentation/modsecurity-apache/2.1.3/modsecurity2-apache-reference.html#N1034D
 +
 +
Enamikel juhtudel piisab samuti lihtsalt php open basedir paikaseadmiest
 +
 +
http://ee.php.net/features.safe-mode

Viimane redaktsioon: 22. veebruar 2009, kell 22:40

Sissejuhatus

Chroot muudab protsessi juur failisüsteemi mingisse kindlasse kausta. Ehk teisitiöeldult protsess on lukustatud kindlasse kausta. Antud näites apache ja tema child protsessid pole võimelised pääsema kuhugi väljapoole chrootu.

On üsnagi palju dokumente kuidas programme käivitada chroot keskkonnas. Mõned teenused (tinydns, dnscache, vsftpd) sisaldavad juba enda sees koodi ,et teostada chrootimist. Kuid päris paljud (näiteks apache) vajavad eraldi loodud "virtuaalset juurkataloogi" mis peab sisaldama kõiki faile mida programm vajab

Sellist struktuuri luua on suhteliselt keerukas. Käivita programm, loe veateateid, kopeeri puuduvaid faile, käivita taaskord. Kui mõelda veel sellise süsteemi uuendamise peale - näiteks kui on turvaviga libssis ning pead uue versiooni kopeerima kahte erinevasse kohta.

Lähemalt sellest apache chroot raskemast buildimise tehnikast lingil

http://www.faqs.org/docs/securing/chap29sec254.html

mod_chroot lihtsustab väga tugevalt apache käivitamist chroot keskkonnas. Nimelt chroot() käsk käivitatakse apache startimise protsessi lõpus. Kui librad on laaditud ning log failid avatud. Seetõttu ei pea mod_chrooti kasutades mingeid lisafaile kuhugi kindlasse kausta paigutada vaid saab hõlpsasti installitud apache chrootida. Järgnevalt sellest lähemalt.

Install

Gentoos hetkel portages (Thu Oct 25 12:36:38 EEST 2007) oli mod_chroot masked by keywords ning tuli umaskida enne käsku emerge mod_chroot

FreeBSD omab nii mod_chroot kui ka mod_jail porti viimane kasutab FreeBSD jail süsteemi käske apache eraldamiseks.

Mina kasutasin mod_chroot moodulit lisaks koos mpm-itk toega ning soovitaks maksimaalse turvalisuse saavutamiseks sellist kombinatsiooni. (mod_chroot koos MPM itk toega töötab kuni apache versioonini 2.2.9 Alates apache versioonist 2.2.10 on mod_chroot juba apache sisse ehitatud aga seda ainult worker, prefork ja peruser MPM'dega. Kuna MPM-itk sisse pole mod_chroot'u ehitatud siis antud meetodit (MPM-itk + mod_chroot) alates apache versioonist 2.2.10 kasutada ei saa.)

Loome vajalikud kaustad. Kaust kus hakkab elutsema chrooditud apache on edaspidi /home/chroot

mkdir /home/chroot/
mkdir -p /home/chroot/var/www
mkdir -p /home/chroot/var/run


Seejärel tuleb laadida mod_chroot moodul ja lisada httpd.conf'i read

ChrootDir    /home/chroot/
DocumentRoot /var/www/html
PidFile      /var/run/apache2.pid 

Pid tekib ka chroot sisse seega kui apache näeb seda kui kausta /var/run/ Siis reaalselt süsteemipoolt on selleks /home/chroot/var/run

Ning süsteemipoolt documentroot täisrada on /home/chroot/var/www/

Testimine

Testimiseks proovime php skriptiga liikuda chroodust välja. Tekitame kausta /home/chroot/var/www/html

mkdir -p /home/chroot/var/www/html

ja loome virtualhosti kuhu kirjutame kataloogiks

/var/www/html

Tekitame test php faili kausta /home/chroot/var/www/html Sisuks järgnev php kood mis avab $path muutujas antud kausta /var/ ja näitab selle sisu.

$path = "/var/";
   $dir_handle = @opendir($path) or die("Unable to open $path");
   while ($file = readdir($dir_handle)) {
       echo "$file";
       echo "< br >";
   }
   closedir($dir_handle);

tulemus seda brauseris käivitades oleks

www
run


muutes $path = "/etc/";

Vastuseks

Unable to open /etc/

Muidugi pole mod_chroot mõeldud vaid php chrootimiseks. Selleks on juba php's endas hulga vahendeid. Mod_chroot on mõeldud kõigi apache moodulite vahele üheks turvakihiks (näit mod_perl, mod_ruby jpt)

Lingid

http://core.segfault.pl/~hobbit/mod_chroot/

Apache Chrootimist võimaldab ka mod_security

http://www.modsecurity.org/documentation/modsecurity-apache/2.1.3/modsecurity2-apache-reference.html#N1034D

Enamikel juhtudel piisab samuti lihtsalt php open basedir paikaseadmiest

http://ee.php.net/features.safe-mode