Etiket Bulutu

Benchmark Convert_IMplicit Database High Availability Database Mirroring datawarehouse dimension table dmv Dynamic Data Masking Execution Execution Plans fact table Failover Cluster Node ekleme Failover Clustering FileStream generate script High Availability Implicit Instant File Initialization index Kinect Linux Live Query Statistics Log Shipping Mirroring object explorer object explorer details ODBC Driver pass performance performance tuning Plan Handle Planü Power View reporting services rol Row Level Security script sql serer 2016 sql server SQL Server 2008 SQL Server 2008 Log Shipping SQL Server 2012 SQL Server 2012 installation SQL Server 2012 Kurulumu SQL Server Backup SQL Server da Backup planı SQL Server da Maintenance Plans oluşturma SQL Server database mirroring SQL Server Disaster Recovery sql server dynamic management views SQL Server Failover Cluster SQL Server High Availability SQL Server Log Shipping SQL Server Maintenace Plans sql server performans SQLDIAG SQLDIAG Troubleshooting T24 Temenos truncate table t-sql unique index performance 1. Dünya savaşı istatistikleri 1456 451 ACID advanced analytics Advanced Data Analytics Affinity algı Alter index Alter table ALTER TABLE .. ALTER COLUMN Altın Oran Always On ALWAYSON AlwaysOnDemoTool amazon web services kinesis AMR analiz analysis service Ankara Antivirus apache kafka Arduino Article Assembly asymmetric audit Authentication Auto Growth Availability Group azure Azure Backup azure event hub partition azure event hubs azure event hubs servisi azure event hubs veri edinme Azure File Share Azure Fiyatlandırma Azure HDInsight Azure Hizmet Modelleri Azure ML Azure New Portal Azure Pricing Azure Queue azure sql database configuration azure sql database kullanımı azure sql database stream veriyi tutma azure sql database table partitioning Azure Storage azure stream analytics azure stream analytics dashboard azure stream analytics ölçeklendirilmesi azure stream analytics servisi Azure Table BA Backup backup encyrption backupset Bakım BASE bellek Best Practice BI Semantic Model Big Data Big User blocking blocking disable trigger blocking enable trigger Buffer Cache buffer pool Buffer Pool Extension bulk logged Buluta Veri Depolama Buluttaki Disk Business Analytics Conference business intelligence Büyük Veri Case Central Management Server certificate changed data capture Cloud Computing Cloud DR CLR Cluster clustered columnstore index Clustered Index Code Snippets Cold Purging collation column store column-level columnstore ColumnStore Indexes Compress ComputerNamePhysicalNetBIOS Concurrency Conditions Contained Database Contained Databases convert CONVERT_IMPLICIT Corruption Credentials cube DAC Dashboard Tasarımı data cleansing Data Compression Data Consistency Model data encryption data matching data mining Data Page data profiling data quality Data Services Data Warehouse Design Database database list Database Management Sistem database master key Database Mirroring Database Snapshot database trigger database-level Data-Ink Ratio datasets datasource DataZen date date dimension db_owner DBA DBCC dbcc dropcleanbuffers dbcc freeproccache DBMS dbo user DDL deadlock debugging DecryptByKey DecryptByPassPhrase deleted bitmap delta store Denali Denali SSAS deny database list deşifre detail index developer DIFFERENTIAL BACKUP DirectQuery Dirty Read Disaster Recovery Distribution Yapılandırma Distributor Distributor Agent dm_server_services DMF DMO DMV document db dosya bazlı şifreleme dqs dr Dynamic Management Function Dynamic Management Object Dynamic Management View ecrypt Effected Report Design Techniques Eğitim EncryptByKey EncryptByPassPhrase encryption endpoint Environment Variable error Error 5030 Error Log Estetik Raporlama Estimated Rows Eş Zamanlılkk Etkili Rapor Tasarlama Teknikleri Etkinlik ETL event Event Viewer except;intersect;sql execution Execution Plan export formats extended events Extended Stored Procedure Facets Failover Failover Cluster fast n execution plan FETCH NEXT FILELISTONLY FILLFACTOR File Table file-level FileStream Filter Pack Filtered Index First_Value Flat File fn_repl_hash_binary Focal Point foreignkey FORMAT Forwarded Record forwarded_record_count ftp task FULL BACKUP Full Recovery Full-Text Search functions Gartner Geocluster Gerçek Zamanlı Dashboard gestalt Golden Ratio görsel duyu group by Güvenlik ha Hadoop hafıza Hash HASHBYTES HEADERONLY headers footers Heap Hekaton hicri High Availability hijr Hiyerarşi Hybrid Cloud IaaS Index Index Scan In-Memory InMemory DW In-Memory DW InMemory OLTP In-Memory OLTP Internet of People Internet of Things IO IOT IoT nedir Isolation Level indeks index inmemory in-memory oltp internet of things isolation level istatistik istatistikler İş zekası İzolasyon Seviyesi Job json json support knowledge base kolon-satır bazlı kurulum küp Lag Lansman latch Lead linked server lock locking locking hints Log Backup Log Reader Agent Log Shipping login Lost-Update LQS Machine Learning Maintenance Management Studio matrix Max Text Replication Size mdx memory Memory Optimization Advisor Memory Optimized Table Memory Optimized Tables merge Merge Agent merge kullanımı Merge Publication Merge Replication merge type 1 slowly changing dimension merge type 1 slowly changing dimension örneği merge type 1 vs type 2 scd merge type 2 slowly changing dimension merge type 2 slowly changing dimension örneği merge type 3 slowly changing dimension merge type 4 slowly changing dimension message Microsoft Advanced Data Analytics Çözümleri microsoft azure Microsoft Bulut Microsoft Sanal Akademi Microsoft SQL Server Microsoft SQL Server 2014 Yenilikleri Microsoft SQL Server 2016 Mirror mirroring missing index Monitoring move Msdb multi_user multiversion concurrency control MVP MVP Roadshow MySnippet Named Pipes Natively Store Procedures Natively Stored Procedures Nesnelerin İnterneti Network Binding Order NoEngine Approaches nonclustered columnstore index Non-Repetable Read NoSQL NoSQL Approaches NoSQL Dünyası object explorer Odak Noktası ODBC Office 365 Offline OFFSET olap OLAP Backup OLE DB OLTP Online Index order attributes Otomatik Büyüme OVER PaaS PAD_INDEX page out page properties PAGE RESTORE PAGEIOLATCH paging parameters partition partitioning PASS PASS Summit PASS Summit 2014 Performance Performance Tuning performans performans tuning Phantom Read pivot Policies Policy Based Management Filtreleme Policy Management Power BI Power BI Dashboard Power BI Rest API power bi power view PowerBI PowerBI for Office 365 powerbi PowerMap PowerPivot PowerQuery powershell powershell ile sql yönetimi PowerView PowerView raporlarının web sayfalarına gömülmesi precon Primary Key primarykey Project Deployment Model Project Variable Protokol Proxy Proxy Account Publisher Purging on Independent Tables QL Server 2014 Yenilikleri Que Reader Agent Query Plan query store R Range Raporlama Raporlama Projeleri için Strateji Belirleme Raporlama Projelerine Hazırlık Read Committed Read Uncommitted RealTime Dashboard Rebuild RECONFIGURE RECONFIGURE WITH OVERRIDE Recovery model Relational Engine relationships Rename SSRS Database Repeatable Read Replication Replication Monitoring replikasyon report manager web site report parts reporting service reporting services reporting servis Resource Governor RESTORE Restore Database Restore Generate Restore Generate Script Restore transaction log rollback rs Rule of Thirds sa user SaaS sayfalama scd 3 demo scd karşılaştırma scd type 4 demo Scheduling Schema Comparison script Security segment elimination select into Self-Service BI Semantic Search Serializable Server Core SERVERPROPERTY Service services shared data sources shared datasets Shared Memory sharepoint Sharepoint 2010 ShowPlan Shrink simple recovery sing_user sliding window Slowly Changing Dimension snapshot Snapshot Agent Snapshot Publication Snapshot Replication Snippet snowflake sorting sp_configure sp_describe_first_result_set sp_server_diagnostics sp_spaceused sql SQL Agent Job SQL Azure sql bilgi yarışması SQL CLR SQL DIAG SQL DIAG Performans verisi toplama SQL endpoint SQL Login SQL Onculeri SQL Öncüleri sql script sql server SQL Server 2005 SQL Server 2008 SQL Server 2011 CTP3 SQL Server 2011 Denali SQL Server 2012 SQL Server 2012 CTP3 SQL Server 2012 RC SQL Server 2012 RC0 SQL Server 2012 ShowPlan Enhancements SQL Server 2012 T-SQL Enhancements SQL Server 2014 Sql Server 2014 Cardinality Estimator SQL Server 2014 Yenilikleri sql server 2016 SQL Server 2016 New Features SQL Server 2016 Yenilikleri sql server agent sql server assembly ekleme SQL Server Authentication sql server cast ve convert sql server clr integration sql server clr kullanımı sql server clr örnek sql server cluster SQL Server Code Name Denali SQL Server da Kullanıcı Yaratma SQL Server Database Project sql server dmv ve dmf sql server execution plan temizleme SQL Server Express Backup sql server fast n option örneği sql server fast n seçeneği SQL Server login sql server management stdio sql server merge into örnek sql server merge komutu sql server merge performnas sql server merge type 1 scd sql server merge type 2 scd sql server merge type 3 scd SQL Server Mobile Report Publisher SQL Server Network Interface SQL Server Onculeri SQL Server Öncüleri SQL Server Öncüleri Ankara SQL Server Performance sql server performans SQL Server Profiler SQL server recovery model SQL Server Reporting Services SQL Server Restore Generate Script SQL Server sa SQL Server Security SQL Server SQL DIAG sql server tarih dönüşüm işlemi sql server tarihsel veriler ile çalışma SQL Server User SQL Server yetki SQL Server yetkilendirme sql servera .net kodu ekleme SQL Serverda yetkilendirme nasıl SQL Serverda yetkilendirme nasıl yapılır sql to oracle linked server sql türkiye SQL User With Password sql yarışma SQLCMD sql'den oracle'a linked server SQLDIAG SQLDIAG Report SQLOS sqlsaturay SQLSaturday SQLSaturday #182 SQLSaturday #359 sqlsaturday #451 sqlserveronculeri ssas SSAS 2012 SSIS SSIS 2012 ssis SSMS SSMS Project SSMS Solution ssrs Stanby Database star schema STOPAT STOPBEFOREMARK STORAGE Storage Engine stored procedure stream analytics job subreports Subscriber Subscription subscriptions symmetric SYS sys.dm_db_index_physical_stats sys.dm_db_index_usage_stats sys.dm_db_missing_index_columns sys.dm_db_missing_index_details sys.dm_db_missing_index_group_stats sys.dm_db_missing_index_groups sys.server_principals sysadmin System Databases System View şifre şifreleme table table difference TableHasClustIndex TableHasIdentity TableHasPrimaryKey Tablet PC Tabular Mode Tabular Model TCP/IP TDE Tempdb time series Transaction Transactional Publication Transactional Replication Transparent Data Encryption trigger Troubleshooting TRY_CONVERT TRY_PARSE tsql t-sql T-SQL 2012 tsql mistakes Undocument union unionall Updatable ColumnStore İndex upgrade Veri ambarı veri edinme seçenekleri Veri Güvenliği Veri Hizmetleri Veri madenciliği Veri Mürekkep Oranı Veri Tabanı Yönetim Sistemleri Veri Tipi Veri Tutarlılık Modelleri Veri Yönetimi Evrimi verinin evrimi Veritabanı oluşturmak VERİTABANI YEDEKLEME STRATEJİLERİ veritabanı yedeklerinin şifrelenmesi Veritabanı Yöneticisi Veritabanı Yönetimi VeritPaq view any database Visual Studio VTYS web services Webcast Windows 7 Windows 8 Windows Authentication Windows Azure Windows Failover Clustering wmi WRITELOG xevents xp_sqlagent_enum_jobs YEDEKLEME STRATEJİLERİ Yedekli Çalışma Yetkilendirme Yiğit Aktan ysfkhvc yusuf kahveci Yüksek Erişilebilirlik Yüksek Süreklilik zip

