Gelişen teknolojiye ayak uydurmak gün geçtikçe zorlaşıyor. Yeni ürünlerin sürekli küçülen ve detaylaşan ekstra özellikleri eminim ki birçok kullanıcı tarafından kolay çözülemiyor. Web dünyasında da durum bundan ibarettir.


Gün geçtikçe gelişen yazılım teknolojileri ve doğurduğu güvenlik problemlerinin boyutlarını şüphesiz ki ne durumda olduğunu önceki sayılarımızdan ve günlük haberlerden biliyoruz. Güvenliğin yaşamımızdaki önemini kavramak için ne yazık ki başımızdan bir olay geçince farkında oluyoruz. Web siteniz için düşündüğünüz güvenlik çözümlerine web sitenizin hackerlar tarafından ele geçirildiği zaman mı başvuracaksınız?


Gelin birlikte web sitenizin güvenliği için dikkat etmeniz gereken güvenlik çözümlerini birlikte inceleyelim.Yazılım güvenliği yapısı itibariyle geniş konu yelpazesine sahiptir.


XSS (Cross Site Scripting) ile Kurban Avı

Betiklerin herhangi bir filtreden geçirilmeden ve olası HTML, JavaScript vb. gibi girdilere izin verildiği konumlarda etkili olur. XSS ataklarından başta web site sahipleri olmak üzere kullanıcı boyutunda da etkilenmeler olur. Bu saldırı yöntemiyle kullanıcıların profil ve parola gibi özel bilgileri çalınabilir, web sitesi zararlı bir adrese yönlenebilir ve web sitesinin çeşitli noktalarının kullanım dışı bırakılma durumu söz konusu olur.


Saldırganlar tarafından bu açıklar genelde deneme yanılma yöntemi kullanılarak tespit edilir.
Web sitenizde bir arama işlemi gerçekleştirecek yer mevcutsa bilin ki ilk bakacakları yer orasıdır. Arama özelliğinin aktif olduğu sayfalarda basit bir filtreleme yöntemi ile zararlı karakterleri filtreleyebilirsiniz.


Bazı sayfalarınızda gelen değerlerin ne olacağını kod aşamasındayken belirlediğiniz noktalarda gelebilecek tüm ihtimalleri düşünüp o duruma göre filtreleme yapmalısınız. Örneğin tarafınıza ulaşması gereken değerler rakamsal değerler ise o halde harf girdilerini filtreleyebilirsiniz. Ekstra olarak tehlike arz edebilecek < > " ' % ; ) ( & + - gibi özel karakterleri de filtreleyip sayfanızdaki girdi kontrolünü güçlendirebilirsiniz. Tüm bu ihtimaller göz önüne alındığında bu karakterlerin ASCII değerlerinin de filtrelenmesi güvenliğinize güç katacaktır. Zararlı kodları encode ederek olası tehlikelerden korunabilirsiniz.


Yazılım dillerinin çeşitliliğini göz önüne alarak her dilde amacı aynı kullanım çeşitleri o dile özgü olan yöntemler mevcuttur.  Tercih ettiğiniz dile bağlı olarak zararlı karakterleri temizlerken Str_Replace(),HTMLEncode(), Replace() vb. özel fonksiyonları kullanarak zararlı karakterlerin filtrelenmesini sağlayabilirsiniz. Özellikle JavaScript terimlerini de mesaj, yorum vb. karakter girdilerinin olacağı noktalarda filtrelemeniz güvenliğinizi büyük ölçüde katkı sağlayacaktır. Örnek olarak <script>JavaScript:alert(document.cookie);</ script> gibi bir kod ile kullanıcın o anki cookie bilgileri uyarı penceresi olarak ekrana gelecektir. Bu kodu çeşitli parametreler ile biçimlendirip kullanıcıların bilgilerinin kötü niyetli kişilerin eline geçmesi mümkün kılınıyor. XSS saldırılarını önlemek için girdilerin kontrolü ve güvenli filtreleme yöntemleri ile olası saldırılara karşı güvende olabilirsiniz.


Kullanıcılar olarak e-posta adreslerinize gelecek olan bağlantılara tıklarken dikkatli olmalıyız ve özellikle fotoğrafların içine gizlenen zararlı kodlar ile özel bilgileriniz başkalarının eline geçebilir bu duruma karşıda haberdar olup gerekli güvenlik tedbirlerini almalıyız.


SQL Injection ve Zayıf Betikler

SQL (Structured Query Language) veritabanlarında veri çekme, silme, güncelleme gibi temel işlemler için kullanılan dildir. Günümüzdeki dinamik yapılı sitelerin hemen hepsinde veritabanı ile bağlantı işlemlerini gerçekleştiren ve belirttiğimiz işlemleri uygulayan SQL dilini kullanırlar.


SQL Injection saldırılarının temelinde XSS saldırılarında olduğu gibi zararlı karakterlerin veritabanı işlemlerini gerçekleştirdiğiniz noktalara uygulanması ile veritabanındaki bilgilerin saldırganın eline geçmesine olanak sağlar.


Kullanıcıların tarafından bilgilerin dinamik sorgular ile veritabanına iletilmesi sırasında çeşitli meta-karakter girdileri sağlanarak SELECT, DELETE, INSERT, UPDATE gibi SQL komutlarının çalıştırılması sağlanıyor ve ardından belirtilen parametre düzeyinde işlemler gerçekleşerek kullanıcıların ve web sitesinin özel bilgilerine ulaşılıyor. Tablo, satır ve sütun isimlerine ulaşıldıktan sonra yine SQL yordamlarıyla istenilen bilgilere ulaşılıncaya dek işlemler yapılıyor.


SQL Injection saldırılarından korunmak için ilk olarak güvenli SQL yordamları yazılmasının bilinmesi gerekiyor.  Örneğin ASP dili kullanılarak hazırlanmış bir SQL sorgusu “SELECT * FROM Üyeler WHERE kullaniciadi =      '" & kullanici & "' AND Parola = '" & Parola & "'" olduğunu düşünürsek bu SQL sorgusuna atanacak “' OR ''='” karakterleri ile sorgu manipüle edilebilir. Sorgunun son şekli SELECT * FROM Üyeler WHERE kullaniciadi = '' OR ''='' AND Parola = '' OR ''='' olacaktır. Bu sorgu itibariyle dönen değerler olarak veritabanındaki kullanıcı adı ve parolası boş olanları kontrol edecek ve ek olarak boş her zaman boş’a eşit olacağı için bizi sistemde kayıtlı olan değerleri getirecektir.


Manipülasyonlardan korunmak için sorguların iyi filtrelenmesi gerekir. XSS saldırı metodunda bahsettiğimiz özel fonksiyonları SQL Injection saldırılarından korunmak için de kullanabilirsiniz. Girdilerin numeric bir değer olup olmadığını önceden belirlediyseniz numeric değerler dışındaki karakterleri yasaklayabilirsiniz. Girdi uzunluğunun da sizin belirttiğiniz karakterler sınırını aşmaması için önlemler alabilirsiniz.

Zararlı Karakterler

chr(13)

chr(34)

 chr(39)

  /

  \

  ?

  *

 

  OR

  AND

  %

  &

  <

  $

  >

  !

 

  #

  like

  drop

  create

  modify

  rename

  alter

  cast

  join

  union

  where

  insert

  delete

  update



Tablodaki karakterleri filtreleyip SQL Injection gibi olası saldırılardan korunabilirsiniz.
SQL Injection’dan korunmak için bu yöntem sizi büyük ölçüde rahatlatacaktır tabi ki hepsi bu kadar değil. Detaylı olarak güvenlik yöntemlerine önümüzdeki yazılarımızda değineceğiz.


CSRF (Cross Site Request Forgery) ile Oturumları Yönetin


CSRF saldırıları ile oturum (session) kontrollerinin göz ardı edilmeye zorlanarak varsayılan üst düzey yetkilere sahip olan kullanıcının yetkisi dâhilinde işlem yapılabilmesi mümkün oluyor. Saldırganın bir web sitesine yerleştirdiği kod vasıtasıyla belirttiği hedef üzerinde veri ekleme, silme, güncelleme vb. işlemleri gerçekleştirmesi mümkün oluyor.


Sosyal mühendislik ile birleştiği noktalarda çok başarılı sonuçlar veriyor. Hedef kullanıcı farkında olmadan şifreleri değişiyor ya da bağlı bulunduğu sistem üzerinde belirttiğimiz haklar doğrultusunda yeni kayıt işlemleri gerçekleşiyor. Saldırganın sadece belirlediği kullanıcı adı ve parolayı yazıp sisteme erişmesi mümkün oluyor.

CSRF çalışma mantığını anlatan bir grafik.


Ek kimlik doğrulamasının yapılması yazılımın gelecek noktalarda karşılaşabileceği güvenlik zayıflıklarının önüne geçecektir. CSRF, kimlik doğrulamasının olduğu ancak kullanıcılar tarafından halen aktif olduğu süre içinde dış etmenlerin o kullanıcıya fark ettirmeden işlem yaptırarak ortaya çıkmasından dolayı kimlik kontrollerinin denetimi yazılımcıların dikkat etmesi gereken noktadır.
Uzak bağlantılardan dışarıdan gönderilen her verinin kontrolünü yapmanız halinde olası tehlikelerden büyük oranda kurtulursunuz.


CAPTCHA uygulamasının kullanılması da sizleri olası CSRF saldırılarından büyük oranda koruyacaktır. Önemli işlemlerin gerçekleştiği noktalarda random olarak üretilen CAPTCHA değerlerinin onaylanıp işleme dâhil olması durumuyla birlikte işlemlerin gerçekleşmesi sizleri olası CSRF saldırılarında kurban konumundan kurtaracaktır.


Genel olarak bakıldığında kod tarafından yapmanız gerekenler form gibi dışarıdan veri alacağınız noktalarda veritabanıyla bağlantılı olarak anahtar kaydetme ve session ile anahtar doğruluğu eşitleme yapabilirsiniz. Session süresini işlemler dâhilinde bir süre belirleyebilirsiniz böylece kullanıcılar tarafından doğabilecek oturum problemlerinin önüne geçebilirsiniz.


Kullanıcılar olarak da web sitelerinden mutlaka oturumu kapat şeklinde çıkış yapmalıyız. Session süresinin belirli bir zaman diliminde olması kullanıcılar tarafından unutulan çıkış yapılmasının önüne geçecektir. Kişisel güvenliğimize her noktada dikkat etmeliyiz.


DDOS (Distributed Denial Of Service) ile Servisleri Çökertin
IP tabanlı olarak belirlenmiş hedefleri ardı ardına paketler göndererek hedef sistemin yollanan paketlere cevap veremez duruma getirilmesini amaçlayan bir saldırı metodudur. Saldırgan hedef sistem üzerinde çalışan uygulamaların durdurulmasını amaçlayarak HTTP,FTP,SMTP gibi servislere saldırarak çalışmasını engelleyebilmektedir.
 
DDOS atakların başarılı olma noktalarında saldırganların bağlantı güçlerinin etkisi önemlidir. Birden fazla saldırganın aynı anda saldırıya başlaması ve saldırganların güçlü internet bağlantılarına sahip olması saldırının boyutunu büyük oranda etkilemektedir.


Saldırının boyutlarını saldırgan sayısıyla doğru orantılı olmasından dolayı bu yöntemi temel alarak yayılan birçok worm mevcut ve bu sayede dünya devi olarak nitelendirilen birçok web sitesinin yayınını durdurmaya başardılar.


 
Bu sahne her zaman yaşanacak bir durum değildir. Geçmiş yıllarda Mydoom solucanın saldırıları üzerine google arama motoru geçici bir süre servis dışı kalmıştı. Saldırının bu denli etkili olmasında birkaç milyon kişiye ulaşan solucanın aynı anda hedef olarak google web sitesini seçmesi üzerine google sistemlerinin yanıt verememesinden dolayı siteye erişim kesilmişti.


DDOS saldırılarını yazılımsal olarak önlemek yeterli olmuyor. Bir blacklist oluşturup gelen paketlerin birden fazla olması durumunda otomatik olarak ip adresinin erişiminin engellenmesi mümkündür. Eğer gelen saldırılar az sayıda ip üzerinden geliyor bu yöntem sizin kurtarıcınız olacaktır. Büyük boyutlu saldırılarda bu yöntem etkisiz kalıyor. DDOS saldırılarına çözüm olarak sistem tarafında harici güvenlik duvarı kullanılması gelebilecek birçok saldırıyı etkisiz kılacaktır.


