Veri tabanı uygulamaları; veriyi, bilgiyi saklayan yazılımlardır. Saklama işlemini farklı yazılımlarda yapabilir ama aradaki en önemli fark, veri tabanı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. Veri tabanı uygulamanızı takip ettiğinizden emin olmak için bu kontrol listesinin bir nebze etkili olabileceğini düşündüm.
VERİTABANI GÜVENLİK TEHDİTLERİ
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ış veri tabanı uygulaması güvenlik açığı en bilinen yöntemlerden biri olan SQL injection ve arabellek taşmalarıdır.
Bu güvenlik açığı veri tabanı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, OS / veri tabanı etkileşimi ve veri tabanını kullanan ön uç uygulamalar için dikkat edilmesi gerekenler.
Veri tabanlarına yönelik büyük saldırılar, yandaki şekilde gösterildiği gibi kategorize edilebilir.
ERİŞİM KONTROLLERİ VE YETKİLENDİRME ADIMLARI
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, satırları ve sütunları içerir. Örneğin, OğrenciX kullanıcısının yetki ayrıcalıklarıyla Üniversite veri tabanına giriş hakkı verilmesi.
Atlamak isteyebilirsiniz çünkü zaten erişim kontrolleri olduğunu biliyorsunuz. Veri tabanı 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 veri tabanı olduğunu düşünürsek; daha fazla erişim hakkı, daha fazla kontrol kontrol…
Varsayılan kullanıcı şifrelerini değiştir
Veri tabanı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ü şifreler uygulayın
Veri tabanı yetkilendirmelerinde, kontrol için alan düzeyinde erişim kullanıyorsanız daha güçlü şifreler için politikalar ayarlayabilirsiniz. Tavsiyem statik şifrelerden uzaklaşmaktır. Kamu hesaplarını ve tüm hesaplardan herkese açık erişimi kaldırın. Veri tabanınız için alan adı doğrulama veya veri tabanı 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 şifrelerin kullanımı için: şifrenin ömrü kontrol edilmeli, son kullanım süresi dolduğunda uyarı mesajı verilmeli, eski şifrelerin yeniden kullanılmasını engelleyecek bir kısıtlama getirilmeli, yeterince karmaşık ve uzun şifre seçilmeli, veri tabanına bağlanmak için art arda yanlış şifre 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 veri tabanları 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.
VERİTABANI KONFİGÜRASYONUNU BELİRLEME
Bir veri tabanı yaratıldıktan sonra, veri tabanı yöneticisi diğer kullanıcılara erişim hakkı sağlamak için, veri tabanına erişim ve üzerinde bazı uygulamaları gerçekleştirme hakkı vermek durumundadır. Güvenliği sağlamak için, yönetici kimlerin veri tabanına bağlanacağını ve hangi uygulamaları gerçekleştireceğini belirlemelidir. Kullanıcı isimleri ve şifreler oluşturulduktan sonra, kullanıcılara veri tabanı ü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.
Veri tabanlarınızın, veri tabanı 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 veri tabanları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, veri tabanı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 veri tabanı ü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. Veri tabanında en yetkili kullanıcıların bile sadece istenilen veriyi görmesini sağlayabilir böylece hassas verinizi koruyabilirsiniz. Real time takip ve denetimi sağlar. Veri tabanı 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.
DEĞERLENDİRME VERİTABANI / PLATFORM ETKİLEŞİMİ
Tüm veri tabanları, işletim sistemi komutlarını doğrudan aramak için araçlar sağlar
Yönetimsel görevler. Bu işlevler, işletim sistemi ve veri tabanı kodundan oluşur.
Mesela yönetim izinleri altında çalışan ve çift yönlü bir portal sunan veri tabanı.
• Genişletilmiş veya harici saklı yordamları devre dışı bırakın.
• Yerel platformda veri tabanı sahibi hesabının olduğundan emin olun.
• Etki alanı yöneticilerinin veri tabanı yöneticileri olmadığından emin olun.
• İmport / export yardımcı programları, başlangıç komut dosyaları, kayıt defteri girdileri veya özellikler dosyaları
GÜVENLİ İLETİŞİM
• Uygulamalar ve veri tabanı, özellikle Web uygulaması arasındaki oturumları şifreleyin.
• Veri tabanı 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 ö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, veri tabanı güvenlik duvarları ve bazı erişim kontrol sistemleri.
GÜNCELLEME YÖNETİMİ
İlgili ortam oluşturup, süreç yaratıp veri tabanı güncellemelerini kontrol 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 veri tabanları 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.
· Veri tabanının güncel halini zafiyetiz halini yedekleyin.
· Zafiyetlerin güncellenmiş halini CVSS puanlarına göre sıralayınız.
· Zafiyetin gerçekleştiği kodun yayınladığı zafiyetlere önem veriniz.
· Sistem üzerinde kod çalıştırabilen ve sistem üzerinde yetki yükseltilebilen zafiyetlerin güncellenmesine öncelik verin.
HESAP VERİLEBİLİRLİK DENETİM ve OLAY İNCELEME
Denetim, her iki veri tabanından yapılandırılmış veri tabanı eylemlerinin izlenmesi ve kaydedilmesidir. Fiziksel bütünlüğü sağlamak için hesap verebilirlik ve denetim kontrolleri gereklidir.
Veri tabanı 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.
Veri tabanı 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üşlerini 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.
Makalemin sonuna geldik, umarım faydalı bir makale olmuştur. Bir sonraki makalemde görüşmek üzere.