[LinuxFocus-icon]
Ev  |  Eri�imd�zeni  |  ��indekiler  |  Arama

Duyumlar | Belgelikler | Ba�lant�lar | LF Nedir
Bu makalenin farkl� dillerde bulundu�u adresler: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Portugues  Turkce  Arabic  

convert to palmConvert to GutenPalm
or to PalmDoc

[Photo of the Author]
taraf�ndan Mark Nielsen (homepage)

Yazar hakk�nda:
Mark ba��ms�z dan��man olarak �al��maktad�r. Zaman�n� GNUJobs.com, makale yaz�m�, serbest yaz�l�m yaz�l�m� ve eastmont.net'de g�n�ll� �al��arak ge�irmektedir.

T�rk�e'ye �eviri:
Erdal MUTLU <erdal(at)linuxfocus.org>

��erik:

 

Linux alt�ndaki t�m sunucular� chroot ortam�nda �al��t�rmak

[illustration]

�zet:

Chroot ortam�nda �al��an sunucular, herhangi birinin, sunucunun g�venlik a��klar�ndan faydalanarak sisteme girdi�inde, sisteme verebilecekleri zar� en aza indirmektedir.



 

Giri�

Chroot ne demektir? Chroot basit olarak, program�n d�nyas�n� yeniden tan�mlamaktad�r. Daha kesin olmak gerekirse, program�n �al��t��� "ROOT" (/) dizinini ve giri� (login) ortam�n� de�i�tirmektedir. B�ylece, chroot olarak kullan�lan dizinin d���ndaki ortam, program i�in var olmamaktad�r.

Bu neden kullan��l�d�r? E�er, sisteminize birisi girerse (g�venlik a��klar�ndan faydalanarak), sisteminizde yer alan t�m dosyalar� g�remeyeceklerdir. Sistemin t�m�ne eri�ememeleri demek, sistemde yer alan t�m programlar� kullanamama ve az g�venli olan di�er dosylara eri�ememeleri demektir. Bence tek dezavant�j, a� �zerinde olup bitenden haberder olabilmemelridir. Dolay�s�yla, bu yaz�da �ok fazla s�z� edilmeyen birka� �ey daha yapman�z gerekecektir:

Chroot (root kullan�c�s� alan� olarak de�il) ortam�n� bir g�venlik �izgisi olarak d��nmemin nedeni, e�er herhangi biri, sistemin g�venlik a��klar�ndan yararlanarak, root d���nda bir kullan�c� olarak sisteme girmeyi ba�arabilirse, sisteme verebilecekleri zarar, girdikleri ortamla s�n�rl�d�r. Girdikleri ortamda yer alan dosyalar�n genelde root'a ait olmas�, sald�r�da bulunabilecek se�enekleri daha da aza indirmektedir. A��kt�r ki, sisteminize birisinin girmesi pek ho� bir �ey de�ildir, ancak b�yle bir durumda verebilecekleri zarar� en aza indirmek �nemlidir.

Bunu sa�lamada benim kulland���m y�ntemin 100% g�venli olmayabilece�ini L�TFEN AKLINIZDAN �IKARTMAYIN. Bu benim ilk denemem ve e�er �al���rsa, p�r�zleri sonradan gidermek daha kolay olacakt�r. Ben bunu, chroot ortam� ile ilgili bir NASIL belgesi yaratmak i�in yolg�sterim olarak d���nmekteyim.  

Her�eyi chroot olarak nas�l yapaca��z?

"/chroot" ad�nda bir dizin yarat�p, t�m sunucular� bu dizin alt�na a�a��daki bi�ime g�re yerle�tirece�iz: T�m sunucular, tamamen souyutlanm�� olarak �al��mal�d�r.  

Chroot ortamlar�n� yaratan Perl program�m.

Config_Chroot.pl.txt program�n� �ektikten sonra Config_Chroot.pl olarak, isminin de�i�tirilmesi gerekmektedir. Program, y�klenmi� olan sunucular�n listesini vermekte, yap�land�r�m dosyalar�n� g�r�nt�lemekte, sunucuyu yap�land�rabilmekte ve sunucuyu durdurup tekrar �al��t�rabilemktedir. Genelde bunlar sizin yapman�z gereken �eylerdir.
  1. Chroot dizini yaratmak.
    mkdir -p /chroot/Config/Backup
  2. Config_Chroot.pl.txt dosyas�n� indirip, /chroot/Config_Chroot.pl olarak ismini de�itirmek.
  3. E�er, ev dizin ismini /chroot olarak kullanm�yorsan�z, program�n i�inden bunu de�i�tirin.
  4. yap�land�r�m dosyalar�n� �ekin.
