Veritabanı Uygulamalarının Güvenliğini Sağlamak İçin Temel Kontroller

1
395
views
Veritabanı uygulamaları; veriyi, bilgiyi saklayan yazılımlardır. Bu yazıda veritabanı uygulamalarının güvenliğini sağlamak için temel kontroller incelenecektir.

Veri saklama işlemi veritabanı uygulamaları dışında, farklı yazılımlarda yapabilir ama aradaki en önemli fark, veritabanın bu bilgiyi verimli ve hızlı bir şekilde yönetip değiştirebilmesidir. Büyük orandaki verilerin güvenli bir şekilde tutulabildiği, bilgilere hızlı erişim imkanlarının sağlandığı, bilgilerin bütünlük içerisinde tutulabildiği ve birden fazla kullanıcıya aynı anda bilgiye erişim imkanının sağlandığı programlardır. Uygulamanın önem derecesinden bahsettikten sonra temel anlamda güvenliğinden de sorumlu olmakta fayda var. Veritabanı uygulamanızı takip ettiğinizden emin olmak için bu kontrol listesinin bir nebze etkili olabileceğini düşündüm.

Güvenlik ihlalleri artan bir fenomendir. Daha fazla ve daha fazla veri tabanına erişilebilir hale geldikçe internet ve web tabanlı uygulamalar aracılığıyla güvenlik tehditlerine maruz kalma durumları artacaktır. Amaç, bu tehditlere karşı duyarlılığı azaltmaktır. Belki en çok yayınlanmış veritabanı uygulaması güvenlik açığı en bilinen yöntemlerden biri olan SQL injection ve arabellek taşmalarıdır. Bu güvenlik açığı veritabanını temel olarak özelliklerden kaynaklanır. Çift tireleri kullanarak yorumları gömme gibi şeylere izin veren SQL dilinin (–), noktalı virgülle ayrılmış SQL deyimlerini ve meta verileri sorgulama yeteneği olarak, örnek bir web sayfasında bir giriş işlemi kullanıldığında neler olabileceğini gösterir. Saldırı vektörleri, güncellemeler ve geçici çözümler olduğunda bile her zaman saldırganlar tarafından çeşitli tekniklerle saldırıya maruz kalabiliyor.

 

Temel olarak baz alınacak yollar; yapılandırma, veri korumaları, hesap sağlama, işletim sistemi / veritabanı etkileşimi ve veritabanını kullanan ön uç uygulamalar için dikkat edilmesi gerekenler olarak sıralanabilir.

Veritabanlarına yönelik büyük saldırılar, aşağıdaki şekilde gösterildiği gibi kategorize edilebilir.

 

1) Erişim Kontrolü ve Yetkilendirme Adımları

Verileri korumak için kullanılan birincil yöntem, verilere erişimi sınırlandırmaktadır. Bu yöntem; kimlik doğrulama, yetkilendirme ve erişim kontrolü aracılığıyla belirgin bir şekilde farklı ancak hakların belirlenmesinde ayrıntı düzeyinde erişim kontrolüne odaklanarak kullanılır. Sisteme erişimi kısıtlamak ve yetkisiz erişimi engellemek için farklı kontroller sağlanır. Belirli veri nesnelerine ve veri kümelerine haklar ve ayrıcalıklar atayarak işlemler yapılır. Bu işlemler bir veri tabanı içinde genellikle tabloları, görünümleri (view), satırları ve sütunları içerir. Örneğin, “OğrenciX” kullanıcısının yetki ayrıcalıklarıyla “Universite” veri tabanına giriş hakkı verilebilir.

Atlamak isteyebilirsiniz çünkü zaten erişim kontrolleri olduğunu biliyorsunuz… Veritabanı ve veri güvenliği için ilk savunma hattıdır. Uygun yapılandırmayı sağlamak için yakın çok titiz inceleme yapmak gereklidir. İlgili yapıda daha uzun bir veritabanı olduğunu düşünürsek; daha fazla erişim hakkı, daha fazla kontrol kontrol…

