ÇözümPark'a hoş geldiniz. Oturum Aç | Üye Ol
 
Ana Sayfa Makale Video Forum Resimler Dosyalar Etkinlik Hizmetlerimiz Biz Kimiz

Oracle

Oracle Veritabanında Kimlik Doğrulama

Kullanıcı (cihaz , varlık) ‘dan birinin , dataya (kaynak ,uygulama) erişmek için kimlik doğrulama yapması gerekmektedir. Kimlik doğrulama, güvenli bir şekilde belirli bir veriye erişimi sağlar. Kimlik doğrulamadan sonra, sahip olunan yetki işleme izin verir yada erişim basamaklarına limitler koyar. Bu erişim basamakları  Oracle da privileges , roles , profiles ve resource limitations dan yapılandırılır.

 

Kulllanıcıların kimlik doğrulama yapabilmesi için, bazı işletim sistemleri bilgi kullanması için Oracle’a izin verir. Yani bir kez işletim sistemi ile kimlik doğrulama gerçekleştirildiğinde, kullanıcı adı ve şifre belirlemeden Oracle ‘ a bağlanılabilir.

 

Örn: İşletim sisteminde kimlik doğrulama SQL plus ‘a başvurur. Kullanıcı adı ve şifreyi yönlendirir.

 

Oracle veritabanı kimlik doğrulaması gerçekleşebilmesi için kullanıcının oracle veritabanı ile bağlantı kurması gerekmektedir. Bu sebeple kullanıcı adı ve şifreyi tanımlamalıdır. Bu işlem veritabanı ‘na yetkisiz erişimleri önler, eğerki kullanıcı hatalı şifre işlemi sağlarsa bağlantı engellenir.

 

Oracle 11g ‘de Kullanıcı Doğrulama (Authentication – Standart Logon Process) Adımları ;

 

Oracle 11g de kimlik doğrulama adımları aşağıdaki sırayı takip eder.

 

1.       Client logon adını Db’ye gönderir.

 

 

image001

 

 

Tool üzerinden kullanıcı adı ve şifre bilgisini girdiği anda DB tarafına logon bilgisini iletmiş olur.

 

 

image002

 

 

2.       DB logon bilgisine karşılık , bir challenge gönderir. Challenge random number(salt) ile şifrenin hashlenmesinden oluşur.

 

 

image003

 

 

Challenge = Hash(ran num + şifre)

 

Client şifreden hashi hesaplar ve random number’ı decyrpt eder.Böylece random numarın açık halini elde etmiş olur.

 

3.       Client random number’ı (salt) şifreyi  encyrpt etmek için anahtar(key) olarak kullanır ve bu bilgiyi db’ye gönderir.

 

 

 

image004

 

 

 

Üçüncü adımın sonunda kimlik doğrulama işlemi gerçekleşmiş olur.

 

Şifre USER$ tablosu altında tutulur ve burada açık bir şekilde tutulmaz. Şifre bir hashleme algoritmasına tabi tutulur.Bu algoritma tek yönlü bir hashleme algoritmasıdır.

 

Oracle 11g ‘de hash algoritması olarak SHA-1 kullanılır. Oracle 11g hash  Algoritması aşağıdaki adımları  takip eder;

 

1.       Random bit (salt) yaratılır.

2.       Şifre , salt ile birleştirilir. (password +salt)

Burada şifre büyük harf küçük harf duyarlı bir şekilde birleştirilir. (case sensitive)

3.       SHA-1 kullanılarak hashli string elde edilir.

4.       Hash value ile random number(salt) birleştirilir.Bu değer ise db ‘de tutulur.

 

 

Dördüncü adımda kullanıcı db’ye authenticate olurken şifre saklandı.Hash’in farklı bir değerde gelmemesi için aynı random sayı kullanıldı.

 

Oracle 11g öncesinde çalışan Oracle’ın özel hash algoritması ise aşağıdaki adımları takip eder;

 

1.       Kullanıcı adı , şifre ile birleştirilir.Ve tamamı büyük harfe çevrilir.

Bunun sebebi Oracle 11g ‘den öncesinde Oracle’ın büyük harf küçük harf duyarlılığı olmamasıydı(case insensitive).

2.       Elde edilen string’in uzunluğu 16 bit oluncaya kadar “0”(sıfır) ‘lar ile tamamlanır.

3.       String’i 3DES /CBC(chiper block coding) kullanarak fix key kullanarak encyrpt eder.

4.       Encyrpted text ‘in son 8 karakterini yeni bir anahtar (key) olarak alınır.

5.       String tekrar 3DES /CBC kullanılarak encrypt edilir. Şifrelerken 4. Adımda elde edilen  anahtar kullanılır.

6.       String’in son 8 karakteri alınır ve hex ‘a ya çevrilir. Böylece elimizde 16 bitlik hashli karakter dizisi olur.

 

Oracle ‘da Taşınan Veri

 

Oracle veritabanında, veritabanına yetkili erişim olmadan verinin ele geçirilebilmesi için çeşitli yollar mevcuttur. Çünkü veri hem trafik olarak network üzerinden geçmektedir hem de dosyalar üzerinde saklanmaktadır.

 

Network üzerinden geçen trafik üçüncü şahıslar tarafından izlenebilir ve hassas veriler çalınabilir. Aynı zamanda hassas veri içeren bilgiler, işletim sistemi üzerinde dosya olarak saklanmaktadır. Bu dosyalara yapılan yetkisiz erişimler olması durumunda hassas veriler çalınabilir.

 

Oracle Veritabanı Trafiğinin Şifrelenmesi

 

Oracle veritabanı bağlantılarının çoğu, bilgisayar ağları üzerinden yapılan (uzaktan) bağlantılardır. Dolayısıyla veritabanı trafiği bilgisayar ağları üzerinden geçmektedir. Veritabanı trafiği TNS protokolünü kullanarak TCP/IP paketleri halinde bilgisayar ağları üzerinden iletilir. Trafiği daha iyi analiz edebilmek adına oluşan veritabanı trafiği üç genel başlık altında sınıflandırılmıştır.

 

1. Session bilgisini içeren, veritabanına bağlantıyı oluşturan trafik (logon kayıtları)

2. Bağlantı oluşturulduktan sonra çalıştırılan SQL queryler

                (Client’dan  Server ‘a giden gelen SQL queryler)

3. Çalıştırılan SQL querylere karşı geri dönen cevaplar.

 

Oracle veritabanı kurulumu da belirtmediğiniz sürece ön tanımlı olarak yapılan yapılandırma ile, veritabanı üzerine gelen ve giden tüm trafik açık metin şeklindedir.

 

Dolayısıyla araya girebilecek üçüncü şahıslar tarafından trafik dinlenebilir ve hassas bilgiler çalınabilir.

 

Düz metin trafiğin içeriğine bakabilmek için Wireshark uygulamasını kullanıldığında uygulama  ile alınmış olan oturum bilgisi trafiği şekilde gösterildiği gibidir.

 

Çalıştırılan Query aşağıdaki gibidir.

 

 

image005

 

 

Query çalıştırıldığında dönen sonuç aşağıdaki gibidir.

 

 

image006

 

 

image007

 

 

Bir başka örnek ise aşağıdadır.

 

Bu örnekte kullanıcı CREDIT_CARD tablosundan Select sorgusu çeker.

 

Wireshark ile araya girildiğinde aşağıdaki görüntüler elde edilir.

 

Yukarıdaki örnekde görüldüğü gibi saldırganın erişimi kalmadan bile hassas verileri ele geçirilebilir. Böyle bir durumda saldırganın bir DB kullanıcısına dahi ihtiyacı olmayacaktır.

 

Yakalanan trafiklerden anlaşılıyorki hem çalıştırılan SQL querysi hem de bu query karşılık olarak dönen cevap, ağ trafiğinin içinden düz metin olarak geçmekte ve üçüncü şahıslar tarafından görüntülenebilmektedir.

 

Oracle veritabanı bu tür suistimaller için Advanced Security Option (Oracle ASO) uygulaması yardımıyla veri güvenliğini sağlamaktadır. ASO yardımıyla veritabanı trafiği şifreli hale getirilebilir, veritabanında bulunan hassas verilerin şifreli halde saklanması sağlanabilir.

 

Oracle ASO İle Veritabanı Trafiğinin Şifrelenmesi

 

Veritabanı dosyaları harddisk üzerinden kopyalanması, network üzerinden geçtiğinde üçüncü şahıslar tarafından dinlenmesi veya veritabanı backuplarının bulunduğu teyp`ler ele geçirilmesi durumunda hassas veriler yetkisi olmayan kişilerin erişimine açık hale gelmektedir. Bunu önlemenin en güvenli yolu bu verilerin şifrelenerek tutulması veya taşınmasıdır.

 

Oracle veritabanı tarafından sunulan ASO uygulaması ile verilerin hem ağ katmanında hem de disk katmanında şifrelenerek taşınması ve saklanması sağlamaktadır. Oracle ASO bazı Oracle dağıtımlarında beraber gelmektedir, bazılarında ise sonradan ilave edilebilmektedir.

 

Oracle ASO için “Oracle Net Manager” kullanılarak yapılandırma, arayüz yardımı ile yapılabilir.

 

Arayüzü açmak için aşağıdaki komut kullanılır.

 

$ORACLE_HOME/bin/netmgr

 

Trafiğin şifrelenmesi için bazı ayarların yapılması gerekir.

 

Encryption Type” için dört seçenek bulunmaktadır;

 

REQUIRED: Şifrelemenin gerekli olduğunu belirtir.

 

Oracle şifrelenmemiş bağlantılara izin vermeyecektir.

 

REQUESTED: İsteğe bağlı olarak trafik şifrelenecektir. Hem sunucu hem client tarafında bu şekilde seçilmiş ise trafik şifrelenir, aksi durumda şifrelenmez.

 

ACCEPTED: Oracle`ın “accepted”, client tarafının “required” ve “requested” ayarlaması ile trafik şifreli olacaktır. Burada karar client ‘a bırakılmıştır.

 

REJECTED: Şifreli trafiğe izin verilmeyeceği anlamına gelir. 

 

Değişiklikler kaydedildiğinde $ORACLE_HOME/network/admin/sqlnet.ora dosyası içine aşağıdaki bilgilerin de kaydedilmesi gerekmektedir.

 

 SQLNET.ENCRYPTION_CLIENT = requested

SQLNET.ENCRYPTION_SERVER = requested

NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)

SQLNET.CRYPTO_SEED = 'encryption test'

SQLNET.ENCRYPTION_TYPES_CLIENT = (3DES168)

SQLNET.ENCRYPTION_TYPES_SERVER = (AES192, 3DES168, 3DES112)

 

Şimdi aşağıdaki sorguyu denemek  için çalıştırdığımız da ;

 

 

image008

 

 

Şifrelenmiş verinin wireshark elde edilen görüntüsü aşağıdaki gibi olacaktır.

 

 

image009

 

 

Oracle ASO kullanımıyla bilgisayar ağları üzerinden geçen veritabanı trafiği şifrelenmiş olup trafiği dinleyen üçüncü şahıslar tarafığından elde edilen bilgilerin düz metin olmaması sağlanmıştır.

Tarih : 24 Şubat 2013 Pazar 23:10 Yayınlayan: sevim sesli

Yorumlar

 

Rıza ŞAHAN

Elinize sağlık.

Şubat 24, 2013 23:28
 

Murat Koseoglu

Elinize Sağlık. Güzel makale olmuş.

Şubat 25, 2013 08:20
 

Cagatay ISIKCI

Elinize sağlık.

Şubat 25, 2013 09:18
 

Konuralp Balcik

Gerçekten iyi bir bilgi sunmuşsunuz birşeyi merak etmekteyim sun oracle zaten bir radius altyapısı olduğunu halde neden bir DB engine içinde bu fonksyonlar var ?

http://docs.oracle.com/cd/E19957-01/805-6061/6j5nf0ebu/index.html

Şubat 25, 2013 21:02
 

Hakan UZUNER

Eline sağlık.

Şubat 27, 2013 08:55
 

Ugur DEMIR

Eline sağlık.

Mart 12, 2013 14:08
Kimliksiz yorumlar seçilemez kılınmış durumdadır.

Yazar: sevim sesli

1984 yılı Zonguldak /Ereğli doğumluyum. 2002 yılın da Ereğli Anadolu Lisesinden mezun oldum. 2008 yılında Girne Amerikan Üniversitesi Bilgisayar Mühendisliği bölümü bitirdim. Sektörde yazılım geliştime uzmanı olarak 3 yıl çalıştım. Bu zaman dilimi içerisin de .Net teknolojisi kullanarak web ve windows tabanlı uygulamalar, web servisler , windows servisler geliştirdim. Yine .net teknolojileri ile yazılan entegrasyon projelerinde yazılım geliştirme uzmanı olarak görev aldım. Şuan özel bir banka da Bilgi Güvenliği ve Kalite yönetimi departmanın da çalışıyorum.

Bu Kategori

Hızlı aktarma