- 30 Ocak 2006
- 5,057
- 1
Veritabanı dosyaları, Sql Server çalışırken kilitlenir ve mdf-ldf uzantılı dosyaları normal şartlarda kopyalamayız. Kopyalayabilmek için Sql Server hizmetinin durdurulması gerekmektedir. Fakat bu dosyaların Sql Server çalışırken kopyalanması Hobocopy gibi programlarla mümkündür. Veritabanı dosyalarınızı ele geçiren bir saldırgan bu dosyaları farklı bir sunucuda akitf edip, istediği verilere ulaşabilir.
Yukarıdaki durumu yaşamamak için veritabanı dosyalarını şifrelenmesi, bu dosyaların farklı Sql Serverlar üzerinde açılmasını engelleyecektir. Çalınan veritabanı dosyalarını açmak için bu şifrenin decrypt yani çözülmesi gerekmektedir. Bu şifreleme işlemine Transparent Database Encryption denmektedir. Bu özellik Enterprise, Datacenter ve Developer sürümlerinde geçerlidir.
Veritabanı dosyaları nasıl şifrelenir buna bakalım;
İlk olarak server encryption master key ana anahtar oluşturmamız gerekmektedir. Yeni bir sorgu ekranı açarak master keyi aşağıdaki gibi oluşturalım.
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Guclu_Sifre';
Bu şifrelemenin hemen yedeklenmesi gerekmektedir. Eğer master veritabanınızı kaybederseniz, şifrelenmiş veritabanınızın içeriğini hiçbir şekilde göremezsiniz. Yedek alınan klasörü paylaşıma açın, ve klasör yolunu doğru yazdığınızda emin olun, aksi takdirde hata verecektir, yedek almayacaktır. Yedek almak için aşağıdaki kodu yazıyoruz.
BACKUP MASTER KEY TO FILE = '\\YAVUZSONY\Yedek\Yavuzsony_master.key' ENCRYPTION BY
PASSWORD = 'Guclu_bir_sifre_daha';
Eğer bir password policy kullanıyorsanız, örnek olarak en az 8 karater, en az bir büyük harf, en az bir özel karakter gibi, şifrenizi bu policye göre vermeniz gerekmektedir.
Şimdi sıra server sertifikası üretmesine geldi, bu sertifika sunucuya özel bir sertifikadır. Veritabanı dosyalarınızın şifrelenmesinde kullanılacaktır.
CREATE CERTIFICATE SqlSertifikasi WITH SUBJECT = 'Sql Sertifika';
Oluşturduğumuz sertifikayı yedekleyelim, hem de dosya olarak elimizde bulunsun.
BACKUP CERTIFICATE SqlSertifikasi TO FILE = '\\YAVUZSONY\Yedek\SQL_SqlSertifikasi.cer'
WITH PRIVATE KEY ( FILE = '\\YAVUZSONY\Yedek\SQL_SqlSertifikasi.pvk',
ENCRYPTION BY PASSWORD = 'Guclu_Sifre_Guclu_Sql' );
Oluştruduğumuz server sertifikası ile, veritabanı üzerinde encryption key oluştuyoruz.
USE SATIS;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE SqlSertifikasi;
Son olarak veritabanı şifrelemesini aktif hale getiriyoruz.
ALTER DATABASE SATIS
SET ENCRYPTION ON
Oluşturduğumuz key ve sertifika dosyalarına bakalım, bu dosyaların yedeğini almayı unutmayın.
Güvenlik sertifikası, private key ve master key olarak 3 dosyayı veritabanı şifrelemesinde kullandık.
Transparent Database Encryption, veritabanı mdf ve ldf dosyalarınızı görünmez bir şekilde şifreledi. Bu dosyaların şifrelendiği bilgisi Sql Server üzerinde veya dosyaların özellik sayfalarında gözükmez.
Şifrelenmiş bir veritabanını Sql Servera geri eklemeniz için, ilk önce güvenlik sertifikasını ve encryption keyi geri yüklemeniz gerekmektedir. Geri yüklerken şifreyi yazıyoruz.
USE master;
CREATE CERTIFICATE SqlSertifikasi FROM FILE = '\\YAVUZSONY\Yedek\SQL_SqlSertifikasi.cer'
WITH PRIVATE KEY ( FILE = '\\YAVUZSONY\Yedek\SQL_SqlSertifikasi.pvk',
DECRYPTION BY PASSWORD = 'Guclu_Sifre_Guclu_Sql')
Msdn: http://msdn.microsoft.com/en-us/library/bb934049.aspx
Xp_CmdShell Özelliklerinin Kısıtlanması:
Sql Server 2005te güvenlik sorunları teşkil eden bazı özellikler, yeni Sql Server versiyonlarında, kurulumda varsayılan olarak devre dışı bırakılıp getirilmiştir. Bunlardan en önemlisi xp_cmdshell komutudur. Bu özelliklerin aktif etmek için Sql Server Management Studio da instance adına sağ tıklayıp Facets bölümüne gelelim.
Facet alanından Surface Area Configurationı seçiyoruz.
AdHocRemoteQueriesEnabled, OleAutomationEnabled ve XPCmdShellEnabled alanlarının False değerinde olması gerekiyor, eğer değilse bu alanları False değerine getiriyoruz.
Yukarıdaki durumu yaşamamak için veritabanı dosyalarını şifrelenmesi, bu dosyaların farklı Sql Serverlar üzerinde açılmasını engelleyecektir. Çalınan veritabanı dosyalarını açmak için bu şifrenin decrypt yani çözülmesi gerekmektedir. Bu şifreleme işlemine Transparent Database Encryption denmektedir. Bu özellik Enterprise, Datacenter ve Developer sürümlerinde geçerlidir.
Veritabanı dosyaları nasıl şifrelenir buna bakalım;
İlk olarak server encryption master key ana anahtar oluşturmamız gerekmektedir. Yeni bir sorgu ekranı açarak master keyi aşağıdaki gibi oluşturalım.
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Guclu_Sifre';
Bu şifrelemenin hemen yedeklenmesi gerekmektedir. Eğer master veritabanınızı kaybederseniz, şifrelenmiş veritabanınızın içeriğini hiçbir şekilde göremezsiniz. Yedek alınan klasörü paylaşıma açın, ve klasör yolunu doğru yazdığınızda emin olun, aksi takdirde hata verecektir, yedek almayacaktır. Yedek almak için aşağıdaki kodu yazıyoruz.
BACKUP MASTER KEY TO FILE = '\\YAVUZSONY\Yedek\Yavuzsony_master.key' ENCRYPTION BY
PASSWORD = 'Guclu_bir_sifre_daha';
Eğer bir password policy kullanıyorsanız, örnek olarak en az 8 karater, en az bir büyük harf, en az bir özel karakter gibi, şifrenizi bu policye göre vermeniz gerekmektedir.
Şimdi sıra server sertifikası üretmesine geldi, bu sertifika sunucuya özel bir sertifikadır. Veritabanı dosyalarınızın şifrelenmesinde kullanılacaktır.
CREATE CERTIFICATE SqlSertifikasi WITH SUBJECT = 'Sql Sertifika';
Oluşturduğumuz sertifikayı yedekleyelim, hem de dosya olarak elimizde bulunsun.
BACKUP CERTIFICATE SqlSertifikasi TO FILE = '\\YAVUZSONY\Yedek\SQL_SqlSertifikasi.cer'
WITH PRIVATE KEY ( FILE = '\\YAVUZSONY\Yedek\SQL_SqlSertifikasi.pvk',
ENCRYPTION BY PASSWORD = 'Guclu_Sifre_Guclu_Sql' );
Oluştruduğumuz server sertifikası ile, veritabanı üzerinde encryption key oluştuyoruz.
USE SATIS;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE SqlSertifikasi;
Son olarak veritabanı şifrelemesini aktif hale getiriyoruz.
ALTER DATABASE SATIS
SET ENCRYPTION ON
Oluşturduğumuz key ve sertifika dosyalarına bakalım, bu dosyaların yedeğini almayı unutmayın.
![clip_image038_thumb.png](http://www.cozumpark.com/mklresim/3f9b25a5cb61_10C5A/clip_image038_thumb.png)
Güvenlik sertifikası, private key ve master key olarak 3 dosyayı veritabanı şifrelemesinde kullandık.
Transparent Database Encryption, veritabanı mdf ve ldf dosyalarınızı görünmez bir şekilde şifreledi. Bu dosyaların şifrelendiği bilgisi Sql Server üzerinde veya dosyaların özellik sayfalarında gözükmez.
Şifrelenmiş bir veritabanını Sql Servera geri eklemeniz için, ilk önce güvenlik sertifikasını ve encryption keyi geri yüklemeniz gerekmektedir. Geri yüklerken şifreyi yazıyoruz.
USE master;
CREATE CERTIFICATE SqlSertifikasi FROM FILE = '\\YAVUZSONY\Yedek\SQL_SqlSertifikasi.cer'
WITH PRIVATE KEY ( FILE = '\\YAVUZSONY\Yedek\SQL_SqlSertifikasi.pvk',
DECRYPTION BY PASSWORD = 'Guclu_Sifre_Guclu_Sql')
Msdn: http://msdn.microsoft.com/en-us/library/bb934049.aspx
Xp_CmdShell Özelliklerinin Kısıtlanması:
Sql Server 2005te güvenlik sorunları teşkil eden bazı özellikler, yeni Sql Server versiyonlarında, kurulumda varsayılan olarak devre dışı bırakılıp getirilmiştir. Bunlardan en önemlisi xp_cmdshell komutudur. Bu özelliklerin aktif etmek için Sql Server Management Studio da instance adına sağ tıklayıp Facets bölümüne gelelim.
![clip_image039_thumb.png](http://www.cozumpark.com/mklresim/3f9b25a5cb61_10C5A/clip_image039_thumb.png)
Facet alanından Surface Area Configurationı seçiyoruz.
![clip_image041_thumb.jpg](http://www.cozumpark.com/mklresim/3f9b25a5cb61_10C5A/clip_image041_thumb.jpg)
AdHocRemoteQueriesEnabled, OleAutomationEnabled ve XPCmdShellEnabled alanlarının False değerinde olması gerekiyor, eğer değilse bu alanları False değerine getiriyoruz.
![clip_image042_thumb.png](http://www.cozumpark.com/mklresim/3f9b25a5cb61_10C5A/clip_image042_thumb.png)