Varsayılan kullanıcı parolaları değiştir

Veritabanını kurduktan hemen sonra. Periyodik olarak geri alındıktan sonra veya yeniden yükleme veya hesap sıfırlama nedeniyle.

Kullanılmayan kullanıcı hesaplarını kilitle

Tamamen emin olduktan sonra, asla kullanılmayacaklardan başlamak gereklidir.

Erişim matrislerinin oluşturulması

Güvenlik DBMS gibi nesneleri içeren bir erişim matrisi inşa edebilirsiniz.

En basit haliyle, matris iki boyutlu bir tablo olarak görülebilir:

 

Daha güçlü parolalar uygulayın

Veritabanı yetkilendirmelerinde, kontrol için alan düzeyinde erişim kullanıyorsanız daha güçlü parolalar için politikalar ayarlayabilirsiniz. Tavsiyem statik parolalardan uzaklaşmaktır. Kamu hesaplarını ve tüm hesaplardan herkese açık erişimi kaldırın. Veritabanınız için alan adı doğrulama veya veritabanı kimlik doğrulaması seçiniz.

Rolleri ve grupları yakından inceleyin

Daha fazla kontrol, kullanıcı ve daha önce tanımlanmış sistem rollerinin yönetiminde ise esneklik sağlar. Ayrıca parolaların kullanımı için: parolanın ömrü kontrol edilmeli, son kullanım süresi dolduğunda uyarı mesajı verilmeli, eski parolaların yeniden kullanılmasını engelleyecek bir kısıtlama getirilmeli, yeterince karmaşık ve uzun parola seçilmeli, veritabanına bağlanmak için ardarda yanlış parola giriş sayısının kısıtlanması gerekmektedir.

Katılımı ve kullanıcıların yeterli yetkilere sahip olduğundan emin olmak için bu prosesi periyodik olarak gözden geçirin. Üstelik otomasyon araçları izinleri aldığında her kullanıcı hesabına atanan yetkiyi manuel tespit etmek için ayarların gözden geçirilmesi gerekiyor. Bu zaman alıcı olabilir. Büyük veritabanları için planlı bir çalışma yapmalısınız.Unutulmaması gereken husus ise erken tespit çok daha kolay artırılmış ayrıcalıkları değiştirir ve durdurur.

 

2) Veritabanı Konfigürasyonunu Belirleme

Bir veritabanı yaratıldıktan sonra, veritabanı yöneticisi diğer kullanıcılara erişim hakkı sağlamak için, veritabanına erişim ve üzerinde bazı uygulamaları gerçekleştirme hakkı vermek durumundadır. Güvenliği sağlamak için,yönetici kimlerin veritabanına bağlanacağını ve hangi uygulamaları gerçekleştireceğini belirlemelidir. Kullanıcı isimleri ve parolalar oluşturulduktan sonra, kullanıcılara veritabanı üzerinde yapabilecekleri işlemler atanır. ISO 27001 Bilgi Güvenliği Yönetim Standardındaki Görevler Ayrılığı ilkesine göre hareket edilmesinde fayda var.

ISO 27001:2013 EK-A 6.1.2  Görevler Ayrılığı

Kontrol:

Kuruluşun varlıklarının yetkisiz veya farkında olmadan değiştirilme ya da kötüye kullanılma fırsatlarını azaltmak için, görevler ve sorumluluk alanları ayrılmalıdır.

 

Veritabanlarınızın, veritabanı sorguları aracılığıyla nasıl yapılandırıldığı, güvenlik ve operasyonel bütünlüğü belirlemek için çok önemlidir.

