Genişletilmiş Koruma ile veritabanı altyapısına bağlanma

Şunlar için geçerlidir: SQL Server

Genişletilmiş Koruma, istemcinin bağlandığı hizmeti bildiğinden emin olarak kimlik doğrulama geçişi saldırılarını önlemeye yardımcı olur.

Genişletilmiş Koruma, işletim sistemi tarafından uygulanan ağ bileşenlerinin bir özelliğidir. Genişletilmiş Koruma, Windows'ta desteklenir.

SQL Server, Genişletilmiş Koruma kullanılarak bağlantılar yapıldığında daha güvenlidir.

Gereksinimler denetim listesi

Genişletilmiş Koruma'nın etkili olması için aşağıdaki koşulların tümü karşılanmalıdır:

  1. Kanal bağlamayı destekleyen bir istemci sürücüsü kullanın.
  2. İstemcinin kanal bağlama belirteci (CBT) oluşturabilmesi için bağlantıda TLS şifrelemesini etkinleştirin.
  3. SQL Server örneğiyle eşleşen doğru Hizmet Asıl Adı (SPN) ile bağlanın.
  4. Windows authentication (NTLM veya Kerberos) kullanın. Genişletilmiş Koruma, SQL kimlik doğrulaması için geçerli değildir.
  5. SQL Server örneğinde Genişletilmiş Koruma'yı etkinleştirin (İzin Verildi veya Gerekli olarak ayarlayın).

Note

C# dilinde Genişletilmiş Koruma'yı destekleyen bir bağlantı dizesi örneği için bkz. Örnek bağlantı dizesi.

Genişletilmiş Koruma açıklaması

Genişletilmiş Koruma, kimlik doğrulama geçişi saldırısını önlemeye yardımcı olmak için hizmet bağlamayı ve kanal bağlamayı kullanır. Kimlik doğrulama geçişi saldırısında, NTLM kimlik doğrulamasını gerçekleştirebilen bir istemci (örneğin, Windows Gezgini, Outlook, bir .NET SqlClient uygulaması ve diğerleri), bir saldırgana (örneğin, kötü amaçlı bir CIFS dosya sunucusu) bağlanır. Saldırgan, istemci olarak maske uygulamak ve bir hizmette (örneğin, Veritabanı Altyapısı örneği) kimlik doğrulaması yapmak için istemcinin kimlik bilgilerini kullanır.

Bu saldırının iki varyasyonu vardır:

  • Bir kandırma saldırısında, istemci gönüllü olarak saldırgana bağlanır.

  • Bir sahtecilik saldırısında, istemci geçerli bir hizmete bağlanmayı amaçlar, ancak bağlantının bunun yerine saldırgana yönlendirilmesi için DNS'in ve IP yönlendirmesinin birinin veya her ikisinin zehirlendiğinden habersizdir.

SQL Server, SQL Server örneklerine yönelik bu saldırıları azaltmaya yardımcı olmak için hizmet bağlamayı ve kanal bağlamayı destekler.

Hizmet Bağlantısı

Hizmet bağlama, istemcinin istemcinin bağlanmak istediği SQL Server hizmetinin imzalı hizmet asıl adını (SPN) göndermesini gerektirerek, engelleme saldırılarını giderir. Kimlik doğrulama yanıtının bir parçası olarak hizmet, pakette alınan SPN'nin kendi SPN'siyle eşleşdiğini doğrular. Bir istemci bir saldırgana bağlanmak için kandırılırsa, istemci saldırganın imzalı SPN'sini içerir. Saldırganın SPN'sini içereceğinden, saldırgan gerçek SQL Server hizmetine istemci olarak kimlik doğrulaması için paketi aktaramaz. Hizmet bağlama, tek seferlik ve göz ardı edilebilir bir maliyete neden olur ama kimlik sahtekarlığı saldırılarını engellemez. Hizmet bağlama, bir istemci uygulaması SQL Server bağlanmak için şifreleme kullanmadığında oluşur.

