SQL Server Güvenlik İpuçları

10 Ekim 2017 Salı

SQL Server saldırı önlemleri için aşağıdaki önlemleri alabilirsiniz:

- SQL Server'ın default portu 1433’ü kullanır. Bunu tüm saldırganlar bilir. Farklı bir port kullanın.

-SQL Server kurulumuyla birlikte "sa" hesabı varsayılan olarak gelir. Bunu da aynı şekilde tüm saldırganlar bilir. Bu hesabın yerine başka kullanabileceğiniz "sysadmin" rolü üyesi hesaplar olduğundan emin olduktan sonra "sa" hesabını "Disable" duruma getirin veya "sa" hesabının adını değiştirin.

-Guest hesabını kullanmayın. Public kullanıcısına yetki vermeyin.

-Kullanıcılarınızın login'ler için basit veya boş şifreler belirleyebilmesini engelleyin. 

-Mümkünolduğunca SQL Authentication yerine Windows Authentication'ı tercih edin.

-Programcılarınız "SQL Injection" konusunda bilgili olması gerekiyor. Uygulama arayüzlerinde kullanılan metin kutuları sadece almaları gerektiği türden ve uzunlukta değerler almalı. Örneğin sayısal bir değer kutusuna metin girilememeli veya TC Kimlik No alanına 11'den fazla karakter girilememeli.

-Uygulamalarınız sadece ihtiyacı olan uygulama kullanıcılarıyla veritabanına erişmesi gerekir. Böylece uygulamanızdaki bir açık vasıtasıyla veritabanına ulaşılırsa, sadece uygulamanın ulaşabileceği veriye ulaşılabilir olsun, daha fazlası yapılamasın.

-Kod yazarken güvenlik (ve performans) açısından mümkün olduğunca dinamik SQL kullanmayın. Kullanacağınız zaman da dinamik SQL metinlerini güvenlik denetimine tabi tutmadan çalıştırmayın.  Örneğin "Doğum Yılı" veya benzer bir veri giriş kutusuna kesme işareti, "DROP, ALTER, GRANT, EXECUTE" gibi komutların girilmemesi gerekiyor.

-Gerek prod ortamınız, gerekse dev veya test ortamınızdaki hassas verilerinizi maskeleyin. Sadece yetkili kişiler, görmeleri gereken verilerin, görmeleri gereken kısımlarını görmeleri gerekir.

-Veritabanı yedeklerinizi de canlı ortamınızı koruduğunuz gibi koruyun. Mümkünse yedeklerinizi şifreleyin (Backup Encryption SQL Server 2014 ile geldi). Yedeklere kimlerin erişebildiği net ve sınırlı olmalı. Ayrıca mümkünse kimlerin eriştiğinin kaydı tutulmalı ve raporlanmalı.

-SQL Server servis hesaplarınız olarak Local System gibi geniş yetkilere sahip hesapları kullanmayın. Eğer bir Domain hesabı kullanacaksanız bu normal bir "Domain User" hesabı olabilir.

-CLR veya xp_cmdshell gibi aktif olarak kullanılmayacak hiçbir özelliği etkinleştirmeyin. Kullanmayacağınız hiçbir SQL Server servisini veya uygulamayı veritabanı sunucunuza kurmayın.

-Daha ileri seviye güvenlik tedbirleri için örneğin diskteki veriyi ve yedekleri korumak için Transparent Data Encryption özelliğini kullanmayı düşünebilirsiniz.

-Veriyi hareket halindeyken yani uygulama ve veritabanı arasında gidip gelirken ve veri veritabanında dururken şifreli olsun istiyorsanız SQL Server 2016 ile birlikte gelen Always Encrypted özelliğini kullanmayı düşünebilirsiniz.


Share/Bookmark

0 comments :