SQL Server Güvenlik Kavramı Bölüm - 1

Ekleyen: Yavuz Filizlibay Mayasoft Dba Tarih:03.02.2015 Okunma Sayısı:4313


Sql Server Güvenlik Kavramı Bölüm - 1

Sql Server güvenlik konusu son zamanlardaki hızla artan hacking olaylarından sonra iyice önem kazanmıştır. Sql Server Windows işletim sistemleri üzerinde bir servis olarak çalışmaktadır. Kullanıcılar yetkileri ve onlara atanmış olan haklar çerçevesinde SQL Server üzerinde sunulan veritabanı ve diğer yönetim başlıklarında değişiklik yapabilirler. Bu sebepten ötürü SQL Server güvenlik konusu ele alındığında sadece sunucu komponentlerinin güncel olması yeterli olmaz buna ek olarak kullanıcı hareketlerinin denetlenmesi ve yeterli miktarda saklanması da önemlidir. Bu başlık altında tabi ki SQL Server’ın tüm hizmetleri sunmak üzere kurulu olduğu Windows sunucularına ait alt katman güvenliğinin de sağlanmış olması gerekir.
İşletmelerde genellikle, Sql Server ile ilgili tüm konular yazılım bölümüne veya yazılımcıya atanmıştır. Bölümler arası çekişmeler veya senin görevin / benim görevim, sen yaptın / ben yaptım gibi anlaşmazlıklardan dolayı Sql Server’da ortaya çıkan sorunlar sahipsiz kalmakta, sistem bilgisi olmayan yazılımcıların bildiği kadar tedbirler alınmaktadır. Sql Server yazılımı bağımsız bir platformdur, herhangi bir yazılım dilinde yazılan bir program Sql Server’a veri aktarabilir ve okuyabilir. Bu sebeple yazılım ile veriyi birbirinden güvenlik platform tasarımı bakışı açısından ayırmak gerekir.
Bir yazılımın silinmesi/bozulması mı yoksa tüm veritabanınızın silinmesi mi işinizi aksatacaktır? Kullandığınız bir paket programı, satın aldığınız yazılım firmasından tekrar isteyip yükleyebilirsiniz. Kendi geliştirdiğiniz bir yazılımın kaynak kodları sizde olduğu için tekrardan derleyip programı devreye alabilirsiniz. Fakat veritabanınızdaki veriler ve yedekler çalındığı / hacklendiği zaman bunları geri getiremezsiniz. Sistem ve veritabanı yedekleri her ne kadar bu tip durumlarda faydalı olsa da, bir saldırganın uzun süreli sunucunuza erişim sağladığı ve yedeklenme işlemine verileni de bozduğu senaryoları da düşünün. Hiçbir saldırgan sizin yazdığınız bir programın peşinde değildir, bu programın kaydettiği verilerin peşindedir, ancak bu şekilde zarar verebilir ve kendisine kar sağlayabilir.
Bu makalede, Sql Server için alınabilecek güvenlik tedbirlerini, Sql Server’ın kurulu olduğu sunucu ve sistemlerde ne gibi önlemler alınmalı gibi konuları anlatmaya çalışacağım. Güvenlik konusu, sistem veya network konuları gibi kesin kuralları içermez, güvenlik ürünlerden çok süreçlere bağımlı bir olgudur. Güvenlik için birikim, bilgi ve tecrübe çok önemlidir. Bu makalede veya başka makale ve kitaplarda anlatılan Sql Server güvenliği konuları ile, yüzde 100 güvenli olacağınızın garantisi verilmez. Güvenlik, içerisinde birden çok rol içeren, ana unsurların düzgün ve kararlı çalışmasını sağlayan bir süreçtir. Bu süreç ne kadar düzgün yönetilir ise, o kadar yeterli seviyede güvenli sistemler olacaktır. Bilgi teknolojileri dünyasında güvenlik bir teknoloji değildir, teknolojilerin ortaya çıkardığı zafiyetleri kapsayan genel bir konudur.
İlk olarak Sunucu ve Network güvenliğinde bahsedelim.