Kanal bağlama

Kanal bağlama, bir istemci ile SQL Server hizmetinin bir örneği arasında güvenli bir kanal (Schannel) oluşturur. Hizmet, istemcinin kanala özgü bağlama belirtecini (CBT) kendi CBT'si ile karşılaştırarak istemcinin orijinalliğini doğrular. Kanal bağlama, hem tuzağa düşürme hem de kimlik sahtekarlığı saldırılarını engeller. Ancak, tüm oturum trafiğinin Aktarım Katmanı Güvenliği (TLS) şifrelemesini gerektirdiğinden daha büyük bir çalışma zamanı maliyetine neden olur. Kanal bağlama, bir istemci uygulaması SQL Server bağlanmak için şifreleme kullandığında, şifrelemenin istemci tarafından mı yoksa sunucu tarafından mı uygulandığından bağımsız olarak gerçekleşir.

Uyarı

SQL Server için SQL Server ve Microsoft veri sağlayıcıları TLS 1.0 ve SSL 3.0 gibi eski protokolleri destekler. İşletim sistemi SChannel katmanında değişiklik yaparak farklı bir protokolü (TLS 1.2 veya TLS 1.3 gibi) zorlarsanız, SQL Server bağlantılarınız başarısız olabilir. TLS 1.2 veya TLS 1.3'i desteklemek için en son SQL Server derlemesine sahip olduğunuzdan emin olun. Daha fazla bilgi için bkz. TLS 1.2 ve TLS 1.3.

İşletim sistemi desteği

Aşağıdaki bağlantılar, Windows Genişletilmiş Koruma'nın nasıl destek olduğu hakkında daha fazla bilgi sağlar:

Sürücü desteği

Genişletilmiş Korumayı destekleyen tek sürücüler Windows tabanlıdır:

  • SQL Server için Microsoft ODBC Sürücüsü (yalnızca Windows'ta)
  • SQL Server için Microsoft OLE DB Sürücüsü
  • System.Data.SqlClient (Windows üzerinde .NET Framework'te)
  • Microsoft.Data.SqlClient (Windows üzerinde)

Ayarlar

Üç SQL Server bağlantı ayarı hizmet bağlamasını ve kanal bağlamasını etkiler. bu ayarları SQL Server Yapılandırma Yöneticisi veya WMI kullanarak yapılandırabilirsiniz. İlke Tabanlı Yönetimin Sunucu Protokolü Ayarları modelini kullanarak bu ayarları görüntüleyin.

Şifrelemeyi Zorla

Olası değerler Evet ve Hayır'dır. Kanal bağlamasını kullanmak için Şifrelemeyi Zorla seçeneğini Evet olarak ayarlayın ve tüm istemcilerin şifreleme kullanması gerekir. Hayır ise, yalnızca hizmet bağlama garanti edilir. Şifrelemeyi Zorla, SQL Server Yapılandırma Yöneticisi'daki MSSQLSERVER Özellikleri (Bayraklar Sekmesi) için Protokolleri'ndedir. SQL Server 2022 'den (16.x) başlayarak, TDS 8.0 kullanarak daha güçlü koruma için Katı Şifrelemeyi Zorlaseçeneğini Evet olarak da ayarlayabilirsiniz. Daha fazla bilgi için bkz. Bağlantıları şifrelemek için SQL Server Veritabanı Altyapısını yapılandırma.

Genişletilmiş Koruma ile kullanıldığında Şifrelemeyi Zorlaseçeneğini Evet olarak ayarlayın.

Genişletilmiş Koruma

Olası değerler Kapalı, İzin Verilenve Gerekli. Her SQL Server örneği için Genişletilmiş Koruma düzeyini ayarlamak için Genişletilmiş Koruma değişkenini kullanın. Genişletilmiş Koruma'yıSQL Server Yapılandırma Yöneticisi'deki MSSQLSERVER Özellikleri protokollerinde (Gelişmiş Sekme) bulabilirsiniz.

  • Genişletilmiş Koruma'yı devre dışı bırakmak için Kapalı olarak ayarlayın. SQL Server örneği, istemcinin korunup korunmadığına bakılmaksızın herhangi bir istemciden gelen bağlantıları kabul eder. Off, eski ve eşleşmeyen işletim sistemleriyle uyumludur ancak daha az güvenlidir. İstemci işletim sistemleri genişletilmiş korumayı desteklemediğinde bu ayarı kullanın.

  • Genişletilmiş Koruma'yı destekleyen işletim sistemlerinden gelen bağlantılar için Genişletilmiş Koruma gerektirecek şekilde İzin verildi olarak ayarlayın. Genişletilmiş Koruma, genişletilmiş korumayı desteklemeyen işletim sistemlerinden gelen bağlantılar için yoksayılır. Korumalı istemci işletim sistemlerinde çalışan korumasız istemci uygulamalarından gelen bağlantılar reddedilir. Bu ayar Kapalı'den daha güvenlidir, ancak en güvenli ayar değildir. Bu ayarı karma ortamlarda kullanın. Bazı işletim sistemleri Genişletilmiş Koruma'yı desteklerken diğerleri desteklemez.

  • Korumalı işletim sistemlerinde yalnızca korumalı uygulamalardan gelen bağlantıları kabul etmek için Gerekli olarak ayarlayın. Bu ayar en güvenli ayardır, ancak genişletilmiş korumayı desteklemeyen işletim sistemlerinden veya uygulamalardan gelen bağlantılar SQL Server bağlanamaz.

Önerilen ayarlar hakkında daha fazla bilgi için bkz . Genişletilmiş Koruma ile şifrelemeyi etkinleştirme.

Kabul Edilen NTLM SPN'leri

Bir sunucuyu birden fazla SPN biliyorsa Kabul Edilen NTLM SPN'leri değişkenini belirtin. İstemci, sunucunun bilmediği geçerli bir SPN kullanarak sunucuya bağlanmaya çalıştığında, hizmet bağlama başarısız olur. Bu sorunu önlemek için , Kabul Edilen NTLM SPN'lerini kullanarak sunucuyu temsil eden birkaç SPN belirtin. Kabul Edilmiş NTLM SPN'leri noktalı virgülle ayrılmış bir dizi SPN'dir. Örneğin, MSSQLSvc/HostName1.Contoso.com ve MSSQLSvc/HostName2.Contoso.comSPN'lerine izin vermek için, MSSQLSvc/HostName1.Contoso.com;MSSQLSvc/HostName2.Contoso.com ifadelerini Kabul Edilen NTLM SPN'leri kutusuna yazın. Değişkenin uzunluğu en fazla 2.048 karakterdir. Kabul Edilen NTLM SPN'leriniSQL Server Yapılandırma Yöneticisi'deki MSSQLSERVER Özellikleri protokollerinde (Gelişmiş Sekme) bulabilirsiniz.

Veritabanı altyapısı için Genişletilmiş Koruma'yı etkinleştirme

Genişletilmiş Koruma'yı kullanmak için hem sunucunun hem de istemcinin Genişletilmiş Koruma'yı destekleyen bir işletim sistemine sahip olması ve işletim sisteminde etkinleştirilmesi gerekir. İşletim sistemi için Genişletilmiş Koruma'yı etkinleştirme hakkında daha fazla bilgi için bkz. Kimlik Doğrulaması için Genişletilmiş Koruma.

Genişletilmiş Koruma ve NTLMv2, desteklenen tüm Windows sürümlerinde varsayılan olarak etkin olsa da, genişletilmiş koruma SQL Server bağlantıları için varsayılan olarak etkinleştirilmez. SQL Server Yapılandırma Yöneticisi'de el ile etkinleştirmeniz gerekir.

SQL Server bağlantılarında Genişletilmiş Koruma'yı etkinleştirmek için yöneticilerin ayarları SQL Server Yapılandırma Yöneticisi yapılandırmaları gerekir. Bu yapılandırma, çeşitli kimlik doğrulama geçişi saldırılarını azaltmak için hizmet bağlama ve kanal bağlama seçeneklerini içerir. Ayrıntılı yönergeler için Genişletilmiş Koruma'yı yapılandırmayla ilgili SQL Server belgelerine bakın.

Genişletilmiş Koruma ile şifrelemeyi etkinleştirme

Şunlar için geçerlidir: SQL Server

Windows authentication kullanırken güvenliği artırmak için, SQL Server Yapılandırma Yöneticisi'da GenişletilmişKoruma'yı Gerekli ve Şifrelemeyi Zorla'yıEvet olarak ayarlayın.

Bu ayarlar SQL Server için en güvenli yapılandırmayı sağlar.

Note

SQL Server 2022 (16.x) ve sonraki sürümlerde, TDS 8.0 üzerinden daha güçlü güvenlik sağlamak için Katı Şifrelemeye Zorla yerine Şifrelemeyi Zorla kullanın.

Bu değişikliklere uyum sağlamak için bağlantı dizelerinizi güncelleştirin.

Daha fazla bilgi için bakınız:

Genişletilmiş Koruma'yı etkinleştirdikten sonra

Sunucu bilgisayarda Genişletilmiş Koruma'yı etkinleştirdikten sonra, Genişletilmiş Koruma'yı etkinleştirmek için aşağıdaki adımları kullanın:

  1. Windows Başlat menüsünden SQL Server Yapılandırma Yöneticisi gidin.

  2. SQL Server Ağ Yapılandırması'nı genişletin ve ardından <InstanceName> için Protokoller'e sağ tıklayın. Özellikler'i seçin.

  3. Gelişmiş sekmesinde, Genişletilmiş Koruma'yı hem kanal bağlaması hem de hizmet bağlaması için uygun ayara ayarlayın.

  4. İsteğe bağlı olarak, bir sunucuyu birden fazla SPN tanıdığında, Ayarlar bölümünde açıklandığı gibi Gelişmişsekmesindeki Kabul Edilen NTLM SPN'leri alanını yapılandırın.

  5. Kanal bağlama için Bayraklar sekmesinde Şifrelemeyi Zorla seçeneğini Evet olarak ayarlayın. Bu ayar önerilir.

  6. Veritabanı Altyapısı hizmetini yeniden başlatın.

Diğer SQL Server bileşenlerini yapılandırma

Reporting Services'i yapılandırma hakkında daha fazla bilgi için bkz. Reporting Services ile kimlik doğrulaması için genişletilmiş koruma.

HTTP veya HTTPS bağlantısıyla Analysis Services verilerine erişmek için IIS kullandığınızda, Analysis Services IIS tarafından sağlanan Genişletilmiş Koruma'nın avantajlarından yararlanabilir. IIS'yi Genişletilmiş Koruma kullanacak şekilde yapılandırma hakkında daha fazla bilgi için bkz. IIS 7.5'te Genişletilmiş Koruma yapılandırma.

Örnek bağlantı dizesi

Aşağıdaki C# örneğinde, bağlantı dizesi Windows authentication (Integrated Security=true kullanır). Kanal bağlama belirteci TLS şifrelemesi ()Encrypt=true aracılığıyla etkinleştirilir. Sertifika doğrulaması, TrustServerCertificate=false aracılığıyla zorunlu kılınır. HostNameInCertificate, gerekli olmamakla birlikte önerilir ve bu örneğe dahil edilmiştir.

using (var conn = new SqlConnection(
    "Server=sql01.contoso.com;" +
    "Database=AdventureWorks2025;" +
    "Integrated Security=true;" +        
    "Encrypt=true;" +                   
    "TrustServerCertificate=false;" +    
    "HostNameInCertificate=sql01.contoso.com;")) 
{
    conn.Open();
}