Yazılım tarafında alacağınız bazı küçük çaplı önlemler de mevcuttur. Web sitenize aynı ip adresi üzerinden birden fazla erişimi engelleyebilirsiniz. Web sitenizdeki sayfalarınız arasında belirli bir sayfa yenile süresi belirleyebilirsiniz. Yazılımlarınıza entegre olarak kullanabileceğiniz birçok anti-flood betiği mevcuttur kolayca entegre edip kullanabilirsiniz. Bu küçük önlemler DDOS saldırılarını tam anlamıyla önlemek için yetersizdir ancak flood türü saldırılar için web sitenizi güvende kılacaktır.

Exploiting ve Tehlike’nin Boyutları

Exploitler sistemlerin ve yazılımların açıklarını sömürerek türüne göre amacını gerçekleştiriyor.  Bir sisteme ek olarak kullanıcı ekleme veya sistemde yer alan bilgileri ele geçirme ya da hedef sistem üzerinde etkili olarak buffer oveflow dediğimiz bellek taşmasına sebep olarak sistemin çalışmasını etkiliyor.


Exploitler, yazılımlarınızı geliştirdiğiniz sırada güvenli olmayan kod yazılmasından veya tahmin edilemeyen işlemlerin programcı tarafından fark edilememesinden dolayı ortaya çıkıyor ve sisteminize dışarıdan bir müdahale olabilecek noktaya kadar erişim imkânı sunabiliyor. Saldırgan belirlediği komutlar doğrultusunda web siteniz üzerinde yönetici haklarına sahip duruma geçebiliyor.


 


Web sitenize gelebilecek saldırılar bunlarla sınırlı değil. Birçok saldırı çeşidi mevcut ancak genel olarak bakıldığında bahsettiğimiz konular ile doğrudan bağlantılılar.
Web sitenize entegre olarak kullanabileceğiniz IP denetleme ve kayıt betikleri mevcuttur. IP kontrolü kullanmanız ve log işlemlerini web sitenizde tercih etmeniz aynı zamanda sürekli takip etmeniz sizi olası saldırılardan önce uyarı niteliği taşıyacaktır.


Güvenlik yalnızca yazılım tarafında alınan önlemler ile maalesef sağlanamıyor. Yazılımlarınızda güvenli olduğunuz kadar web sitenizin yayınlandığı sunucuların da güvenliği iyi olmalıdır. Aksi halde tüm güvenlik çözümleriniz etkisiz kalacaktır. Sistemin bir açığından faydalanıp sisteme gizlice sızan bir kişi tarafından web siteniz kullanım dışı kalabilir.


Sistemlerin güvenliğini sağlamanın birçok farklı yolu mevcuttur. Hepsi yalnızca görevi dâhilindeki durumlarda aktif olarak güvenlik sağlayabiliyor. Genel olarak bakıldığında sunucunuza gelebilecek DDOS ve benzeri saldırılardan bir Güvenlik Duvarı (Firewall) büyük oranda çözüm olabilir. Harici olarak ekstradan sunucu barındırma firmanızdan talep ederek alacağınız bir donanım parçası ile web sitenizin bağlı olduğu sunucuyu koruma altına alabilir, saldırı gelebilecek portları kullanım dışı bırakıp saldırıların boyutlarını düşürebilir ve izinsiz kullanıcıların sisteminize erişmesini büyük oranda engellemiş olursunuz.


Sisteminizin son güvenlik güncellemelerinin yapılması ve son yamaların uygulanmış olması da sizi önemli ölçüde güvenli kılacaktır.
Güvenlik, bireylerin bilinçli olma düzeyine orantılı olarak artabilen ve azalabilen bir olgudur. Sisteminizin ve yazılımlarınızın güvenliği tamamen sizin olaylara bakış açınız ve tüm ihtimalleri göz önünde bulundurup tedbirler almanız ile ilgilidir. Güvenliğinizi ihmal etmeyin.

Olcay KÜK

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList