Bagikan melalui


Windows Extended Protection <extendedProtection>

Gambaran Umum

Elemen <extendedProtection> menentukan pengaturan yang mengonfigurasi perlindungan yang diperluas untuk autentikasi Windows di IIS 7.5.

Perlindungan yang diperluas meningkatkan fungsionalitas autentikasi Windows yang ada untuk mengurangi relai autentikasi atau serangan "man in the middle". Mitigasi ini dilakukan dengan menggunakan informasi keamanan yang diterapkan melalui dua mekanisme keamanan:

  • Informasi pengikatan saluran yang ditentukan melalui Token Pengikatan Saluran (CBT), yang terutama digunakan untuk koneksi SSL.
  • Informasi pengikatan layanan yang ditentukan melalui Nama Prinsip Layanan (SPN), yang terutama digunakan untuk koneksi yang tidak menggunakan SSL, atau ketika koneksi dibuat melalui skenario yang menyediakan offloading SSL, seperti server proksi atau load-balancer.

Elemen <extendedProtection> mungkin berisi kumpulan <spn> elemen, yang masing-masing berisi SPN unik untuk informasi pengikatan layanan. Setiap SPN mewakili titik akhir unik di jalur koneksi, yang mungkin merupakan Nama Domain yang Sepenuhnya Memenuhi Syarat (FQDN) atau nama NetBIOS dari server tujuan atau server proksi. Misalnya, jika klien terhubung ke server tujuan melalui server proksi, koleksi SPN di server tujuan harus berisi SPN untuk server proksi. Setiap SPN dalam koleksi harus diawali dengan "HTTP," sehingga SPN yang dihasilkan untuk "www.contoso.com" adalah "HTTP/www.contoso.com."

Ada dua atribut <extendedProtection> elemen yang mengonfigurasi pengikatan saluran dan perilaku tambahan untuk perlindungan IIS yang diperluas:

  • Atribut tokenChecking mengonfigurasi perilaku untuk memeriksa token pengikatan saluran. Nilai yang mungkin untuk atribut ini adalah:

    Nama Deskripsi
    None Nilai ini menentukan bahwa IIS tidak akan melakukan pemeriksaan token pengikatan saluran. Pengaturan ini menimpulkan perilaku yang ada sebelum perlindungan yang diperpanjang.

    Nilai numerik adalah 0.
    Allow Nilai ini menentukan bahwa pemeriksaan token pengikatan saluran diaktifkan, tetapi tidak diperlukan. Pengaturan ini memungkinkan komunikasi yang aman dengan klien yang mendukung perlindungan yang diperpanjang, tetapi masih mendukung klien yang tidak mampu menggunakan perlindungan yang diperluas.

    Nilai numerik adalah 1.
    Require Nilai ini menentukan bahwa pemeriksaan token pengikatan saluran diperlukan. Pengaturan ini tidak menyediakan dukungan untuk klien yang tidak mendukung perlindungan yang diperpanjang.

    Nilai numerik adalah 2.
  • Atribut bendera mengonfigurasi perilaku tambahan untuk perlindungan yang diperpanjang. Bendera yang mungkin adalah:

    Nama Deskripsi
    None Bendera ini menentukan bahwa tidak ada perilaku tambahan yang diaktifkan untuk perlindungan yang diperpanjang. (Misalnya, tidak ada server proksi yang digunakan dan pemeriksaan SPN diaktifkan dan memerlukan FQDN.)

    Nilai numerik adalah 0.
    Proxy Bendera ini menentukan bahwa bagian dari jalur komunikasi akan melalui proksi, atau bahwa klien terhubung langsung ke server tujuan melalui HTTP.

    Nilai numerik adalah 1.
    NoServiceNameCheck Bendera ini menentukan bahwa pemeriksaan SPN dinonaktifkan; bendera ini tidak boleh digunakan dalam skenario di mana hanya SPN yang sedang diperiksa.

    Nilai numerik adalah 2.
    AllowDotlessSpn Bendera ini menentukan bahwa SPN tidak diperlukan untuk menjadi FQDN. Mengatur bendera ini memungkinkan SPN berbasis NetBIOS. Catatan: Mengatur bendera ini bukan skenario yang aman; nama berbasis non-FQDN rentan terhadap serangan keracunan resolusi nama.

    Nilai numerik adalah 4.
    ProxyCohosting Bendera ini menentukan bahwa seluruh jalur komunikasi klien-ke-server hanya akan menggunakan HTTP; tidak ada bagian dari jalur komunikasi yang akan menggunakan SSL, dan pemeriksaan SPN akan digunakan. Catatan: Saat Anda menentukan bendera ini, Anda juga harus menentukan Proxy bendera .

    Nilai numerik adalah 32.

Skenario Perlindungan yang Diperluas

Pertimbangkan contoh skenario berikut:

  • Dalam setiap skenario berikut, Anda juga dapat menentukan AllowDotlessSpn bendera jika lingkungan jaringan Anda mendukung SPN berbasis NetBIOS; namun, SPN berbasis NetBIOS tidak aman.
  • Untuk setiap skenario berikut di mana pemeriksaan SPN akan digunakan dan pemeriksaan token pengikatan saluran tidak akan digunakan, Anda tidak boleh menentukan NoServiceNameCheck bendera.
Skenario Bendera Deskripsi
Klien terhubung langsung ke server tujuan menggunakan HTTP Proxy, ProxyCohosting Pemeriksaan SPN akan digunakan dan pemeriksaan token pengikatan saluran tidak akan digunakan.
Klien terhubung langsung ke server tujuan menggunakan SSL None Pemeriksaan token pengikatan saluran digunakan dan pemeriksaan SPN tidak digunakan.
Klien terhubung ke server tujuan melalui server proksi menggunakan HTTP untuk seluruh jalur Proxy, ProxyCohosting Pemeriksaan SPN akan digunakan dan pemeriksaan token pengikatan saluran tidak akan digunakan.
Klien terhubung ke server tujuan melalui server proksi menggunakan SSL untuk seluruh jalur Proxy Pemeriksaan SPN akan digunakan dan pemeriksaan token pengikatan saluran tidak akan digunakan.
Klien terhubung ke server proksi menggunakan SSL dan server proksi terhubung ke server tujuan menggunakan HTTP (SSL off-loading) Proxy Pemeriksaan SPN akan digunakan dan pemeriksaan token pengikatan saluran tidak akan digunakan.

Informasi Tambahan

Informasi selengkapnya tentang Extended Protection tersedia dalam topik berikut:

Autentikasi Windows Terintegrasi dengan Perlindungan yang Diperluas

Nama Perwakilan Layanan

Kompatibilitas

Versi Catatan
IIS 10.0 Elemen <extendedProtection> tidak dimodifikasi di IIS 10.0.
IIS 8.5 Elemen <extendedProtection> tidak dimodifikasi di IIS 8.5.
IIS 8.0 Elemen <extendedProtection> tidak dimodifikasi di IIS 8.0.
IIS 7.5 Elemen <extendedProtection> ini diperkenalkan di IIS 7.5.
IIS 7.0 T/A
IIS 6.0 T/A

Siapkan

Penginstalan default IIS 7 dan yang lebih baru tidak menyertakan layanan peran autentikasi Windows. Untuk menggunakan autentikasi Windows pada IIS, Anda harus menginstal layanan peran, menonaktifkan autentikasi Anonim untuk situs web atau aplikasi Anda, lalu mengaktifkan autentikasi Windows untuk situs atau aplikasi.

Catatan

Setelah Anda menginstal layanan peran, IIS 7 menerapkan pengaturan konfigurasi berikut ke file ApplicationHost.config.

<windowsAuthentication enabled="false" />

Windows Server 2012 atau Windows Server 2012 R2

  1. Pada taskbar, klik Manajer Server.
  2. Di Manajer Server, klik menu Kelola , lalu klik Tambahkan Peran dan Fitur.
  3. Di wizard Tambahkan Peran dan Fitur , klik Berikutnya. Pilih jenis penginstalan dan klik Berikutnya. Pilih server tujuan dan klik Berikutnya.
  4. Pada halaman Peran Server , perluas Server Web (IIS), perluas Server Web, perluas Keamanan, lalu pilih Autentikasi Windows. Klik Berikutnya.
    Cuplikan layar halaman Peran Server. Opsi Autentikasi Windows dipilih dan disorot. .
  5. Pada halaman Pilih fitur, klik Berikutnya.
  6. Pada halaman Konfirmasi pilihan instalasi, klik Instal.
  7. Pada halaman Hasil , klik Tutup.

Windows 8 atau Windows 8.1

  1. Pada layar Mulai, pindahkan penunjuk ke sudut kiri bawah, klik kanan tombol Mulai, lalu klik Panel Kontrol.
  2. Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan fitur Windows.
  3. Perluas Layanan Informasi Internet, perluas World Wide Web Services, perluas Keamanan, lalu pilih Autentikasi Windows.
    Cuplikan layar pohon navigasi Program dan Fitur. Opsi Autentikasi Windows dipilih dan disorot.
  4. Klik OK.
  5. Klik Tutup.

Windows Server 2008 atau Windows Server 2008 R2

  1. Pada taskbar, klik Mulai, arahkan ke Alat Administratif, lalu klik Manajer Server.
  2. Di panel hierarki Manajer Server , perluas Peran, lalu klik Server Web (IIS).
  3. Di panel Server Web (IIS), gulir ke bagian Layanan Peran , lalu klik Tambahkan Layanan Peran.
  4. Pada halaman Pilih Layanan Peran dari Wizard Tambahkan Layanan Peran, pilih Autentikasi Windows, lalu klik Berikutnya.
    Cuplikan layar halaman Pilih Layanan Peran. Opsi Keamanan diperluas. Opsi Autentikasi Windows dipilih dan disorot.
  5. Pada halaman Konfirmasi Pilihan Penginstalan , klik Instal.
  6. Pada halaman Hasil , klik Tutup.

Windows Vista atau Windows 7

  1. Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
  2. Di Panel Kontrol, klik Program dan Fitur, lalu klik Aktifkan atau nonaktifkan Fitur Windows.
  3. Perluas Layanan Informasi Internet, lalu World Wide Web Services, lalu Keamanan.
  4. Pilih Autentikasi Windows, lalu klik OK.
    Cuplikan layar pohon navigasi Program dan Fitur. Autentikasi Windows disorot dan dipilih. Folder Keamanan diperluas.

Bagaimana Caranya

Cara mengaktifkan Extended Protection untuk autentikasi Windows

  1. Buka Manajer Layanan Informasi Internet (IIS):

    • Jika Anda menggunakan Windows Server 2012 atau Windows Server 2012 R2:

      • Pada bilah tugas, klik Manajer Server, klik Alat, lalu klik Manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows 8 atau Windows 8.1:

      • Tahan tombol Windows, tekan huruf X, lalu klik Panel Kontrol.
      • Klik Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Server 2008 atau Windows Server 2008 R2:

      • Pada taskbar, klik Mulai, arahkan ke Alat Administratif, lalu klik Manajer Layanan Informasi Internet (IIS).
    • Jika Anda menggunakan Windows Vista atau Windows 7:

      • Pada taskbar, klik Mulai, lalu klik Panel Kontrol.
      • Klik dua kali Alat Administratif, lalu klik dua kali Manajer Layanan Informasi Internet (IIS).
  2. Di panel Koneksi , perluas nama server, perluas Situs, lalu situs, aplikasi, atau layanan Web yang ingin Anda aktifkan Perlindungan Diperpanjang untuk autentikasi Windows.

  3. Gulir ke bagian Keamanan di panel Beranda , lalu klik ganda Autentikasi.

  4. Di panel Autentikasi , pilih Autentikasi Windows.

  5. Klik Aktifkan di panel Tindakan .
    Cuplikan layar halaman Autentikasi. Autentikasi Windows disorot. Tombol Aktifkan ditemukan di panel Tindakan.

  6. Klik Pengaturan Tingkat Lanjut di panel Tindakan .

  7. Saat kotak dialog Pengaturan Tingkat Lanjut muncul, pilih salah satu opsi berikut ini di menu drop-down Perlindungan yang Diperluas :

    • Pilih Terima jika Anda ingin mengaktifkan perlindungan yang diperluas sambil memberikan dukungan tingkat bawah untuk klien yang tidak mendukung perlindungan yang diperpanjang.
    • Pilih Diperlukan jika Anda ingin mengaktifkan perlindungan yang diperluas tanpa memberikan dukungan tingkat bawah.
      Cuplikan layar kotak dialog Pengaturan Tingkat Lanjut. Di menu drop-down Perlindungan yang Diperluas, opsi Terima disorot.
  8. Klik OK untuk menutup kotak dialogPengaturan Tingkat Lanjut.

Konfigurasi

Elemen <extendedProtection> ini dapat dikonfigurasi di tingkat direktori situs, aplikasi, atau virtual dalam file ApplicationHost.config.

Atribut

Atribut Deskripsi
flags Atribut bendera opsional.

Menentukan pengaturan perilaku tambahan untuk perlindungan yang diperluas.

Atribut flags dapat berupa kombinasi dari nilai berikut; nilai defaultnya adalah None.
Nama Deskripsi
None

Bendera ini menentukan bahwa tidak ada perilaku tambahan yang diaktifkan untuk perlindungan yang diperpanjang. (Misalnya, tidak ada server proksi yang digunakan dan pemeriksaan SPN diaktifkan dan memerlukan FQDN.)

Nilai numerik adalah 0.

Proxy

Bendera ini menentukan bahwa bagian dari jalur komunikasi akan melalui proksi, atau bahwa klien terhubung langsung ke server tujuan melalui HTTP.

Nilai numerik adalah 1.

NoServiceNameCheck

Bendera ini menentukan bahwa pemeriksaan SPN dinonaktifkan; bendera ini tidak boleh digunakan dalam skenario di mana hanya SPN yang sedang diperiksa.

Nilai numerik adalah 2.

AllowDotlessSpn

Bendera ini menentukan bahwa SPN tidak diperlukan untuk menjadi FQDN. Mengatur bendera ini memungkinkan SPN berbasis NetBIOS. Catatan: Mengatur bendera ini bukan skenario yang aman; nama berbasis non-FQDN rentan terhadap serangan keracunan resolusi nama.

Nilai numerik adalah 4.

ProxyCohosting

Bendera ini menentukan bahwa seluruh jalur komunikasi klien-ke-server hanya akan menggunakan HTTP; tidak ada bagian dari jalur komunikasi yang akan menggunakan SSL, dan pemeriksaan SPN akan digunakan. Catatan: Saat menentukan bendera ini, Anda juga harus menentukan Proxy bendera .

Nilai numerik adalah 32.

tokenChecking Atribut enum opsional.

Menentukan perilaku untuk memeriksa informasi pengikatan saluran.

Atribut tokenChecking dapat menjadi salah satu nilai berikut; nilai defaultnya adalah None.
Nama Deskripsi
None

Nilai ini menentukan bahwa IIS tidak akan melakukan pemeriksaan token pengikatan saluran. Pengaturan ini menimpulkan perilaku yang ada sebelum perlindungan yang diperpanjang.

Nilai numerik adalah 0.

Allow

Nilai ini menentukan bahwa pemeriksaan token pengikatan saluran diaktifkan, tetapi tidak diperlukan. Pengaturan ini memungkinkan komunikasi yang aman dengan klien yang mendukung perlindungan yang diperpanjang, tetapi masih mendukung klien yang tidak mampu menggunakan perlindungan yang diperluas.

Nilai numerik adalah 1.

Require

Nilai ini menentukan bahwa pemeriksaan token pengikatan saluran diperlukan. Pengaturan ini tidak menyediakan dukungan untuk klien yang tidak mendukung perlindungan yang diperpanjang.

Nilai numerik adalah 2.

Elemen Anak

Elemen Deskripsi
spn Menambahkan SPN ke koleksi.
clearSpns Menghapus koleksi SPN.
removeSpn Menghapus SPN dari koleksi.

Sampel Konfigurasi

Contoh berikut menampilkan <extendedProtection> elemen yang menunjukkan pengaktifan autentikasi Windows dengan perlindungan yang diperluas untuk Situs Web Default, dan menambahkan dua entri SPN ke kumpulan SPN.

