Megosztanám apache2 chroot-os telepítési tapasztalataim. De miért is érdemes vesződni a jailbe zárással. A válasz egyértelmű. A web támadók nem fognak a webszerver feltörése után könnyű szerrel a további dolgainkhoz férni. Természetesen ez csak egy újabb akadály...
Hát akkor készitsünk először egy alap rendszer struktúrát a kiválasztott jail könyvtár alá a debootstrap utsítással.
server:/#debootstrap sarge /var/apache2chroot http://ftp.hu.debian.org/debian
vagy:
server:/#debootstrap --arch i386 sarge /var/apache2chroot
Másoljunk át, ellenőrizzünk pár fontos konfigurációs állományt:
server:/var/apache2chroot#cp /etc/apt/sources.list /var/apache2chroot/etc/apt/sources.list
server:/var/apache2chroot#cat /var/apache2chroot/etc/resolv.conf
server:/var/apache2chroot#cat /var/apache2chroot/etc/hostname
Adjunk új sorokat az /etc/fstab állományunkba:
proc /var/apache2chroot/proc proc defaults 0 0
A tempet is fel lehet mountolni a jailbe újra, de nem kötelező.
/dev/md1 /var/apache2chroot/tmp ext2 defaults,nodev,nosuid,noexec 0 2
Sőt a /var/www-t is akár read-only módban is ha a weboldalunk megengedi.
Mountoljuk be az előzőleg megadott pontokat:
server:/var/apache2chroot#mount /var/apache2chroot/proc
server:/var/apache2chroot#mount /var/apache2chroot/tmp
Nah most chroot-oljuk be magunk az új környezetünkbe:
server:/var/apache2chroot#cd /var/apache2chroot/
server:/var/apache2chroot#chroot .
Telepítsük fel jailen belül az apache2 csomagot és többi csomagot amit a jailben akarunk használni.
server:/#apt-get update
server:/#apt-get upgrade
server:/#apt-get install apache2 libapache2-mod-php4 php4-mysql php4-ldap php4-imagick php4-gd php4-gd2 php4-pear
Ugye a fő indoka jailbe zárásnak eme utolsó csomaghalmaz sebezhetőségi pontjai. :(
Ugorjunk ki a jailből és linkeljük vissza a telepétett direket a rendes rendszerbe a későbbi könnyű kezelhetőség miatt.
server:/#exit
server:/var/apache2chroot#ln -s /var/apache2chroot/etc/apache2 /etc/apache2
server:/var/apache2chroot# ln -s /var/apache2chroot/var/www/ /var/www
server:/var/apache2chroot# ln -s /var/apache2chroot/var/log/apache2 /var/log/apache2
Csináljunk egy inditó szkriptet a jailen belüli apache indításához a külső rendszeren (ami egyszerűen bepasszolja az öszes indító paramétert a jailen belülre.):
vi /etc/init.d/apache2
#!/bin/sh -e
#
# apache2 This init.d script is used to start apache2 in jail.
case $1 in
start)
chroot /var/apache2chroot /etc/init.d/apache2 start
;;
stop)
chroot /var/apache2chroot /etc/init.d/apache2 stop
;;
reload)
chroot /var/apache2chroot /etc/init.d/apache2 reload
;;
restart | force-reload)
chroot /var/apache2chroot /etc/init.d/apache2 restart
;;
*)
echo "Usage: /etc/init.d/apache2 start|stop|restart|reload|force-reload"
;;
esac
Majd hozzuk létre rá az indító linkjeinket:
update-rc.d apache2 start 91 2 3 4 5 . stop 91 0 1 6 .
Ellenőrizhetjük h hasonlók vannak a jailen belül is amiket a debian csomag készített:
ls -l /var/apache2chroot/etc/rc*.d/*apache2
Nah mostmár konfigurálhatjuk a webszerverünk és kezdhetjük használni.
Néhány további trükk:
- a mysql szerver socketet érdemes betenni a jailbe.
server:/etc/mysql# /etc/init.d/mysql stop
server:/etc/mysql# mkdir /var/apache2chroot/var/run/mysqld/
server:/etc/mysql# chown mysql.mysql /var/apache2chroot/var/run/mysqld/
server:/etc/mysql# vi /etc/mysql/my.cnf
server:/etc/mysql# vi /etc/mysql/debian.cnf
server:/etc/mysql# /etc/init.d/mysql start
server:/etc/mysql# ln -s /var/apache2chroot/var/run/mysqld/mysqld.pid /var/run/mysqld/
server:/etc/mysql# ln -s /var/apache2chroot/var/run/mysqld/mysqld.sock /var/run/mysqld/
- levelezés működésre bírásához egy minimalista email szerver is elég a jailen belül: pl.: nbsmtp local smarthost konfiggal. php.ini-be:
sendmail_path = nbsmtp -f info@a_te_domainod.hu -h localhost
Ne felejtsük a chroot-on belüli rendszer allományit, csomagjait is frissíteni!!!
- A hozzászóláshoz be kell jelentkezni
ma's deb-ek amikkel lehet ``jail''-t csinalni
- A hozzászóláshoz be kell jelentkezni
virtual server
Na ugy tunik beleestem a ``nagyon paranoid'' kategoriaba (vagy csak egyszeruen kivancsi voltam?), mindenesetre utananeztem a VM megoldasnak debian alatt.
A kernel-patch-vserver, vserver-debiantools csomagokat erdemes megnezni illetve a http://linux-vserver.org/ site-ot, ez az ami tartalmaz peldaul egy ilyen megoldast.
Kiprobalom hogy milyen aztan leirom mire leltem. A sima chroot-tal szemben itt a strukturajabol adodoan nincs kozos proc share meg egyeb veszelyes resz amit a chrootnal megvannak, szoval erdemes lesz megnezni minden security fanatic geek-nek.
- A hozzászóláshoz be kell jelentkezni
Hali! ugyebár egyszer van:
Hali!
ugyebár egyszer van: /var/apache2chroot utána pedig: /var/apache2jail
Én nem értek valamit, vagy a leírásban van a hiba(typo)?
köszi.
üdv
b.
- A hozzászóláshoz be kell jelentkezni
Hello,
A jailer is hasznos tool lehet (balabit.hu fele megoldas) ha szeretned a csomagos telepitesmodot hasznalni de nem akarsz egy teljes base-t feltenni.
Ha meg jobban minimalizalnal akkor meg lehet adni a minimalis szukseges lib-eket es binary-kat de a mai helyzetben ahol a hely annyira nem fontos gondolom ez keveseket mozgat meg (ha megis: http://www.fuschlberger.net/programs/ssh-scp-chroot-jail/ ).
Az igazi az lenne vegre ha lehetne ilyen kulon VM jellegu jaileket is csinalni egyszeruen (gondolom elobb-utobb kitalalja ezt a Xen-nel ha meg nem tette volna) es a teljesen levalasztott kernelek alatti rendszer egyeduli kitoresi pontja a scheduler lesz (mint pl. Solaris 10 zonak vagy FreeBSD bacula VM-es jail). Ha valaki igazan paranoid nezzen utana ezeknek. :)