İhtiyacınız olmayan modülleri ve hizmetleri ve/veya paketleri çıkarın. Bu hizmetler güvenli olabilir veya olmayabilir. Veri tabanları için doküman onaylı yapılandırma referansı kullanılmalıdır. Sahip olduğunuz veritabanlarını keşfetmek için tarama araçlarını kullanın ve yapılandırma ayarları uygulanırken tutarlılığı kontrol edin.

Oracle Database üzerinde bir opsiyon olarak gelen ‘Database Vault‘ seçeneği, veritabanını daha güvenli hale getirmek için yapılacak konfigürasyondur. Sistem performansına çok düşük bir etkiyle aktifleştirilip, yüksek yetkili kullanıcıların veritabanı üzerinde hassas veriye ulaşması engellenebilir. Database Vault, Oracle Enterprise edition sürümü ile birlikte gelir. Kurulum sırasında aktifleştirilebileceği gibi, sonradan Database Configuraiton Assistant (dbca) çalıştırılarak da aktif hale getirilebilir. Veritabanında en yetkili kullanıcıların bile sadece istenilen veriyi görmesini sağlayabilir böylece hassas verinizi koruyabilirsiniz. Gerçek zamanlı takip ve denetimi sağlar. Veritabanı ve ara katman ortamlarınız için Data Masking (veri maskeleme) seçeneklerini araştırın.

Girdi/Çıktı kontrolleri , kullanıcı girdisinde problem yaratabilecek SQL’e özel karakterler var mı? Girilen veri, veri tipine uyumluluk gösteriyor mu? Girilen veri limitler dahilinde mi? (taşma hataları) Gerekli hata denetimi fonksiyonlarıyla program çıktısı seçenekleri kontrol edilmelidir. Uygulama tasarımı ve programlanması sırasında güvenlik ilkeleri ve oluşabilecek problemler dikkate alınmalıdır. Sistem üzerinde bilgi toplanmasına neden olabilecek başlık bilgileri ve hata mesajlarının açık bırakılmaması gereklidir.

 

3) Değerlendirme Veritabanı / Platform Etkileşimi

Tüm veritabanları, işletim sistemi komutlarını doğrudan aramak için araçlar sağlar. Bu işlevler, işletim sistemi ve veritabanı kodundan oluşur.
Mesela yönetim izinleri altında çalışan ve çift yönlü bir portal sunan veritabanı.

  • Genişletilmiş veya harici saklı yordamları devre dışı bırakın.
  • Yerel platformda veritabanı sahibi hesabının olduğundan emin olun.
  • Etki alanı yöneticilerinin veritabanı yöneticileri olmadığından emin olun.
  • Import / export yardımcı programları, başlangıç komut dosyaları, kayıt defteri girdileri veya özellikler dosyaları

 

4) Güvenli İletişim

  • Uygulamalar ve veritabanı, özellikle Web uygulaması arasındaki oturumları şifreleyin.
  • Veritabanı bağlantı noktası numaralarını varsayılan olmayan değere sıfırlayın. Örneğin, hareketli Oracle’ın varsayılan 1521 bağlantı noktası rastgele bir değere atanırsa otomatik saldırıların öüne geçilebilir Saldırganın bilgi için araştırmasını zorlaştırır.
  • Geçici bağlantıları kapatın. İstenmeyen yerlerden geçici bağlantılar, günün saati veya onaylanmamış uygulamalarla tarafından tespit edilebilir ve reddedilebilir.

Basit giriş tetikleyicileri, veritabanı güvenlik duvarları ve bazı erişim kontrol sistemleri.

 

5) Güncelleme Yönetimi

  • İlgili ortam oluşturup, süreç yaratıp veritabanı güncellemelerinikontrol edin.
  • Ayrı DBA’lar tarafından yama indirmelerine izin vermeyin; daha ziyade, merkezi onaylanmış ve doğrulanmış kopyalardan yola çıkın.
  • Dahili yama döngülerini satıcı yama sürümleriyle senkronize edin.
  • Yamaların ya da işlevlerin değiştirilmesinin kabul edilemez olduğu durumlarda yeniden yapılandırın.

 

2016 yılında veritabanları zafiyetleri karşılaştırıldığında MySQL %32 ile birinci sırada yer alırken, Microsoft %26 ile ikinci %14 ile de Oracle üçüncü sırada yer almaktadır.

  • Veritabanının güncel halini zaafiyetsiz halini yedekleyin.
  • Zafiyetlerin güncellenmiş halini CVSS puanlarına göre sıralayınız.
  • Zafiyetin gerçekletiği kodun yayınladığı zafiyetlere önem veriniz.
  • Sistem üzerinde kod çalıştırabilen ve sistem üzerinde yetki yükseltilebilen zafiyetlerin güncellenmesine öncelik verin.

 

6) Hesap Verilebilirlik Denetim ve Olay İnceleme

Denetim, her iki veritabanından yapılandırılmış veritabanı eylemlerinin izlenmesi ve kaydedilmesidir.Fiziksel bütünlüğü sağlamak için hesap verebilirlik ve denetim kontrolleri gereklidir.

Veritabanı trafiğini analiz eden, çalıştırmayı algılayan, engelleyen, yetkisiz sorgular ve SQL enjeksiyonları tespit eden gerçek zamanlı çözümler araştırabilirsiniz.

Bu algılanan tehditler hakkında uyarılar ve raporları yönetici belirlediğiniz kişilere e-posta veya anlık mesajlaşma ile uyarı gönderen mekanizmalar mevcut.

Log yönetimi ve SIEM sistemlerinin bileşenleri olarak değerlendirilmeye çalışılmalarına rağmen DAM sistemleri (Database activity monitoring) bu teknolojilerden ve DBMS ten bağımsız sistemlerdir. Bir günlük tutma politikası oluşturup,olayları ve filtreleri belirleyip DAM üzerinden takip etmek fayda sağlar. Sistem işlevlerinin ve girişlerin arızalarına odaklanarak günlükleri düzenli olarak gözden geçirin.

Denetim esnasında işleride kolaylaştırır.

Veritabanı güvenliği konusunda elimden geldiğinde bildiklerim, araştırdıklarım kadar bir şeyler yazdım. Ne yaparsak yapalım yüzde yüz güvenli olunamaz. Ana faktör, kalıplaşmış gibi olacak ama “insan” faktörüdür.

Sonuç olarak yapılacak noktalara tekrar kısaca değinmem gerekirse;

  • Hassas verilerinizi keşfedin ve kataloglayın ve envanter oluşturun.
  • Güncel olmayan kimlik doğrulama sistemlerine ait istemcilerin bağlantılarını engelleyin.
  • Veri kaybolduğunda veya çalındığında ne yapacağınıza dair bir plan yapın.
  • Felaket kurtarma planı yaptırın.
  • İşbirliği kültürü oluşturup; uygulama geliştiricilerini tanıyın. Uygunluk grubunuz varsa, bunları tanıyın ve tavsiyelerini,görüşlerinlerini alın.
  • Yönetmelikler için özel olarak tasarlanmış önceden oluşturulmuş politikalar ve raporları inceleyin.
  • Client-Server arasındaki trafiğin TLS ile şifrelenmiş olmasına dikkat edin.
  • Kullanıcıların sadece belirttikleri sistem üzerinden bağlandıklarından emin olun.
  • Kullanıcıyı yönetmek (yaratmak, silmek, denetlemek) için politikalar oluşturun
  • Kullanıcı izleme politikasını belirleyin.
  • Kullanıcı tanımlama yöntemini belirleyin.
  • Tehdit ve güvenlik olaylarını ve raporlama prosedürünü tanımlayın.
  • Belirli veri nesnelerinin duyarlılığını değerlendirin.

 

Kaynak:

https://searchsecurity.techtarget.com/magazineContent/Basic-Database-Security-Step-by-Step

 

 

 

1 YORUM

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz