![]() |
GreenSQL DB Firewall ile Sql Injection Önlemi GreenSQL, sql injection saldırıları için database’leri koruma altına almak üzere geliştirilmiş bir database firewall uygulamasıdır. MySQL ve PostgreSQL’ler için destek sunan GreenSQL temel olarak proxy olarak çalışarak gerçek database’in önünde durur ve web uygulamasından gelen sql bağlantı isteklerini karşılayarak SQL komutlarını inceler ve bir risk scoring matrix kullanarak ilgili sql cümlelerini analiz ederek aksiyon alır. Bu şekilde, web uygulamanızda bir sql injection açığı bulunsa dahi GreenSQL sayesinde açıktan etkilenmemeniz mümkün olabilir. Detaylarına yazının devamında değineceğim GreenSQL temel olarak, default 3305 portunu dinler ve gelen sql istekleri için risk analizi yapar; güvenli olmaları durumunda komutları arkadaki sql sunucusuna iletir, eğer sql cümleleri güvenli değil ve daha önceden de Whitelist’e eklenmemişlerse blocklar ve uygulamaya boş bir cevap döndürür. GreenSQL’in IPS, IDS, Firewall ve Learning gibi modlarda çalıştırabilirsiniz. Özellikle learning modu false positive durumların önüne geçmek için çok kullanışlıdır. Ayrıca GreenSQL fiziksel olarak database sunucunuz ile aynı makinada çalışabilir ya da ayrı bir makina üzerine konumlandırabilirsiniz. Yazının devamında, GreenSQL’in çalışma mantığından, kurulum ve yapılandırma işlemlerinden bahsedeceğim. GreenSQL Çalışma Mantığı Bu bölümde yukarıda kısaca değindiğim konuların detaylarını aktaracağım sonraki bölümlerde de kurulum ve yapılandırmaya değineceğim. GreenSQL reverse proxy olarak uygulamanıza ait database’in önünde çalışmaktadır. Bu şekilde uygulama üzerinden yapılan SQL işlemleri gerçek database’de çalıştırılmaktansa GreenSQL’e gelir ve burada analiz edilmesi sağlanır. Aşağıdaki şemada GreenSQL’in çalışma mantığı daha net anlaşılmaktadır. [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Şemada da görüldüğü üzere web uygulaması sql işlemlerini doğrudan GreenSQL’e göndermektedir; sql query’ler burada analiz edildikten sonra arkadaki gerçek database’e iletilir. GreenSQL’in güzel yanlarından birisi de gerçek database’in bulunduğu fiziksel sunucuda kullanılabilmesidir. Default olarak 3305. portu dinlediğinden dolayı Sql sunucusu ile aynı makina üzerinde çalışabilir, böylece herhangi bir donanım yatırımına gerek kalmaz. Yapmanız gereken tek şey web uygulamanızın sql connection ayarlarını GreenSQL’e bağlanacak şekilde set etmektir. Örnek olarak web uygulamanız ile sql sunucu aynı makinada çalışıyorsa, web uygulamasının sql connection satırını 127.0.0.1:3306 yerine 127.0.0:3305 yapmaniz yeterli olacaktır. Ayrıca, GreenSQL’i dedice bir sunucuya kurup birden fazla database server için merkezi proxy olarak da kullanmanız mümkündür. Böylece web uygulamalarınızın sql bağlantı ayarlarını GreenSQL’in ipsi ve 3305. port olarak set etmeniz yeterli olacaktır. GreenSQL Çalışma Mod’ları GreenSQL’i bir kaç farklı modda çalıştırabiliyorsunuz. Bu modlar ve açıklamaları şöyle: Simulation Mode (database IDS) Bu modda, grensql herhangi bir blocklama işlemi yapmaz. Sadece web uygulamasından gelen sql işlemlerini alır inceler ve sonucu loglar, daha sonra da database’e iletir. Bu şekilde çalıştırılan şüpheli sql cümlelerinden haberdar olursunuz. Herhangi blocklama işlemi de yapılmadığından false positive durumlarla karşılaşmazsınız. Blocking Suspicious Commands (database IPS) Bu modda, illegal sql komutları blocklanmaktadır. Sisteme illegal bir query geldiği zaman öncelikli olarak Whitelist kontrolü yapılır. Eğer ilgili query listede bulunamazsa, komut blocklanır ve web uygulamasına boş bir cevap döndürülür. Bu modda false positive ya da false negative durumlarla karşılaşılabilir. Learning Mode Learning modu, yukarıdaki iki moda nazaran en kullanışlı olanıdır. GreenSQL’i belirli bir süre için learning moda aldığınız zaman gelen tüm sql komutları whitelist’e alınır, learning periyodu bittiğinde ise Active protection from unknown queries denilen moda geçer. Bu aşamada white listte olmayan tüm queryler blocklanırlar. Learning modu süresiz olarak devreye alabilir sonra istediğiniz bir zamanda manuel olarak Active Protection moduna sokabilirsiniz. Veya 3 ya da 7 günlük Learning Mod seçenekleri bulunmaktadır. Bu durumda belirlenen süre sonunda GreenSQL otomatik olarak ilgili db için Active Protection moduna geçer.Learning modunu kullanarak, GreenSQL’in web uygulamanıza ait doğru sql komutlarını öğrenmesini ve learning mode sonunda, öğrenilen komutlar dışında kalan daha önce rastlanılmamış sql cümlelerini blocklamasını sağlayabilir ve false positive durumları en aza indirgeyebilirsiniz. Bu modların yanı sıra, GreenSQL CREATE, DROP vs. gibi bilinen database yönetim komutlarını da tamamen blocklayabilmektedir. İhtiyacınıza göre bu özellikten de faydalanabilirsiniz. Illegal Querylerin Tespiti GreenSQL bir query’nin illegal olup olmadığınu tespit etmek için aşağıdaki metodları kullanır. Yönetimsel ve Sensitive Query’lerin saptanmasıGreenSQL imza tabanlı bir sistem kullanır ve querylerin, database yapısını değiştirmek, sistem dosyalarına erişmek vs. gibi yönetimsel ve hassas işlev içerip içermediğin tespit eder ve bu tip query’leri illegal olarak değerlendirir. Eğer web uygulamanız böyle query’ler çalıştırıyorsa, bunları spesifik olarak whiteliste’e ekleyerek false positive durumların önüne geçebilirsiniz. Query Risk Hesaplaması GreenSQL, bir query’inin risk derecesini hesaplamak için örnek olarak aşağıdaki faktörleri göz önüne alır. Users, Accounts vs. gibi hassas tablolara erişim. Sql komutlarının içinde yorum ifadeleri bulunması. Boş password stringi. Query içerisinde “or” token’i bulunması. SQL tautology GreenSQL ile ilgili teorik bilgiler hemen hemen bu kadar. Şimdi kurulum ve yaplandırma işlemlerine geçelim. GreenSQL Kurulumu GreenSQL RedHat, CentOS, Fedora, SuSe, Mandriva, Debian, Ubuntu gibi GNU/Linux dağıtımları ve FreeBSD sistemler için pre-compiled paketi bulunuyor. Böylece kurulumu, sisteminizin paket yöneticisini kullanarak yapabiliyorsunuz. Ben burada Greensql’in CentOS 5.2 üzerine kurulumundan bahsedeceğim ancak siz download sayfasından kendi dağıtımınıza ait pre-compiled paketi indirebilirsiniz. Paketin yüklenmesi dışındaki tüm işlemler aynıdır. Ayrıca, GreenSQL’in web tabanlı bir yönetim arayüzü bulunduğundan dolayı, sunucunuzda apache, php ve mysql bileşenleri bulunmalıdır. Dolayısı ile şimdi bahsedeceğim işlemlere başlamadan önce sunucunuzda bu bileşenlerin bulunduğuna emin olun. Download Sisteminize uygun paketi, [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] adresinden download edebilirsiniz. Ben CentOS 5.2 kullandığım için greensql-fw-1.2.2-17.1.i386.rpm isimli rpm paketini indiriyorum. Kurulum Kurulumu herzamanki rpm install yönetimi ile yapıyoruz. PHP- Kodu: GreenSQL, yapılandırma ayarları ve alert loglarını bir database’de (MySQL ya da PostgreSQL) tutuyor. Database ayarlamalarını ve temel yapılandırma için /usr/sbin/greensql-config betiğini çalıştırmak yeterli oluyor. PHP- Kodu: PHP- Kodu: Son olarak da işlemleri gerçekleştirip yapılandırmayı /etc/greensql/greensql.conf dosyasına yazıyor. GreenSQL servisinin start edilmesi Yapılandırma işlemlerinden sonra servisi başlatıyoruz. PHP- Kodu: GreenSQL Management Console Yapılandırması Bu web konsolu, GreenSQL firewall tanımlamalarının yapılması ve hertürlü yönetim işleminin gerçekleştirilmesi için kullanılmaktadır. Burada, back-end database’lerinizi tanımlayarak bu database’ler için GreenSQL’in hangi modda çalışacağını ayrı ayrı belirleyebilirsiniz. GreenSQL web interface’ine ait dosyalar öntanımlı olarak /usr/share/greensql-fw/ dizininde bulunmaktadır. Bu dizini web sunucunuzun document root’una taşıyarak ya da document root’tan orjinal dizine link yaratarak kolayca devreye alabilirsiniz. Örnek olarak CentOS 5.2′de apache 2.2′nin default document root’u /var/ Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. Bu durumda linkleme işlemini şu şekilde yapabilirim: PHP- Kodu: PHP- Kodu: Web interface’i ile ilgili apache ayarlarınızı düzenleyebileceğiniz bir de /etc/greensql/greensql-apache.conf isimli dosya bulunmaktadır. Buradan ihtiyacınız olan düzenlemeleri yapabilirsiniz. Bir testlik yoksa, GreenSQL şu an çalışmaktadır ve tcp 3305 portunu dinlemektedir. Kontrol etmek için netstat komutundan yararlanabilirsiniz. PHP- Kodu: Ayrıca, sql komut satırına da bağlanarak durumu check edebilirsiniz. PHP- Kodu: Çıktı şuna benzer olacaktır: PHP- Kodu: PHP- Kodu: Temel yapılandırma işlemleri bu kadar. Bundan sonra web interface’i kullanarak, proxy uygulaması yapılacak db’lerinizi GreenSQL’e tanımlamak ve web uygulamanızın mysql connection ilgilerini 3305′e bağlanacak şekilde değiştirmekten ibaret. Örnek olarak web uygulamanızın sql connection satırı aşağıdaki gibiyse: PHP- Kodu: PHP- Kodu: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] syslogs org |
Cevap: GreenSQL DB Firewall ile Sql Injection Önlemi PostgreSQL 'i her freelance işimde kullanırım. Yapısı ve kullanışlığına oldukça aşiyan oldum. Güzel bir ara katman uygulama olmuş. Fakat sistemi ne kadar yorar, DB performansını ne kadar etkiler. Bu tip argümanlar önemli kıstas bu tür uygulamalar için. Paylaşım için teşekkürler. |
Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 04:21. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk