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

COBIT ITIL ve ISO27001

SQL Sunucu Güvenlik Denetimi

 

Kişi/kurumlar için en değerli varlık olan Veri’nin işlenip Bilgi’ye dönüşmesi günümüzde fark yaratacak en önemli unsurdur. Bu açıdan bakıldığında, veri/bilgi kişi/kurumlar için hayati derecede değer taşımakta, güvenliğinin sağlanması da en çok dikkat edilmesi gereken konu haline gelmektedir.

 

Veri/Bilgi’nin güvenliğinin sağlanması için gizlilik (confidentiality), erişilebilirlik (availability) ve bütünlük (integrity) kırılımları göz önünde bulundurulmalıdır. Doğru veri/bilgiye gerektiğinde sadece yetkilendirilmiş kişilerin güvenli yöntemlerle erişiyor olması sağlanmalıdır.

 

Bu yazımızda, veri-bilginin saklandığı veritabanı ortamlarından biri olan Microsoft SQL Sunucu üzerindeki güvenlik kontrollerinden aşağıda sıralanmış maddeler halinde bahsedeceğiz:

 

1- MS SQL Server Versiyon Kontrolü;

 

Üretici tarafından yayınlanan service pack ve patchler kontrollü olarak uygulanmalıdır. Sisteme şimdiye kadar hangi patch ‘lerin uygulanıp uygulanmadığını kontrol etmek için aşağıdaki sorgu kullanılmalıdır. Sorgu SQL server sürüm numarasindan patch seviyesine kadar versiyon bilgisi verir.

 

SELECT @@version

 

Script çıktısı ;

 

Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (X64) Jul 9 2008 14:17:44

Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on

Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

 

Yukarıda çıktıda görüldüğü gibi güncel patch makine üzerine geçilmemiş.

 

2 - SQL Server üzerindeki tüm veritabanlarının listesinin alınması ;

 

Sunucu üzerinde çalışan tüm veritabanı instancelarını kontrol etmemiz gerekmektedir.

 

select * from sys.databases

 

Script çıktısı ;

 

image001

 

3- SQL server üzerindeki tüm kullanıcıların Listesi;

 

Database’ de yer alan tüm kullanıcılar incelenir. İşten ayrılmış kullanıcılar ile uygulama hesapları kontrol edilir. (çalışan kullanıcı bilgileri listesinin güncel haline IK biriminden ulaşılır)

 

SELECT * FROM sysusers where islogin = 1

 

Script çıktısı;

 

image002

 

4- DBA Hakkına Sahip Kullanıcıların Listesi ;

 

Kullanıcıların neden bu yetkiye sahip olması gerektiği açıklanır. Önceden kalmış olan veya yanlışlıkla verilmiş olan yetkiler var ise bunlar geri alınmalıdır. Sorgu SQL Server üzerinde tanımlı tüm DBA ‘lerin listesini verir.

  

sp_helprolemember db_owner

 

Script çıktısı ;

 

image003

 

5 – Select dışında yetkisi olan kullanıcı listesi ve yetkileri ;

  

Burada beklenilen database’ de update, delete vs. gibi (DML) kritik yetkilerin sadece yetkili kullanıcılarda olması gerektiğidir. Denetimlerde, bu yetkilerin “Görevler Ayrılığı” ve “En Az Haklar” prensiplerine uygun olduğunu göstermemiz beklenmektedir.

 

 SELECT a.*, b.* ,*

FROM sys.database_principals a

INNER JOIN sys.database_permissions b ON b.grantee_principal_id = a.principal_id

WHERE b.permission_name not like '%SELECT%'

 

Script çıktısı ;

 

image004

 

6– Şifresi boş olan kullanıcıları bulma;

  

SQL Server 2005/2008 de password u boş olan SQL kullanıcılarını aşağıdaki sorgu ile bulabilirsiniz .

  

select name

from sys.sql_logins

where pwdcompare('', password_hash) = 1

 

Özellikle sa kullanıcısı kontrol edilmelidir.

 

 7 - Password Policynin Çekilmesi;

 

SQL server üzerinde kullanıcı password ‘i yaratılırken password policy’nin uygulanıp uygulanmadığı ( Enforce Password Policy) kontrolünü ve expiration policy’nin uygulanıp uygulanmadığını aşağıdaki sorgu ile görüntüleyebiliriz.

 

Enforce Policy: Şifre politikası (lock, örn. 5 dk içinde 7 kez yanlış girerse 20 dk lock kalsın)

Expiration Policy: Şifre politikası (expire, örn. 42 günde bir şifresini değiştirsin)

  

select name ,is_expiration_checked,is_policy_checked ,*

from sys.sql_logins where is_expiration_checked = 0 or is_policy_checked= 0

 

Script çıktısı ;

 

image005

  

Sorgunun çıktısında da görüldüğü üzere is_expiration_checked kolonu “0” gelenler expiration policy uygulanmayan kullanıcıları, is_policy_checked kolonu ”0” gelenler enforce password policy uygulanmamış kullanıcıları ve her iki kolon değeri de “0” gelen kullanıcılar ise her iki politikanın da uygulanmamış olan kullanıcıları listeler.

  

8 - Windows authentication ile SQL Server’a Bağlanan Kullanıcı Listesi;

  

SQL server üzerinde tanımlı olan kullanıcılardan Windows login olarak yaratılmış olan kullanıcılar server ‘ın kurulu olduğu makineye bağlandıkları anda tool (Management Studio vs ) aracılığı ile sql server ‘a şifre sormaksızın login olabiliyorlar demektedir. Bu durum güvenlik açığına neden olduğundan bu kullanıcıların sql server login olarak güncellenmesi daha doğru olacaktır. (Kurum risk yaklaşımına göre, kabul edilebilir. Edilmiyorsa, işletim sistemi kullanıcıları ile SQL’e bağlantıya izin verilmemeli, local SQL authentication kullanıcılar yaratılmalıdır.)

  

Select * from sys.server_principals where type_desc = 'WINDOWS_LOGIN'

 

Script çıktısı ;

 

image006

 

Kendi ortamınız için bu durumu değerlendirip karar vermeniz gerekmektedir.

  

9 – SQL authentication ile SQL Server’a Bağlanan Kullanıcı Listesi

  

SQL login’de kullanıcılar SQL veritabanında yaratılır, işletim sistemi seviyesinde yaratılmaz.

Yukarıdaki maddede WINDOWS_LOGIN olarak tanımlı kullanıcılar listelenmiştik, aşağıdaki sorgu ile de 'SQL_LOGIN' ‘leri listeye biliriz.

  

Select * from sys.server_principals where type_desc = 'SQL_LOGIN'

 

Script çıktısı ;

 

image007

  

10- Backup Operator Hakkına Sahip Kullanıcı Listesi ;

  

Kullanıcıların neden bu yetkiye sahip olması gerektiği açıklanır. Önceden kalmış olan veya yanlışlıkla verilmiş olan yetkiler var ise bunlar geri alınmalıdır. Sorgu SQL Server üzerinde tanımlı tüm db_backupoperator yetkisine sahip kullanıcıların listesini verir.

  

sp_helprolemember db_backupoperator

 

Script çıktısı ;

 

image008

 

Ayrıca, bu rolün hangi yetkilere sahip olduğu kontrol edilmelidir (drop table varsa gerekli mi vb)

 

11- SQL server üzerindeki tüm SYNONYM lerin listesi ;

  

Adında anlaşılacağı gibi tablo üzerinde public synonym oluştursanız tüm veritabanı kullanıcıları bu synonym’ ler üzerinden tabloları okuyabilir, güncelleyebilir vs. duruma gelebilmektedir. Dolayısıyla bu açıdan bakıldığında synonym’ ler veri güvenliği açısından bakıldığında kullanılması pek istenilmeyen nesnelerdir.

Database’ de kullanılan synonym’ leri listelemek için aşağıdaki sorguyu kullanabilirsiniz;

 

select * from sysobjects where xtype = 'SN'

  

12 – Manuel yaratılmış Roller tanımlanmış memberları ve default tanımlı roller;

 

Manuel olarak Sql Server üzerinde yaratılan roller aşağıdaki sorgu ile listelenmektedir.

 

select name , *

from sys.database_principals

where type='R' and principal_id>0 and is_fixed_role=0

 

Script çıktısı ;

 

image009

  

Bu madde ile database’ de yer alan tüm kullanıcılara ve rollere verilmiş olan yetkileri göstermektedir.

  

Kullanıcılara atanmış roller;

  

Guvenlik rolüne atanmış kullanıcıları listelemek için;

 

select dp.name

from sys.database_role_members drm

inner join sys.database_principals dp on drm.member_principal_id =dp.principal_id

where drm.role_principal_id =( select principal_id

from sys.database_principals

where name ='guvenlik')

 

Role ve kullanıcılara atanmış yetkiler incelenmelidir.

SQL Server üzerinde tanımlı manuel ve default olarak tanımlı tüm rolleri listelemek için ;

Sorgulamayı aşağıdaki sorgu ile yapabiliriz.

 

SELECT * FROM sysusers where issqlrole = 1

 

Script çıktısı ;

 

image010

 

 Yukarıdaki çıktıyı incelediğimizde altuid kolonu “1” den farklı olarak gelenler manuel tanımlanmış olan roller , “1” olarak gelenler ise kurulumla beraber olarak gelen rollerdir.

  

13 – SQL Server Linked Server Kontrolü ;

  

Farklı iki veritabanı üzerinden tek bir query penceresinde tabloları birbirine bağlayarak çektiğimiz sorgular için kullandığımız linklerin listesini alabilmek için aşağıdaki sorgu kullanılabilir. Bu linklerin ne amaçla kullanıldığı kayıt altına alınmalı, test ortamlarıyla üretim ortamları arasında bu tür bağlantılara izin verilmemelidir.

  

exec sp_linkedservers

 

Script çıktısı;

 

image011

  

14 – SQL Sunucuda tanımlı Windows İşletim Sistemi Kullanıcı Grupları;

  

exec xp_enumgroups

 

SQL sunucunun işlertim sisteminde tanımlı kullanıcı gruplarının kontrol edilmesi gereklidir. (Örn. Local Administrators grubuna üye kullanıcıların SQL servisi üzerinde yönetici hakkı vardır.)

Tarih : 23 Eylül 2012 Pazar 23:54 Yayınlayan: sevim sesli

Yorumlar

 

Orhan AYGUN

Çok güzel bir paylaşım olmuş, elinize ve emeğinize sağlık.

Eylül 24, 2012 08:38
 

Cagatay ISIKCI

Elinize sağlık

Eylül 24, 2012 09:16
 

Rıza ŞAHAN

Elinize sağlık.

Eylül 24, 2012 10:07
 

Recep YEŞİL

elinize sağlık , açıklayıcı olmuş .

Eylül 25, 2012 22:07
 

Murat CAN

Elinize sağlık çok faydalı bir paylaşım olmuş.

Eylül 26, 2012 17:27
 

Demir Hakan

faydalı bir döküman olmuş thank you

Eylül 28, 2012 09:07
 

Levent Bakış

teşekkür ederim. İhtiyaç duyduğum bir bilgi paylaşımı oldu.

Eylül 28, 2012 15:41
 

guven gurleyen

Elinize Sağlık.

Ekim 1, 2012 18:07
 

Ahmet ALTUNTAS

Elinize sağlık

Ekim 4, 2012 13:54
 

serkan esen

elinize sağlık güzel...

Ekim 5, 2012 19:21
 

Ugur DEMIR

Eline sağlık.

Ekim 8, 2012 11:00
 

Savaş Yaşar

Faydalı paylaşım, bir de Oracle için hazırlansa diye geçiyor insanın içinden...

Ekim 9, 2012 22:58
 

Burhan Karaman

Elinize sağlık,güzel bir derleme olmuş.

Ekim 10, 2012 16:29
 

Selin Sökücü

Elinize sağlık,  cok yararlı bir döküman olmuş.

Ocak 24, 2013 09:41
 

Salim AKÖZ

güzel bir çalışma olmuş teşekkürler.

Mart 26, 2015 14:42
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