<location path="Default Web Site">
   <system.webServer>
      <security>
         <authentication>
            <windowsAuthentication enabled="true">
               <extendedProtection tokenChecking="Allow" flags="None">
                  <spn name="HTTP/www.contoso.com" />
                  <spn name="HTTP/contoso.com" />
               </extendedProtection>
            </windowsAuthentication>
         </authentication>
      </security>
   </system.webServer>
</location>

Kode Sampel

Contoh berikut menunjukkan konfigurasi autentikasi Windows dengan perlindungan yang diperluas untuk Situs Web Default, dan menambahkan dua entri SPN ke kumpulan SPN.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /enabled:"True" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /extendedProtection.tokenChecking:"Allow" /extendedProtection.flags:"None" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/www.contoso.com']" /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/security/authentication/windowsAuthentication /+"extendedProtection.[name='HTTP/contoso.com']" /commit:apphost

Catatan

Anda harus memastikan untuk mengatur parameter penerapan ke apphost saat Anda menggunakan AppCmd.exe untuk mengonfigurasi pengaturan ini. Ini menerapkan pengaturan konfigurasi ke bagian lokasi yang sesuai dalam file ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();

         ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site");
         windowsAuthenticationSection["enabled"] = true;

         ConfigurationElement extendedProtectionElement = windowsAuthenticationSection.GetChildElement("extendedProtection");
         extendedProtectionElement["tokenChecking"] = @"Allow";
         extendedProtectionElement["flags"] = @"None";

         ConfigurationElementCollection extendedProtectionCollection = extendedProtectionElement.GetCollection();

         ConfigurationElement spnElement = extendedProtectionCollection.CreateElement("spn");
         spnElement["name"] = @"HTTP/www.contoso.com";
         extendedProtectionCollection.Add(spnElement);

         ConfigurationElement spnElement1 = extendedProtectionCollection.CreateElement("spn");
         spnElement1["name"] = @"HTTP/contoso.com";
         extendedProtectionCollection.Add(spnElement1);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration

      Dim windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Default Web Site")
      windowsAuthenticationSection("enabled") = True

      Dim extendedProtectionElement As ConfigurationElement = windowsAuthenticationSection.GetChildElement("extendedProtection")
      extendedProtectionElement("tokenChecking") = "Allow"
      extendedProtectionElement("flags") = "None"

      Dim extendedProtectionCollection As ConfigurationElementCollection = extendedProtectionElement.GetCollection

      Dim spnElement As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
      spnElement("name") = "HTTP/www.contoso.com"
      extendedProtectionCollection.Add(spnElement)

      Dim spnElement1 As ConfigurationElement = extendedProtectionCollection.CreateElement("spn")
      spnElement1("name") = "HTTP/contoso.com"
      extendedProtectionCollection.Add(spnElement1)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site");
windowsAuthenticationSection.Properties.Item("enabled").Value = true;

var extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection");
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow";
extendedProtectionElement.Properties.Item("flags").Value = "None";

var extendedProtectionCollection = extendedProtectionElement.Collection;

var spnElement = extendedProtectionCollection.CreateNewElement("spn");
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com";
extendedProtectionCollection.AddElement(spnElement);

var spnElement1 = extendedProtectionCollection.CreateNewElement("spn");
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com";
extendedProtectionCollection.AddElement(spnElement1);

adminManager.CommitChanges();

Vbscript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Default Web Site")
windowsAuthenticationSection.Properties.Item("enabled").Value = True

Set extendedProtectionElement = windowsAuthenticationSection.ChildElements.Item("extendedProtection")
extendedProtectionElement.Properties.Item("tokenChecking").Value = "Allow"
extendedProtectionElement.Properties.Item("flags").Value = "None"

Set extendedProtectionCollection = extendedProtectionElement.Collection

Set spnElement = extendedProtectionCollection.CreateNewElement("spn")
spnElement.Properties.Item("name").Value = "HTTP/www.contoso.com"
extendedProtectionCollection.AddElement(spnElement)

Set spnElement1 = extendedProtectionCollection.CreateNewElement("spn")
spnElement1.Properties.Item("name").Value = "HTTP/contoso.com"
extendedProtectionCollection.AddElement(spnElement1)

adminManager.CommitChanges()