�imdi �nemli bir not: Ben program�, sadece RedHat 7.2 ve RedHat 6.2 test ettim.

Kendi Linux da��t�m�n�za g�re Perl program�n� de�i�tirebilirsiniz.

Chroot konusunda kocaman bir yaz� olu�tu, ancak Perl program� sayesinde yaz� olduk�a k�sald�. Asl�nda, birka� sunucuyu chroot ortam�na ta��y�nca, chroot ortam�na ta��nmas� gereken benzer dosya ve yap�land�r�m dosyalar�na sahip olduklar�n� g�rd�m. Bir sunucu i�in hangi dosyalara gereksinim duydu�unuz anlaman�n en kolay yolu man sayfas�na bakmak veya program k�t�phane dosyalar� kullan�yorsa, ldd /usr/bin/program bakmakt�r. Ayr�ca, sunucuyu chroot ortam�na ta��d�ktan sonra elle �al��t�r�p, olu�an hatalar veya loglara bakabilirsiniz.

Genel olarak bir sunucu y�klemek i�in:

cd /chroot
./Config_Chroot.pl config  SERVICE
./Config_Chroot.pl install SERVICE
./Config_Chroot.pl start   SERVICE
 

Chroot ortam�nda Ntpd

Ntpd bir zaman sunucusudur ve sizin bilgisayar�n�z ile di�er bilgisayarlar�n zamanlar�n� ayarlamaya yaramaktad�r. bu sunbucuyu chroot ortam�na ta��mak olduk�a basit bir i�lem oldu.
cd /chroot
 # E�er, benim yap�land�rma dosyam� kullanm�yorsan�z,
 # a�a��daki sat�r�n # ni kald�r�n.
#./Config_Chroot.pl config  ntpd
./Config_Chroot.pl install ntpd
./Config_Chroot.pl start   ntpd
 

Chroot ortam�nda DNS veya named

Daha �nceden yap�lm��t�r. Ayr�nt�lar i�in
http://www.linuxdoc.org/HOWTO/Chroot-BIND8-HOWTO.html
veya
http://www.linuxdoc.org/HOWTO/Chroot-BIND-HOWTO.html belgelerine bakabilirsiniz.

E�er, benim program� kullanmak istiyorsan�z

cd /chroot
 # E�er, benim yap�land�rma dosyam� kullanm�yorsan�z,
 # a�a��daki sat�r�n # ni kald�r�n.
#./Config_Chroot.pl config  named
./Config_Chroot.pl install named
./Config_Chroot.pl start   named
 

Chroot ortam�ndaki sunucularla Syslog ve benim �ikayetlerim.

Syslogd chroot ortam�nda �al��t�rmak istiyorum. Benimsenmi� de�er olarak syslogd, /dev/log sistem ayg�t�n� kullanmaktad�r ve bu ayg�t chroot ortam�ndan g�r�nmemekte, yani ula��lamamaktad�r. Dolay�s�yla syslogd'yi kolayca chroot ortam�na kolayca ta��yam�yorsunuz. Baz� ��z�m �nerileri a�a��da verilmi�tir: Benim tek ��z�m�m, syslogd'nin herbir sunucu ile birlikte chroot ortam�na ta��mak oldu. Asl�nda, syslogd'yi root d���ndaki bir kullanc� olarak ve kendi chroot ortam�nda bulunarak �al��t�rmak isterdim, ancak daha iyi bir ��z�m bulana kadar bu konuda ba�ka bir �ey yapmayaca��m.

E�er, syslogd'yi herbir sunucu ile birlikte ayr� ayr� �al��t�rmak istemiyorsan�z, ana syslogd'nin �al��t�r�ld��� dosyaya, syslogd'nin �al��t�rma sat�r�n� a�a��daki gibi de�i�tirin:

syslogd -a /chroot/SERVICE/dev/log
E�er, ssh ve dns �al��t�r�yor olsayd�m, komut
syslogd -a /chroot/ssh/dev/log -a /chroot/named/dev/log -a /dev/log
�eklinde olacakt�.

Syslogd ile ilgi son olarak, syslogd'yi root d���nda bir kullan�c� alt�nda ve chroot ortam�nda �al��t�rmay� isterdim. Birka� de�i�ik �ey denedim, ancak ba�ar�l� olamad�m. E�er, syslogd'yi root d���nda bir kullan�c� olarak her sunucu ile birlikte �al��t�rabilseydim, benim g�venlik ile ilgili olan gereksinimlerimi kar��lam�� olurdum. Belkide, loglar� bilgisayar d���na g�ndererek yap�labilir.  

Chroot ortam�nda Apache

Bunu yapmak �ok kolay oldu. Bir kere ayarlad�ktan sonra, Perl programlar� �al��t�rma imkan�n� elde ettim. �u anda yap�land�r�m dosyam olduk�a b�y�k, ��nk� chroot ortam�na, Perl ve PostgreSQL k�t�phanelerini koymam gerekti. Unutulmamas� gereken bir not: E�er, veritab�n�na ba�lanacaksan�z, onun 127.0.0.1 loopback ayg�t� �zerinde �al��t�r�n ve Perl'�n DBI mod�l� i�in programlar�n�zda ba�lan�lacak bilgisayar olarak 127.0.0.1 olarak belirtin. A�a��da benim veritaban�na, apache'nin ba�lant�lar�ndan faydalanarak, nas�l ba�land���ma dair bir �rnek var:
$dbh ||= DBI->connect('dbi:Pg:dbname=DATABASE',"","", {PrintError=>0});

if ($dbh ) {$dbh->{PrintError} = 1;}
else
  {$dbh ||= DBI->connect('dbi:Pg:dbname=DATABASE;host=127.0.0.1',"","",
      {PrintError=>1});}

Kaynak: http://httpd.apache.org/dist/httpd/

Apache'yi derleyerek /usr/local/apache dizinine y�kleyin. Daha sonra perl program�n� kullan�n.

cd /chroot
 # E�er, benim yap�land�rma dosyam� kullanm�yorsan�z,
 # a�a��daki sat�r�n # ni kald�r�n.
 # ./Config_Chroot.pl config  httpd
./Config_Chroot.pl install httpd
./Config_Chroot.pl start   httpd
Ben httpd.conf dosyas�n� a�a��daki gibi de�i�tirdim:
ExtendedStatus On

<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

<Location /server-info>
    SetHandler server-info
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Location>

Daha sonra �nternet gezgininizi http://127.0.0.1/server-status veya http://127.0.0.1/server-info adresine y�neltmeniz ve denemeniz yeterli olacakt�r!  

Chroot ortam�nda ssh

�lk olarak ve ideali 22 numaral� ba�lant� noktas�nda (port) �al��an ssh'y� 2222 ba�lant� noktas�na y�nlendirmek olacakt�r. Onadan sonra, root kullan�c�s� d���nda bir kullan�c� olarak ssh'y� 2222 ba�lant� noktas�n� dinleyecek �ekilde �al��t�r�n. Ssh ile olan ilk ba�lant� i�in bize gereken sadece iyi ge�i�s�zc�klerine sahip g�venli kullan�c� alanlar�, ki kullan�c�lar sisteme giri� yapabilsin. Sisteme girdikleri zaman, 127.0.0.1:2322'de �al��acak ve ger�ek sisteme girmelerini sa�layacak ikinci bir ssh sunucusunu ayarlaman�z gerekecektir. �kinci ssh suncusu SADECE loopback ayg�t�ndan gelen ba�lant�lara izin veriyor olmas� gerekmektedir. Biz bunu yapmayaca��z. Bizim burada yapaca��m�z tek �ey, ssh'y� chroot ortam�na ta��makt�r. Sshd sunucusunu root d���nda bir kullan�c� olarak �al��t�rmak ve ikinci bir sshd sunucusunu loopback ayg�t�n� dinleyecek �ekilde ayarlamak, okuyucuya �dev olarak b�rak�lm��t�r.

Tekrar s�ylemek gerekirse, biz burada sadece sshd sunucusunu chroot ortam�na ta��yaca��z ve olu�acak sonu�lar (E�er, sadece bunu yaparsan�z, t�m sisteminize ula�amayacaks�n�z.) hakk�nda d���nmenizi sa�layaca��z. Ayr�ca, en iyisi, bunu loglar� bilgisayar�n d���na alabilmek i�in ayarlamakt�r. Siz b�y�k bir olas�l�kla OpenSSH kullan�yor olacaks�n�z. Ben kolay olsun diye SSH'n�n ticari s�r�m�n� kullan�yorum (Bu bir �z�r de�il tabii.).

Kaynak: http://www.ssh.com/products/ssh/download.cfm

Ssh'y� /usr/local/ssh_chroot dizinine y�kleyiniz. Daha sonra perl program�n� kullan�n�z.

cd /chroot
 # E�er, benim yap�land�rma dosyam� kullanm�yorsan�z,
 # a�a��daki sat�r�n # ni kald�r�n.
 # ./Config_Chroot.pl config  sshd
./Config_Chroot.pl install sshd
./Config_Chroot.pl start   sshd
E�er, ftp sunucusunu ssh ile de�i�tirmek istiyorsan�z, bence en iyisi sshd'yi chroot ortam�nda �al��t�rman�zd�r. Dolay�s�yla, kullan�c�lar�n sisteme ula��mlar� k�s�tlanm�� olacakt�r. Rsync ve SCP bilgisayara dosya aktarmak i�in �ok uygun. Bir�ok ftp sunucusu chroot ortam�nda �al��abilmektedir, ancak ben, metin bi�iminde kullan�c� ad� ve ge�i�s�zc�klerinin gidip gelmesinden rahats�zl�k duyuyorum.  

Chroot ortam�nda PostgreSQL

Bu, perl kadar kolay oldu, sadece daha fazla k�t�phane dosyas� aktarmak gerekti. Sonu� olarak bu o kadar da zor bir i� olmad�. Fazladan tek yapmam gerek, PostgreSQL veritaban�n� a� loopback ayg�t� �zerinden a�makt�r. Chroot ortam�nda yer ald���ndan, sanaldoku sunucusu gibi di�er sunucular�n ona ula�mas� m�mk�n olmayacakt�. PostgreSQL'e bir de Perl derledim. B�ylece yap�land�rma dosyamda bir�ok Perl ile ilgili komut yer ald�.

Kaynak: ftp://ftp.us.postgresql.org/source/v7.1.3/postgresql-7.1.3.tar.gz

Apache'yi derleyerek /usr/local/postgres dizinine y�kleyiniz. Daha sonra perl program�n� kullan�n�z.

cd /chroot
 # E�er, benim yap�land�rma dosyam� kullanm�yorsan�z,
 # a�a��daki sat�r�n # ni kald�r�n.
 # ./Config_Chroot.pl config  postgres
./Config_Chroot.pl install postgres
./Config_Chroot.pl start   postgres
 

Chroot ortam�nda Sendmail

Devam edim ve benim perl program�m� �al��t�r�n.
cd /chroot
 # E�er, benim yap�land�rma dosyam� kullanm�yorsan�z,
 # a�a��daki sat�r�n # ni kald�r�n.
 # ./Config_Chroot.pl config  sendmail
./Config_Chroot.pl install sendmail
./Config_Chroot.pl start   sendmail
Evet, �imdi bir�eyler fark edebildiniz mi? Evet, ger�ekten root kullan�c�s� olarak �al��maktad�r. Ayr�ca, /etc/rc.d/init.d/sendmail �al��t�r�ld���nda, baz� dosyalar tekrar yarat�ld�. Benim program bunlar� yapmamaktad�r. /etc/mail dizininde yapaca��n�z her de�i�iklikten sonra, dosyalar� /chroot/senmail/etc alt�na kopyalamay� unutmay�n�z. Ayr�ca, kullan�c�lar sisteme giri� yapt�klar�nda e-iletilerini okuyabilmeleri i�in, /var/spool/mail dizinini, /chroot/sendmail/var/spool/mail dizinine y�nlendirmeniz gerekmektedir.

�yi haber, e-ileti g�ndermek i�ini herzaman yapabilirsiniz. Sorun yaratan ileti alma i�levidir. Dolay�s�yla, apache ve sendmail'i y�kleme s�ras�nda hi�bir sorun ya�amad�m. Baz� Perl programlar�m e-ileti g�ndermektedir. Dolay�s�yla sendmail dosyalar�n� apache'nin bulundu�u chroot ortam�na kopyalamam gerekti.  

Chroot ortam�nda �al��t�r�lmas� gereken ba�ka sunucular.

��te benim felsefem:
  1. Sendmail, ssh, apache, postgresql, syslog dahil olmak �zere, bilgisayarda �al��an t�m sunucular chroot ortam�nda �al��t�r�lmal�d�r.
  2. Her sunucu root kullan�c�s� d���ndaki ba�ka bir kullan�c� olarak �al��t�r�lmal�d�r (Bunun i�in 1024'�n alt�ndaki, korumal� ba�lant� noktalar�n� 1024 �st�ndeki ba�ka ba�lant� noktalar�na y�nlendirmen�z gerekebilir.) Sendmail ve syslogd i�in bunu zaten yapman�z gerekir.
  3. Loglar� bilgisayar d���na g�ndermeniz gereklidir.
  4. Her sunucu i�in ayr� bir disk b�lmesi (partition) kullan�lmal�d�r. B�ylece, sisteme girebilecek korsanlar�n, dosya yazmak veya olu�turmak istediklerinde s�n�rl� alanlar� olacakt�r. E�er, yeterli say�da disk b�lmesine sahip de�il iseniz, loopback ayg�tlar�n� mount edip kullanabilirsiniz.
  5. De�i�meyen t�m dosyalar�n sahibi root olmal�d�r.
Sendmail ve syslogd sunucular�na gelince. Ben hala bunlar�n da root olmayan kullan�c�lar olarak �al��t�r�lmas� taraftar�y�m. Sendmail i�in bunun m�mk�n olmas� gerekmektedir, ancak ben hen�z ba�aramad�m. Bunu yapman�n sak�ncal� taraflar� oldu�unu biliyorum, ancak dosya eri�im haklar� da g�z�n�nde bulundurularak bunlar�n �stesinden gelinebilir diye d���n�yorum. Belkide benim g�remedi�im baz� sebepler vard�r. Ancak, bunlar�n a��labilece�i d���ncesindeyim.

Syslogd'yi denemedim. Ancak, sistem loglar�n�n root olmayan kullanc� olarak saklanmas�n�n m�mk�n olaca��n� d���n�yorum. En az�nda syslogd'yi chroot ortam�nda �al��t�rabilmi�tim.

T�m sunucular root olmayan kullan�c�lar olarak �al��t�r�lmal�d�r. Buna NFS dahil. Her�ey.  

�neriler

 

Sonu�

Bence chroot ortam� t�m sunucular i�in yap�lmal�d�r. �nanc�ma g�re, root olmayan kullan�c� olarak, chroot ortam�nda �al��t�r�lmayan sunucular �ok hatal�d�r. Umar�m b�y�k Linux da��t�c�lar� bunu yaparlar, veya k���kleri, veya HERHANG�B�R da��t�c�. Mandrake, RedHat'ten esinlenerek i�i daha da ileriye g�t�rd�. Belkide birileri Mandrake'den esinlenerek ve sunucular� chroot ortam�na ta��yarak daha da ileriye g�t�rebilirler. GNU/Linux ortam�nda, ba�kalar�n�n yapt�klar�n� bir ba�kas�n�n yeniden yapmas�n� engelleyecek hi� bir �ey yoktur. Dolay�s�yla bence bu m�mk�n. E�er, herhangibir �irket, chroot ortam�n� sa�lay�c� sistematik ve kolay bir y�ntem olu�turursa, bence bu harika olur! Her�eyin grafik ortamlarda yap�ld��� �u g�nlerde, b�yle bir�eyin de KGA olarak yap�lmas� bir�ok insan�n i�ini kolayla�t�racakt�r. Bir�ok ki�i i�in, komut sat�r�ndan ayarlamalar yapmak pek �ekici gelmemektedir. KGA arac�l�yla yap�land�rma yapabilmeleri ve sunucular�n d�zg�n �al��mas� onlar i�in yeterli olmaktad�r. Arka tarafta nelerin d�nd��� onlar� pek ilgilendirmemektedir!

Ben, t�m sunucular�n chroot ortam�nda root olmayan kullan�c�lar olarak ayarlanmas� fikrini %100 olarak desteklemekteyim ve bunu yapmayan da��t�mlar bana uygun olmayacakt�r ve onlar� �retim ortamlar�nda kullanmay� hi� d���nm�yorum. Her�eyi chroot ortam�na ta��may� hedefliyorum. Sonunda bunu ba�araca��m.

Chroot konusunda NASIL belgesi olu�turmay� planl�yorum. Bu yaz�y� LyX bi�imine �evirebilecek birisi varsa, bana yard�m etmesini istiyorum. Bunu Linux NASIL belgeleri aras�na koymak m�mk�n olabilir.  

Kaynaklar

  1. E�er, bu yaz� de�i�irse, onu http://www.gnujobs.com/Articles/23/chroot.html adresinde bulabilirsiniz.
 

Bu yaz� i�in g�r�� bildiriminde bulunabilirsiniz

Her yaz� kendi g�r�� bildirim sayfas�na sahiptir. Bu sayfaya yorumlar�n�z� yazabilir ve di�er okuyucular�n yorumlar�na bakabilirsiniz.
 talkback page 

G�rsely�re sayfalar�n�n bak�m�, LinuxFocus Edit�rleri taraf�ndan yap�lmaktad�r
© Mark Nielsen, FDL
LinuxFocus.org

Buray� klikleyerek hatalar� rapor edebilir ya da yorumlar�n�z� LinuxFocus'a g�nderebilirsiniz
�eviri bilgisi:
en --> -- : Mark Nielsen (homepage)
en --> tr: Erdal MUTLU <erdal(at)linuxfocus.org>

2002-01-15, generated by lfparser version 2.21