Anasayfa > Programlama > Apache > Apache ile bir web sunucusundaki bir klasorun guvenlik altina alinmasi

Apache ile bir web sunucusundaki bir klasorun guvenlik altina alinmasi




Konu: Apache Yazar: Serkan Tarih: 05/18/03 

1.Iki adet dosyaya ihtiyacimiz olacak:

.htaccess dosyasi (Guvenli hale getirilmek istenen klasorun icine konulacak)

.htpasswd dosyasi (Istenilen herhangi bir klasore konulabilir.Tek onemli olan nokta okuma/yazma
haklarinin duzgun bir sekilde ayarlanmis olmasidir.Bu ornek icin deneme amacli olarak "chmod 777
.htpasswd" komutu ile bu sorunu cozumleyebilirisiniz.

Ilk dosyamiz olan .htaccess dosyasini once kendi bilgisyaranizda ornegin "htaccess.txt" olarak
yaratin.Bu sekilde hazirladiktan sonra FTP ile sunucuya yerlestirdiginizde ismini ".htaccess"
olarak degistirmek daha kolay olacaktir.Bazi FTP programlari "." ile baslayan dosyalari
gostermez.Bunun icin iyi bir FTP programi ile calistiginizdan emin olunuz,

AuthName "<Buraya korunan bolge icin bir aciklama yazin!>"
AuthType Basic
AuthUserFile /buraya/sifre/dosyasinin/tam/yolu/.htpasswd
require valid-user

Yukaridaki dosyayi "htaccess.txt" olarak kayit ediniz.FTP programinizi acin ve bu dosyayi korumak
istediginiz klasore yerlestiriniz.Ismini FTP ile ".htaccess" olacak sekilde ayarlayiniz.

Ikinci dosyamiz .htpasswd sifre dosyasi ve biz onu web uzerindeki bir arayuz ile yaratacagiz.(Yani
bu dosyayi aslinda siz el ile degil de hazirlayacagimiz kucuk program web uzerinden yaratacak.Bu
nedenle sizler hemen bir .htpasswd dosyasi hazirlamak icin ugrasmayiniz.)

Web arayuzu ile yaratilacak bu sifre dosyasi ile Apache Web Sunucusu ile beraber gelen ve bu amaca
hizmet eden programi kullanmaya gerek kalmayacak.Eger SSH/Telnet baglantiniz yok ise bile bu sifre
dosyasini web uzerinden yaratmaya imkaniniz olacak.

Ilk olarak bu dosyayi sistemde yaratacak kucuk bir PERL dosyasi hazirliyoruz.Bunu PHP ile de
yapabilirdik ama o kadar onemli degil cunku bu PERL dosyasina da Web Arayuzunu PHP ile
hazirlayacagiz.Bu sekilde hem sistem icinde diger programlarinda bu kucuk Perl dosyasini kullanmaya
imkani oluyor hemde perl dosyasini istedigimiz herhangi bir dizine koyabilecegimiz icin biraz daha
guvenlik saglanmis oluyoruz :(PHP programlarida PHP uygulamasi ile komut satirindan cagrilabilir
ama diger uygulamalarin etkilesimi Perl ile daha iyidir.)

#!/usr/bin/perl
if (scalar(@ARGV) < 2) {
print <<EOF;
kullanim: sifre_yarat <htpasswd dosyasi> <kullanici_adi> <sifre>
EOF
exit;
}

$anahtar="XX";
$dosya=$ARGV[0];
$kullanici_adi=$ARGV[1];
$sifre=$ARGV[2];

if ($dosya && $kullanici_adi && $sifre) {
$kriptik_sifre = crypt($sifre, "$anahtar");
open(DB, ">>$dosya") || die "Hata: $!n";
print DB "$kullanici_adi:$kriptik_sifren";
close(DB);
print "Kullanici adi $kullanici_adi ve Sifre $sifre, n";
print "kriptolu hali $kriptik_sifre olacak sekilde dosyaya kayit edildi.n";
exit;
}

Yukaridaki dosyayi "htpasswd_sifresi.pl" olarak kayit ediniz.Bu dosyayi sizin sunucu uzerinde
yazma/okuma/dosya_calistirma hakkiniz olan bir klasorune koyunuz.Sonucta bu dosyaya cagri dogrudan
web uzerinden yapilacak.Unutmayin bu dosya .htpasswd dosyasini yaratacak.

".htpasswd" dosyasinin nerede olacagini ".htaccess" dosyasinda asagida belirtilen satir ile
tanimlamistik:

/buraya/sifre/dosyasinin/tam/yolu/.htpasswd

yazma hakki vermez iseniz bu dosya o klasorde PERL programi kullanilarak yaratilamaz.O klasor icin
"chmod 777 /buraya/sifre/dosyasinin/tam/yolu " yapilarak PERL programinin o klasore yazma sorunu
cozumlenmis olur.

Ornek verecek olursak :

Korumak istedigimiz dizin /var/www/turk-php.com/serkan/resimler/ olsun.Bu durumda yukarida
anlatilan butun dosyalarin icerigi su sekilde olacaktir, Ben tercih olarak .htpasswd dosyasini
resimler klasorunun bir alt klasoru olan serkan icinde yaratmak istiyorum.Bu guvenli bir yol degil
cunku genelde bu sifre dosyanin web uzerinden erisilmesi istenilmez.

AuthName "Serkanin Resimler Klasorune Hosgeldiniz!"
AuthType Basic
AuthUserFile /var/www/turk-php.com/serkan/.htpasswd
require valid-user

Evet yukarida ".htaccess" dosyasini hazirladik.

Simdi yukarida verilen PERL dosyasini "htpasswd_sifresi.pl" olacak sekilde serkan klasorune
kopyalayin :

cp htpasswd_sifresi.pl /var/www/turk-php.com/serkan/

Bu PERL dosyasina uygulama ozelligini asagidaki komut ile kazandirin :

chmod +x htpasswd_sifresi.pl

Bu PERL programinin serkan klasorune dosya yazabilmesi icin izinlerini 777 olarak ayarliyorum:

chmod 777 /var/www/turk-php.com/serkan

Su anda serkan dizinin icinde .htaccess ve htpasswd_sifresi.pl dosyalari hazir olduguna PERL
dosyasina arayuz olacak PHP dosyasini hazirlayabilirim :

<?php

if(@$submit)

{
if($args == "")
echo "<h1>Programi calistirmak icin herhangi bir parametre girmediniz.</h1>";
else
{
echo "<h1>Uygulama Ciktisi:</h1>";
$komut = "/var/www/turk-php.com/serkan/htpasswd_sifresi.pl " . escapeshellcmd($args);
passthru($komut);
}

}

else
{
?>

<html>
<head>
<title> APACHE icin .htpasswd dosyasinin yaratilmasi</title>
</head>
<body bg>
<form name="frmArgs" action="<?php echo $PHP_SELF ?>">
<h1>APACHE icin .htpasswd dosyasinin yaratilmasi</h1>
<P>Asagidaki yazi kutusuna programa gecirmek istediginiz <BR>
parametreleri aralarinda bir bosluk olacak sekilde giriniz:<br>
Ornek vermek istersek "<.htpasswd dosyasinin adi> <kullanici adi> <kullanici
sifresi>"<BR>
Kutuya ornek olarak su sekilde bir giris yapilabilir:<BR>
"/var/www/turk-php.com/serkan/.htpasswd kullanici_adi kullanici_sifresi"<BR>
Tirnaklari kullanmadan yaziniz!

<br><br>
<input type="text" name="args" maxlength="100">
<input type="submit" name="submit" value="Kullaniciyi Yarat">
</form>
</body>
</html>

<?php

}
?>

Yukaridaki kod icinde kalin olarak yazilmis olan ve htpasswd_sifresi.pl dosyasinin yerini
belirleyen satiri kendi sisteminize gore degistirmeyi unutmayiniz!

Evet simdi yukaridaki PHP dosyasini ornegin "htpasswd_yarat.php" olarak kayit edebilirsiniz.Ben
yukaridaki ornek icin bu dosyayi /var/www/turk-php.com/serkan/htpasswd_yarat.php olarak kayit
ettim.

En son olarak bu dosyaya web uzerinden erisip .htpasswd dosyasinin serkan klasoru icinde
yaratilmasi kaliyor :

http://www.sunucu_adresiniz.com/serkan/htpasswd_yarat.php

Karsinizda bir web formu goruyor olmalisiniz.Bu web formundaki yazi kutusuna yukaridaki ornek icin
asagidaki gibi bir satir yaizlabilir :

"/var/www/turk-php.com/serkan/.htpasswd admin sifre"

Yukaridaki satir icindeki tirnaklari web formunda yazmayiniz!

Boylece kullanici adi "admin" sifresi "sifre" olan bir kullanici yaratilmis oldu :)

2. Artik koruma altindaki web dizinine giderek yeni yarattiginiz kullanici ile giris yapabilirsiniz
:

http://www.sunucu_adresiniz.com/serkan/resimler/

Bizim ornegimiz icin canli olarak asagidaki adresleri inceleyebilirsiniz.Web uzerinden kullanici
yaratma sistemi su anda sorunsuz calisiyor :

http://www.turk-php.com/serkan/resimler/

Yukaridaki linke tiklayinca size kullanici_adi ve kullanici_sifresi sorulacaktir.Bu durumda buyuk
ihtimal sisteme giris yapamayacaksiniz. :)

Simdi size verecegim linki kullanarak kendinize bir kullanici hesabi yaratabilir ve bu sekilde
resimler klasorunun icerigini goruntuleyebiliriniz :



Onemli Not : Bu demo icin yukarida anlatilan sekilde ilk parametre olarak sifre dosyasinin adini
girmenize gerek yoktur.YANLIZCA KULLANICI_ADI VE SIFRESINI PROGRAMA PARAMETRE OLARAK GECIRINIZ!

Bu makale hakkında ek bilgi eklemek için buraya tıklayınız

Yazar & Kaynak: Serkan Hadi Ceylani

Digg this Post! Add Post to del.icio.us Bookmark Post in Technorati Furl this Post!
Eklenme tarihi: 17-8-2006  Okunma: 1600

Bu Makaleye Verilen Puan:    Bu makaleye puan verilmemiş.
Bu Makaleye Puan Ver  

Bölüm Başlık Kullanıcı Yorumları


Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !
Reklam Netinternet
Bazı hakları saklıdır: İçeriğin editör ve yazarlarımız tarafından oluşturulan kısımları ve site tasarımının hakkı saklıdır.  Bu sayfa en iyi 1280x1024 ve 1024x768 çözünürlükte izlenir.
Powered by BilgiPortal v2.2
Emlak Yorumlar Müzik estetik