THT DUYURU

Web & Server Güvenliği Doğru web ve veritabanı sunucusu güvenliği sağlanmadan, bilgisayar korsanları hassas verilerinize erişebilir. Web, Sunucu ve veritabanı güvenliğini nasıl sağlayacağınızı buradan öğrenebilirsiniz.

chat
Seçenekler

Oracle Veritabanında Erişim Denetimi

CmcEagle - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
06/2013
Nereden:
Spain
Yaş:
33
Mesajlar:
136
Konular:
111
Teşekkür (Etti):
1
Teşekkür (Aldı):
12
Ticaret:
(0) %
23-06-2013 18:05
#1
Oracle Veritabanında Erişim Denetimi
Son yıllarda, bilgi sistemlerinde ortaya çıkarılan güvenlik zafiyetlerinde görülen artışa paralel olarak, veritabanı sistemlerinde de birçok açıklık saptanmıştır. SQL Slammer [1] ve SQL Snake [2] gibi bazı solucanlarla bu açıklıkların daha fazla saldırgan tarafından bilinmeye başlaması, Listener gibi ağ üzerinden direk olarak erişilen servislerde bazı kritik açıklıkların ortaya çıkarılması [3][4] veritabanı sistemlerine erişim kontrolü uygulanmasını zorunlu kılmıştır.
Bir bilgi sistemi varlığına erişim kontrolü uygulamanın en etkin yöntemi güvenlik duvarı kullanılmasıdır. Günümüzde güvenlik duvarları erişimlerin port veya IP bazlı engellenmesini sağlarken, uygulama katmanında ağ trafiğini inceleyerek anahtar ifadelerin yer aldığı bağlantıların düşürülmesine imkan tanımaktadır. Bu sebeple veritabanı gibi kritik ağ servislerini veren sunucular host veya ağ tabanlı güvenlik duvarları ile korunmalıdır. Bu şekilde, veritabanı servisleri üzerinde oluşabilecek açıklıklarının saldırı yüzeyi daraltılmalıdır.
Güvenlik duvarı kullanılan sistemlerde en sık rastlanan güvenlik sorunu, güvenlik duvarı politikasının doğru veya yeterli atanmamış olmasıdır. Veritabanı gibi kritik servislere erişim mümkün olduğunca uygulama sunuculara ve veritabanı yöneticilerine açık tutulmalı, istemci-sunucu mimarisinde uygulamalar bulunuyorsa istemci bilgisayarlar net olarak belirlenerek erişim sadece bu bilgisayarlara açılmalıdır.
Yapılandırma Tabanlı Erişim Kontrolü

Güvenlik duvarı kullanılamayan ortamlarda erişim denetiminde başvurulabilecek diğer bir çözüm de Oracle veritabanının sunduğu yapılandırma seçenekleridir. IP adresi bazlı erişim kontrolü sağlayan bu seçenekler SQLNET.ORA dosyasında yer alan tcp.validnode_checking, tcp.invited_nodes, tcp.excluded_nodes parametreleri ile ayarlanır. Her bir veritabanı sunucusu üzerinde ayrı yapılandırma dosyalarının oluşturulduğu bu yöntem daha basit veritabanı sistemleri için tavsiye edilmektedir. IP bazlı erişim kontrolü uygulama seviyesinde gerçekleştirildiği için bu yapının daha güvensiz olduğu unutulmamalıdır.
Oracle üzerinde sunucu bazlı erişim kontrol listelerinin tanımlanması $ORACLE_HOME/network/admin/sqlnet.ora dosyasında gerçekleştirilir [5]. Öncelikle erişim kontrolünün aktif hale getirilmesi için
tcp.validnode_checking=YES
tanımlaması yapılır. Daha sonra erişimi engellenecek IP adresleri için
Kod:
tcp.excluded_nodes=(IP1,IP2,...)
Erişim izni verilecek IP adresleri için ise
Kod:
tcp.invited_nodes=(IP1,IP2,...)
tanımlamaları yapılır. Oracle, yapılandırma dosyasında bu iki tanımlamadan sadece birisini kabul eder. Bu sebeple aynı anda hem bazı IP adreslerini engellemek hem de bazılarının erişimine izin vermek mümkün değildir. Yapılan tanımlama ile bazı IP adresleri engelleniyorsa diğer tüm bağlantılar kabul edilir. Aynı şekilde bazı IP adreslerine de bağlantı izni verilirse diğer bağlantılar kabul edilmez. Yapılandırma tamamlandıktan sonra LISTENER servisi aşağıdaki komutlarla tekrar başlatılmalıdır.
Kod:
cmd > lsnrctl stop  
  cmd > lsnrctl start
Oracle Connection Manager Kullanımı