Sql Server Servis Hesabının Seçilmesi:

Sql Server bir Windows servisi olarak çalışır. Her Windows servisini çalıştıran bir kullanıcı hesabı vardır. Sql Server içinde bu hesabı doğru seçmek güvenlik için önemlidir. Sql Server kurulumunda, Sql Server’ı çalıştıracak hesabı değiştirmediyseniz, Sql Server Configuration Manager’dan bu değişikliği yapabilirsiniz.
Sql Server’ı çalıştıran hesabı görüntülemek için Sql Server – Configuration Tools – SQL Server Configuration Manager’ı açıyoruz

SSS-1
Sql Server Services – Sql Server (instance adınız) – Properties diyerek özellikler sayfasını açıyoruz.

SSS-2

Logon ekranında Sql Server’ı çalıştıran hesabımızı görüyoruz. Nt Service olarak gözüküyor.

SSS-3

Sql Server, kurulu olduğu Windows Server üzerinde yönetici haklarına sahip olmayı gerektirmez. Sadece veri tabanlarının, yedeklerin ve logların tutulduğu dizinlerde okuma-yazma yetkisini arar.
Built-in account: Built-in hesapların şifreleri olmaz. İşletim sistemi tarafından yönetilen hesaplardır. Local System hesabı, yönetici haklarına sahip yerel bir hesaptır. Active directory üzerinden bu hesap ile network kaynalarına erişelebilinmektedir.
Network service, bu hesabın lokal makinada yetkileri biraz daha kısıtlıdır. Local system hesabı gibi network kaynaklarına erişebilmektedir.
Local system ve Network Service dışında, bir domain hesabı da seçebilirsiniz. Fakat bu hesaba password policy uygulanmaması gerekmektedir. Şifrenin süresi dolduğunda hesap bloklanır ve Sql Server hizmeti çalışmaz hale gelir. Bir Built-in hesabı ile Sql Server’ı çalıştırmak yerine, domain hesabı seçmek daha iyidir. Domain bir hesaba bu yetki verildikten sonra, Local Sercurity Policy üzeriden de Log on as a service yetkisinin verilmesi gerekmektedir. Built-in hesaplar servisler ile paylaşılan hesaplardır, bu sebeple saldırganlar tarafından uzak komut istem ile Sql Server prosedürleri veya diğer servislerine müdahale edebilirler.

Technet: http://technet.microsoft.com/en-us/library/cc756898(v=ws.10).aspx


Sql Servislerinin Güvenlik ID’lerinin Kontrol Edilmesi ve Yönetilmesi:


Sql Server’ı çalıştıran servis, güvenlik olarak bir Windows hesabına bağlıdır. Bu Windows hesabına bağlı birden çok servis vardır. Bu hesapların diğer kaynaklara (dosyalar, klasörler v.b.) erişiminde çakışma çıkmaması için, Windows her bir service Security Identifier dediği Security ID numarası atar. Bu SID dediğimiz ID’ler Sql Server kurulumunda oluşturulur.
Sql Server servisinize SID’in atanıp atanmadığını öğrenmek için, komut satırını açın. Aşağıdaki kodu komut satırınıza yazın.
“sc qsidtype mssqlserver”
Not: Buradaki mssqlserver, sizin sisteminizdeki Sql Server’ın instance adıdır.


Technet: http://blogs.technet.com/b/askperf/archive/2008/02/03/ws2008-windows-service-hardening.aspx



SSS-4

En üst satırda Success olarak komut çalıştı. Service_name kısmında Sql Server’ın çalıştığı servis adı geldi. Service_SID_type kısmında ise Unrestricted olarak SID tipimizin olduğun gösteriyor. Unrestricted, servisimizin bir SID değerini aldığını belirtir. SID_type None olsaydı, Sql Servisinin SID değeri olmadığını, SID_type – Restricted olursa, servisin bir SID değeri olduğunu fakat sınırlı bir hakka sahip olduğunu belirtecekti.
Eğer SID değeri None olarak çıkar ise, yukarıdaki komutun yanına Unrestricted yazarak, komutu tekrar çalıştırın. Böylelikle Sql Server servisinize bir Security ID değeri atamış olursunuz.
SID değer olan bir Sql Server, çalıştığı makine üzerinde ekstra yetkilere sahip olur, yedekleri diske yazma, import etme gibi. Sql server’da genel olarak yapılan export ve import işlerinde başarılsızlık olur ise SID değerini kontrol etmekte fayda vardır.
SID değeri None olarak kalabilir, fakat Restricted olarak kalırsa Sql Server’ın erişmek istediği kaynakları bloklar ve Sql Server hizmeti başlamaz.
Sql Servislerinde Virtual Service Hesabı Kullanılması:
Virtual service hesabı ilk olarak Server 2008 R2 ile duyuruldu. Şifre gerektirmeyen yerel bir hesaptır. Network Service hesabı gibi çalışır. Network servisinden farklı en iyi özelliği her service için farklı bir hesap ile çalışmasıdır. Virtual bir servisi oluşturamaz ve silemezsiniz.
Şekil SSS-3 te olduğu gibi, Log on ekranında “This Account”u seçip NT Service\(instace adınız) yazıyorsunuz ve şfireyi boş bırakarak, Sql Server service’ini yeniden başlatarak bu hesap ile çalıştırmaya başlayabilirsiniz. Şifre alanları boş olarak geçilmektedir.

Technet: http://technet.microsoft.com/en-us/library/dd548356(v=ws.10).aspx


Sql Bağlantılarının SSL ile Şifrelenmesi:


Sql Server bilindiği üzere server to client – client to server bir yapıdadır. Doğal olarak network üzerinden haberleşerek veri girişleri ve veri sorgulamaları yapılır. Sql server ile clientlar arasındaki haberleşme network üzerinde, sniffer dediğimiz araçlar ile izlenmesi gayet kolaydır. Bir saldırganın bir sistemdeki Sql Serverları ve bu servera bağlı clientları tespit etmesi oldukça kolaydır.
Microsoft Network Analyzer’ın yerini alan Message Analyzer ile Sql Server’ın ağ trafiğini izlemeye başlayalım. İlk önce aşağıdaki linkten programı indiriyoruz. (İsterseniz Wireshark programı ile de aynı işlemleri yapabilirsiniz)

https://www.microsoft.com/en-us/download/details.aspx?id=44226

Basit bir kurulumu var. Kurulumdan sonra Quick Trace kısmında ağ bağlantımıza tıklayarak network trace’i başlatıyoruz.


SSS-5

Trace başladıktan sonra ikinci makinamdan Adventerworks2012  veri tabanındaki PurchaseOrderDetail tablosuna select sorgusu atıyorum.


SSS-6


Bu sorgudan sonra Message Analyzer’a gelip bakalım.



SSS-7

Çok rahatlıkla hangi makinadan sorgu geliyor ve hangi Sql Server’a gidiyor tespit edebildik. Eğer networkünüzdeki Sql Server’ın bu şekilde izlenip tespit edilmesini istemiyorsanız, bir SSL sertifikası alıp bunun önüne geçebilirsiniz. SSL Sertifikasını Verisign, Digicert veya Comodo gidi firmalardan temin edebilirsiniz.
Alınan bu sertifikayı Mmc konsolu açarak, Snap add ins den, yüklemelisiniz. Sertifikayı Sql Server servisini çalıştıran kullanıcıya yüklemeniz gerektedir.
Sertifikayı yükledikten sonra, Sql Server Conf. Manager – Sql Server Network Configuration – Protocols for Sql Server’ın properties ekranını açıyoruz.
Flags sekmesinde, Force Encryption’a yes diyoruz. Certificate kısmında da yüklediğiniz sertifikayı seçip Ok diyoruz.



SSS-8


Sql Server Management Studio’ya bağlanırkende encrypt bağlantı sağlanabilir. SSMS açıldıktan sonra Connect to Server ekranında Options ile özellikleri açıyoruz.



SSS-9

Connection Properties ekranında Encrpt Connection diyerek client ile Sql Server arasında SSMS iletişimi encrypt edilebilmektedir.



SSS-10


Windows Firewall’un Yapılandırılması:

Güvenlik duvarı olarak Windows firewall kullanıyorsanız, Sql Server’a erişmek için gerekli TCP ve UDP portlarını açmanız gerekmektedir. Windows firewall’u Server 2008 ile varsayılan olarak açık gelmektedir.
Control Panel – Windows Firewall’u açalım. Advanced settings’e geliyoruz.

SSS-11


Inbound Rules ( Gelen Kuralları) sekmesinde, Action tabındaki “New Rule” ile yeni bir kural oluşturacağız.



SSS-12

Rule type, rol tipinde Port’u seçiyoruz.


SSRS-13


Protocol and Port sekmesinde TCP ve Specific local port’u seçip, ports kısmında 1433 yazıyoruz.



SSS-14

Action sekmesini Allow the connecton- bağlantıya izin ver, olarak seçip devam ediyoruz.


SSS-15

Profile sekmesinde karşımıza 3 farklı seçenek çıkıyor. Domain, yapıda active directory var ise sadece domain deki makinalara erişim verir. Private, domain olmayan yapılarda workgroup olan yapılardaki bağlantılara izin verir. Public ise Sql Server’a dışarıdan erişimi sağlar.


SSS-16

Name kısmında kuralımız için isim verip Finish ile kural oluşturma işlemini tamamlıyoruz.

SSS-17

Kuralımız  Inbound Rules ekranına geldi. Eğer daha fazla kısıtlama ve sadece güvenli makinaların erişmesini istiyorsak. Kuralımızın özellikler ekranını açarak, gerekli ayarlamaları yapalım.


SSS-18

General sekmesindeki Action bölümünde “Allow the connetion if it is secure” (Eğer bağlantı güvenli ise izin ver)seçeneğini seçiyoruz.

SSS-19

Sonrasında Remote Users ve Remote Computers sekmelerinden istediğimiz bilgisayar veya kullanıcıyı seçerek izin veriyoruz.


SSS-20

Sql Server Browser’ın Devre Dışı Bırakılması:

Sql Server’ı yükledikten sonra Sql Server Browser hizmeti otomatik olarak devreye girer ve çalışmaya başlar. Kullanıcı tarafındaki bilgisayarlara Sql Server’ın olduğunun bilgisini gönderir. Network üzerinde hangi sunucularda Sql Server çalıştığı kolaylıkla Browser’ı açık olan sunuculardan tespit edilebilmektedir. Sql Server Browser’ı kapatmak için Sql Server Configuration Manager’ı açıyoruz (Şekil SSS-1).
Sql Server Services bölümünde Sql Server Browser hizmetine çift tıklayarak properties ekranını açıyoruz. Stop butonuna tıklayarak Browser servisini durduruyoruz.

SSS-21

Sql Server yeniden başladığında Browser hizmetini tekrardan çalıştıracaktır, bu sebeple Service sekmesinde, Browser hizmetinin başlangıç ayarlarını devre dışı bırakıyoruz.


SSS-22

Server – Client Arasında Extended Protection Yapılandırılması:

Sql Server ile client arasında kimlik doğrulama katmanlı bir bağlantı vardır. Client bağlanacağı Sql Server’ı kayıtlı kimlik bilgilerinden bilir, her seferinde bağlanacağı Sql Server’ı aramaz. Aynı şekilde server tarafında da benzer durum yaşanır. Client geçerli giriş anahtarını ve şifresini sağladığı için server’a erişim hakkı sağlamıştır.
Bu bağlantı şeklinde, saldırgan server ve client arasına girerek, kendisini Sql Server olarak gösterir. Client yemi yutmuş olur, Sql Server’a bağlandığını zanneder, aslında saldırganın makinasına bağlanmıştır. Saldırganda client’tan Windows Authentication bilgilerini çalarak, Sql Server’a bağlanmaya çalışır. Bu saldırı tipine Luring Attacks denir. Lure yem anlamına gelmektedir, yemleme atakları da diyebiliriz.
Diğer saldırı şeklide, yaygınca bilinen Man-in-the-Middle atak diye tabir edilen, ortadaki adam manasına gelen bu saldırı yönteminde, Dns yönlendirmesi veya Ip routing yapan saldırgan Server ile client arasına girip dinleme yapar. Sql Server kimlik bilgilerini client tarafında onayladığı sırada saldırgan bilgileri ele geçirmiş olur. Bu saldırı tipine de Spoofing Attacks denmektedir.

Bu tip saldırılardan korunmak için Sql Server üzerinde Extended Protection özelliğini aktif hale getirmemiz gerekmektedir.

Sql Server Configuration Manager – Sql Server Network Configuration – Protocols Sql Server’ın Properties ekranını açıyoruz.

SSS-23


Advanced sekmesinde “Extended Protection” kısmında Allowed’u seçiyoruz.



SSS-24


Extended protection özelliği Windows7 ve Server 2008 R2 işletim sistemlerinde gelmektedir. Eski sürümler için aşağıdaki güncellemeyi yüklemeniz gerekmektedir.

http://support.microsoft.com/kb/968389

Msdn: http://msdn.microsoft.com/en-us/library/ff487261.aspx

Veritabanı Dosyalarının Şifrelemesi:


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 Server’lar ü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 key’i 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 policy’e 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.

SSS-25


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 Server’a geri eklemeniz için, ilk önce güvenlik sertifikasını ve encryption key’i 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 2005’te 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.

SSS-26


Facet alanından Surface Area Configuration’ı seçiyoruz.

SSS-27


AdHocRemoteQueriesEnabled, OleAutomationEnabled ve XPCmdShellEnabled alanlarının False değerinde olması  gerekiyor, eğer değilse bu alanları False değerine getiriyoruz.

SSS-28


Sql Server’da Güvenlik makale dizisinin 1. Bölümünün sonuna geldik, 2. Bölümde görüşmek üzere.


yorum yaz

Üye Girişi

Kullanıcı Adınız

Şifreniz

Şifremi Unuttum

Arkadaşına Tavsiye Et

Tavsiye edebilmek için siteye giriş yapmalısınız