|
| Makaleler |
| Toplam Makale |
3018 |
| Yayında |
2841 |
| Bekleyenler |
177 |
| Görüntüleme |
12114071 |
|
|
|
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
Eklenme tarihi: 17-8-2006 Okunma: 1509
|
| Bu Makaleye Verilen Puan: |
Bu makaleye puan verilmemiş.
|
Kullanıcı Yorumları
Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !
İlgili Dökümanlar
|
|
|