Veritabanına erişimlerin kontrol altına alınmasında güvenlik duvarlarının yalnız kullanımı her zaman en etkin yöntem değildir. Örneğin aynı sunucu üzerinde birden fazla veritabanı oluşturulması durumunda IP bazlı erişim denetimi yetersiz kalmakta, uygulama seviyesinde veritabanı servis ismine göre denetim ihtiyacı ortaya çıkmaktadır. Diğer taraftan veritabanı istemcilerinin IP adreslerinin sıkça değiştiği ortamlarda güvenlik duvarı yöneticisinden erişim kontrolü kurallarını belirlemesini beklemek etkin bir çözüm olmayabilir.
Bu amaçla Oracle tarafından sunulan, servis tabanlı erişim kısıtlamasına imkan tanıyan OCM (Oracle Connection Manager - [6]) çözümü kullanılabilir. OCM ile sadece veritabanı servisine erişimler kontrol altına alındığı ve sunucu üzerindeki diğer servisler kapsama dahil edilmediği için yalnız kullanılmasının güvenli olmadığı unutulmamalıdır. Bu sebeple güvenlik duvarlarında daha geniş bir uzayı kapsayan ve çok sık değiştirilmeyecek erişim kuralları tanımlanarak detaylı tanımlamaları veritabanı yöneticisinin yapmasına imkan tanıyan OCM’e başvurulmalıdır.
Oracle Connection Manager, veritabanı sunucuları ile istemciler (uygulama sunucuları, istemci-sunumcu uygulamaları vs.) arasında vekil sunucu (proxy) görevini yerine getirerek kendisine gelen bağlantı isteklerini ilgili sunucuya veya diğer vekil sunuculara iletir. OCM temel olarak iki fonksiyonu yerine getirir. Bunlar, oturum çoklama (Session multiplexing) ve erişim kontrolüdür. Erişim kontrolü fonksiyonu ile belirli istemcilerden gelen ve OCM’nin arkasında yer alan belirli veritabanı servislerini hedefleyen bağlantı istekleri için kabul ya da ret kuralları tanımlanabilir. OCM kullanımında istemcilerin sadece OCM’in kurulu olduğu sunucunun ilgili portuna erişmeleri yeterlidir. Veritabanlarına bağlanma yetkisine sadece OCM sahip olmalıdır.
Oracle Connection Manager ayrı bir sunucuya kurulabileceği gibi veritabanının kurulu olduğu sunucuda da yer alabilir. Kurulduktan sonra yapılandırması $ORACLE_HOME/network/admin/cman.ora dosyasında gerçekleştirilir. Aşağıda örnek bir yapılandırma yer almaktadır.
Kod:
CMAN1=  
    (CONFIGURATION=  
    (ADDRESS=(PROTOCOL=tcp)(HOST=AG_GECIDI)(PORT=1521))  
      (RULE_LIST=  
        (RULE=(SRC=206.62.226.32/27)(DST=VTYS)(SRV=*)(ACT=accept))  
        (RULE=(SRC=206.26.226.32)(DST= AG_GECIDI)(SRV=cmon)(ACT=accept)))  
      (PARAMETER_LIST=  
        (MAX_GATEWAY_PROCESSES=8)  
        (MIN_GATEWAY_PROCESSSES=3)  
        (REMOTE_ADMIN=YES))
Bu örnekte öncelikle AG_GECIDI isimli sunucu üzerinde 1521. portta çalışacak LISTENER servisinin yapılandırması gerçekleştirilmiştir. Daha sonra istemciler ile veritabanı sunucuları arasındaki bağlantılar için iki kural tanımlanmıştır. Birinci kural 206.62.226.32/27 alt ağından VTYS sunucusuna doğru olan tüm veritabanı bağlantılarını kabul etmektedir. İkinci kural ise OCM sunucusu (AG_GECIDI) üzerinde çalışan CMON(Oracle Connection Manager Control utility) servisine sadece 206.26.226.32 IP adresinin erişimine izin vermektedir.
Veritabanı sunucularının OCM üzerinden bağlantıları kabul etmeleri için öncelikle INIT.ORA dosyasında aşağıdaki şekilde bir tanımlama yapılmalıdır.
Kod:
REMOTE_LISTENER= LISTENER_OCM
Daha sonra tanımlanan OCM için bağlantı dizgisi $ORACLE_HOME/network/admin/tnsnames.ora dosyasına girilmelidir.
Kod:
LISTENER_OCM =  
   (DESCRIPTION=  
    (ADDRESS_LIST=  
     (ADDRESS=(PROTOCOL=tcp)(HOST=AG_GECIDI)(PORT=1521))))
Yapılandırma tamamlanıp veritabanı tekrar başlatıldığında OCM tarafında CMADMIN (Connection Manager Administration) süreci[7], veritabanı sunucusu taraflarında ise PMON süreci (the database instance background process) [8] gerekli kayıt işlemlerini gerçekleştirecek bu şekilde bağlantı istekleri ve cevapları OCM ile veritabanı arasında gidip gelmeye başlayacaktır.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler