Web sayfalarýnda kullanýlan ziyaretçi engelleme yöntemlerinden en çok kullanýlan ip adresi ile yapýlan engellemedir. Bu yöntemi bu kadar etkin kýlan basit olmasý ve herhangi bir programlama dili ile yapýlabilmesi (asp, php, asp.net, python, perl..)
Ne yazýk ki bu yöntem kullanýcý denetimleri açýsýndan komik kalacak düzeyde basit. Þimdi ip adresine yapýlan filtreleme/engellemelerde ki zaaflara bakalým :
* Bireysel saldýrýlarda veya istem dýþý (farkýnda olmadan bir botnetin parçasý olan bilgisayarlar) saldýrýlarda bulunan bilgisayarlarýn neredeyse tamamýnýn dinamik (deðiþken) ip adresi kullanmasý.
* Ýp adresinin kolay deðiþebilmesi ve bu iþlemin çok kýsa bir süre içinde gerçekleþmesi.
* Büyük çaptaki saldýrýlarda ip adreslerini loglayan kodun aþýrý miktarda çalýþtýrýlmasý sonucu, asp server’ýn, ilgili sayfanýn adresleri barýndýran database’in hizmet kesintisine uðrayabilmesi.
* ‘Saldýrgan’ olarak iþaretlediðiniz bir bilgisayarýn ip adresinin, ertesi gün masum bir kullanýcýnýn bilgisayarýna atanmýþ olabilme ihtimali. Böyle bir durumda saldýrýyla alakalý olmamasýna raðmen ziyaretçi adresinize eriþemeyecektir.
* Çok sýk kullanýlan bir yöntem olduðu için, sayfaya eriþimi engellenen saldýrganýn aklýna ilk ip adresini deðiþtirmek gelecektir.
Bu ve benzeri daha bir çok zayýf nokta sayýlabilir bu konuda.
ActiveX Dünyasýna Girelim
Bu baþlýk altýnda temel olarak 2 yöntemden bahsedeceðiz. Mac adresi ve SID deðeri üzerinden yapýlan ziyaretçi denetimleri.
Eðer sayfanýzýn güvenliðini önemsiyorsanýz, SSL desteði alarak kullanýcýlarýnýzýn içini biraz da olsa rahatlatabilirsiniz. Güvenli sertifikalarla desteklenmiþ bir sayfada ziyaretçiler daha az tedirgin olacaktýr ve sayfanýzýn içerdiði activeX denetimlerini daha kolay kabul edeceklerdir.
* Microsoft update, online güvenlik taramasý yapan firmalar (symantec, panta, kaspersky), sesli sohbet odalarý, bazý upload sistemleri halen activeX denetimlerini kullanýlýr. Bu gibi adresler kullanýcýlar tarafýndan ‘güvenilir’ olarak görüldüðü için denetimleri kolayca kabul edilmektedir.
Ýlk yöntemimiz olan Mac adresinden bahsedelim:
Harddisk, Ethernet kartý, usb slotlarý gibi donanýmlarýn her birinin fiziksel bir kimliði vardýr, bu kimliðe mac adresi denir.
* Mac adresi; asp, php, asp.net gibi kendisini barýndýðý sunucuda çalýþtýran programlama dilleri ile alýnamaz. Ýnternet’te bu konu hakkýnda efsaneden ibaret bir çok kod vardýr, tümü yalnýzca üzerinde barýndýðý sunucunun mac adresini gösterir. * Mac adresini alabilmek için kullanýcý, ziyaretçi tarafýnda kod çalýþtýran dillere (Jsp-activeX-Java vs..) ihtiyacýmýz vardýr. * Mac adresi deðiþtirilebilir fakat bu iþi yapan programlarýn büyük çoðunluðu yalnýzca harddiske ait mac adresini deðiþtirmektedir. (Usb slotlara kadar tüm donanýmlarýn mac adreslerini ‘Technitium Mac’ yazýlýmý ile deðiþtirebilirsiniz.) * Deðiþtirilmesi ip adresine göre daha zor, SID’ye göre çok daha kolaydýr.
ActiveX ile örnek bir Mac bilgisi alma uygulamasýný inceleyelim :
<html><head><body><title>Serhat DÜNDAR’ýn örnek Mac adresi projesi</title> <table border=”5″ width=”250″ align=”center”> <tr><td> <== Donanýmsal Kimlikleriniz ==></td></tr></table> <script> var obj = new ActiveXObject(”WbemScripting.SWbemLocator”; var servis = obj.ConnectServer(”.”; var sorgum = servis.ExecQuery(”SELECT * FROM Win32_NetworkAdapterConfiguration”; var say = new Enumerator (sorgum); document.write(”<table style=\”border-width:1; border-color:black; border-style:solid;\”>”; for (;!say.atEnd();say.moveNext ()) { var MacAl = say.item (); document.write(”<tr>”; document.write(”<td>” + MacAl.Caption + “</td>”; document.write(”<td>” + MacAl.MACAddress + “</td>”; document.write(”</tr>”; } document.write(”</table>”; </script></font></body></head></html>
Bu yöntem ile elde ettiðiniz mac adresini sayfaya yazdýrabilir, veritabanýna kaydedebilir, engelleyebilirsiniz. Geri kalan kýsým sizin programlama becerinize kalmýþtýr.
Farklý Bir Fikir
Araþtýrmalarým sonucunda bu yöntemin daha önce hiç kullanýlmadýðýný, hatta hiç tartýþýlmadýðýný gördüm.
http://www.guvenli.org/icerik/1-4-09/security-identifiers-nedir-sid - SID nedir bahsetmiþtim. Bilgisayara, daha doðrusu kullanýcýya ve kullanýcý gruplarýna ait güvenlik kimliðidir. Microsoft tarafýndan asla tekrarlanmayacaðý, çakýþmayacaðý ön görülür.
Rastlantýsal çakýþma olasýlýðý ip ve mac adreslerine göre en az düzeydedir. ‘HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrenVersion\ProfileList’
anahtarý altýnda saklanýr.
ActiveX ile registry’den herhangi bir anahtarý, içerdiði id’yi çekebileceðimizi biliyoruz. O halde sayfamýza ekleyeceðimiz denetimle ile ziyaretçilerimizin de SID deðerlerini öðrenebiliriz. Eðer bu deðeri öðrenebilirsek, bu deðer üzerinden engelleme iþlemide yapabiliriz. Mantýksal kurguyu yaptýk ve baþarýlý sonuç aldýk o halde iþleme geçelim.
* SID deðerini deðiþtirmek daha fazla tecrübe ve zaman gerektirir. Saldýrgan açýsýndan sýkýntýdýr. * Aný að üzerindeki klon pc’lerin SID deðerleri aný atanabilir. Bu sayede 1 pc’yi engellemek ayný aðdan saldýrý yapan bütün pc’leri engellemek demektir. Bu bize zamandan ve log yönetiminden tasarruf saðlar. * Engelleme iþlemini pc yerine, kullanýcý veya kullanýcý grubu üzerinden yapabiliriz. Bu sayede bir bilgisayardaki X, Y, Z kullanýcýlarýndan X ve Y’nin eriþimini yasaklayýp, Z’ye eriþimi serbest býrakabiliriz. * System ve Creator Owner hesaplarýný engellemek, bütün hesaplarý engellemek anlamýna gelir.
ActiveX ile Registry yönetimi için örnek çalýþma http://serhatdundar.wordpress.com/2009/05/12/activex-ile-databaseden-veri-cekmek/ - kodlarý vereceðim. Bunlarý düzenleyerek, üzerine web programlama bilginizi katarak kendi güvenlik sisteminizi kurabilirsiniz. Güvenlik sadece birkaç yazýlým ve kazanýlmýþ tecrübeden ibaret deðildir, hayalgücünüz ve bilgilerinizi birleþtirerek ortaya çok güzel þeyler çýkartabilirsiniz.
Saygýlar..
|