Bagikan melalui


Mengonfigurasi Pemfilteran Permintaan di IIS

oleh Keith Newman dan Robert McMurray

Dokumen ini menunjukkan kepada Anda cara menggunakan pengaturan filter permintaan umum untuk meningkatkan keamanan server web IIS 8 Anda.

Filter permintaan membatasi jenis permintaan HTTP yang diproses IIS 8. Dengan memblokir permintaan HTTP tertentu, filter permintaan membantu mencegah permintaan yang berpotensi berbahaya mencapai server. Modul filter permintaan memindai permintaan masuk dan menolak permintaan yang tidak diinginkan berdasarkan aturan yang Anda siapkan.

Secara default, IIS menolak permintaan untuk menelusuri segmen kode penting. Ini juga menolak permintaan untuk beberapa ekstensi nama file.

Anda dapat mengonfigurasi filter permintaan di tingkat seluruh server lalu mengambil alih konfigurasi di tingkat situs web.

Prasyarat

Untuk mendapatkan hasil maksimal dari tutorial ini, Anda harus memiliki akses ke komputer yang menjalankan salah satu sistem operasi berikut:

  • Windows Server® 2012
  • Windows® 8

Pengaturan Filter Permintaan Umum

Pengaturan umum mencakup pengaturan seperti berikut:

  1. Apakah akan mengizinkan akses ke file dengan ekstensi yang tidak tercantum untuk filter permintaan.
  2. Apakah akan mengizinkan permintaan yang menggunakan kata kerja HTTP yang tidak tercantum.
  3. Apakah akan mengizinkan permintaan yang berisi karakter bit tinggi (non-ASCII).
  4. Apakah akan mengizinkan permintaan yang dikodekan ganda.
  5. Panjang maksimum konten yang diminta.
  6. Panjang maksimum URL.
  7. Ukuran maksimum string kueri.

Untuk mengonfigurasi opsi filter permintaan umum dengan menggunakan UI

  1. Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
  2. Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
  3. Di panel Tindakan , klik Edit Pengaturan Fitur.
  4. Dalam dialog Edit Pengaturan Pemfilteran Permintaan, edit pengaturan sesuai keinginan, lalu klik OK.

Untuk mengonfigurasi opsi filter permintaan umum dengan menggunakan baris perintah

Mengonfigurasi karakter bit tinggi

Untuk mengonfigurasi karakter bit tinggi, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /allowhighbitcharacters:benar | salah

Misalnya, untuk mengizinkan karakter bit tinggi, ketik berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /allowhighbitcharacters:true

Mengonfigurasi pelepasan ganda

Untuk mengonfigurasi pelepasan ganda, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /allowdoubleescaping:benar | salah

Misalnya, untuk mengaktifkan pelepasan ganda, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /allowdoubleescaping:true

Mengonfigurasi panjang konten maksimum yang diizinkan

Untuk mengonfigurasi nilai untuk panjang konten maksimum yang diizinkan, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:satuan

Unit variabel requestlimits.maxallowedcontentlength: menentukan panjang maksimum konten.

Misalnya, untuk menentukan 30000000 sebagai panjang maksimum konten, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /requestlimits.maxallowedcontentlength:30000000

Mengonfigurasi panjang URL maksimum yang diizinkan

Untuk mengonfigurasi nilai untuk panjang maksimum URL masuk yang diizinkan, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /requestlimits.maxurl:satuan

Unit variabel requestlimits.maxurl: menentukan panjang maksimum URL masuk.

Misalnya, untuk menentukan 4096 sebagai panjang URL masuk maksimum, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /requestlimits.maxurl:4096

Mengonfigurasi panjang string kueri maksimum yang diizinkan

Untuk mengonfigurasi nilai untuk panjang maksimum yang diizinkan dari string kueri masuk, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /requestlimits.maxquerystring:satuan

Unit variabel requestlimits.maxquertystring: menentukan panjang maksimum string kueri masuk.

Misalnya, untuk menentukan 2048 sebagai string kueri masuk maksimum, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /requestlimits.maxquerystring:2048

Mengonfigurasi ukuran maksimum untuk header HTTP

Untuk mengonfigurasi batas ukuran untuk header HTTP tertentu, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='unit string',sizelimit='']

String variabel header=menentukan header tempat pembatasan ini berlaku. Unit variabel sizelimit= menentukan ukuran maksimum header ini.

Misalnya, untuk menentukan ukuran maksimum 2048 untuk header yang menyertakan nilai contoso.com, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /+requestlimits.headerLimits.[header='contoso.com',sizelimit='2048']

Ekstensi Nama File

Untuk setiap ekstensi nama file yang Anda tambahkan, Anda dapat menunjukkan apakah akan mengizinkan atau menolak permintaan untuk jenis file tersebut.

Untuk mengonfigurasi ekstensi nama file dengan menggunakan UI

  1. Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
  2. Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
  3. Pilih tab Ekstensi Nama File.
  4. Di panel Tindakan , klik Izinkan Ekstensi Nama File atau Tolak Ekstensi Nama File.
  5. Ketik ekstensi nama file dalam kotak, lalu klik OK.

Untuk mengonfigurasi ekstensi nama file dengan menggunakan baris perintah

Mengonfigurasi ekstensi nama file yang tidak terdata

Untuk mengonfigurasi bagaimana IIS menangani ekstensi nama file yang tidak terdata, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:benar | salah

Misalnya, untuk menolak ekstensi nama file yang tidak terdata, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /fileExtensions.allowunlisted:false

Mengonfigurasi untuk permintaan WebDAV

Untuk mengonfigurasi apakah ekstensi nama file berlaku untuk permintaan WebDAV, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:benar | salah

Misalnya, untuk mengonfigurasi IIS sehingga ekstensi nama file tidak berlaku untuk permintaan WebDAV, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /fileExtensions.applyToWebDAV:false

Menambahkan atau menghapus ekstensi nama file

Untuk menambahkan ekstensi nama file, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='tali',allowed='true | false']

String variabel fileextension=adalah ekstensi nama file yang ingin Anda izinkan atau tolak.

Misalnya, untuk menambahkan aturan izinkan untuk ekstensi nama file .xxx, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /+fileExtensions.[fileextension='.xxx',allowed='true']

Untuk menghapus aturan untuk ekstensi nama file .xxx, ketik berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /-fileExtensions.[fileextension='.xxx']

Aturan Pemfilteran

IIS 8 memungkinkan Anda menentukan aturan filter kustom yang berlaku untuk permintaan masuk. Dengan menggunakan fitur ini, Anda dapat menentukan filter yang dapat melakukan hal berikut:

  1. Pindai URL permintaan.
  2. Pindai string kueri yang terkandung dalam URL.
  3. Pindai bidang header tertentu.
  4. Tentukan ekstensi nama file apa yang diterapkan filter.
  5. Tentukan string yang ingin Anda tolak.

Untuk mengonfigurasi aturan pemfilteran dengan menggunakan UI

  1. Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
  2. Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
  3. Pilih tab Aturan .
  4. Di panel Tindakan , klik dua kali Tambahkan Aturan Pemfilteran.
  5. Dalam kotak Nama , ketik nama untuk aturan pemfilteran.
  6. Jika Anda ingin URL dipindai, pilih kotak centang Url Pemindaian.
  7. Jika Anda ingin string kueri dipindai, pilih kotak centang Pindai string kueri.
  8. Di bawah Pindai Header, ketik satu atau beberapa header untuk dipindai.
  9. Di bawah Berlaku Untuk, ketik satu atau beberapa ekstensi nama file yang diterapkan aturan.
  10. Di bawah Tolak String, ketik satu atau beberapa string yang ingin Anda tolak.
  11. Klik OK.

Segmen Tersembunyi

Fitur ini memungkinkan Anda menolak permintaan yang berisi segmen URL (misalnya, nama folder).

Untuk mengonfigurasi segmen tersembunyi dengan menggunakan UI

  1. Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
  2. Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
  3. Pilih tab Segmen Tersembunyi.
  4. Di panel Tindakan , klik Tambahkan Segmen Tersembunyi.
  5. Ketik segmen URL dalam kotak, lalu klik OK.

Untuk mengonfigurasi segmen tersembunyi dengan menggunakan baris perintah

Mengonfigurasi untuk permintaan WebDAV

Untuk mengonfigurasi apakah segmen tersembunyi berlaku untuk permintaan WebDAV, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:benar | salah

Misalnya, untuk mengonfigurasi IIS sehingga segmen tersembunyi tidak berlaku untuk permintaan WebDAV, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /hiddensegments.applyToWebDAV:false

Menambahkan segmen tersembunyi

Untuk mengonfigurasi segmen tersembunyi, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /+hiddensegments.[segment='tali']

String variabel segment=menentukan segmen URL yang disembunyikan.

Misalnya, untuk menentukan bahwa /bin adalah segmen tersembunyi, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /+hiddensegments.[segment='/bin']

Penyaringan URL

Anda dapat mengonfigurasi IIS untuk menerima URL tertentu. Selain itu, Anda dapat mengonfigurasinya untuk menolak urutan URL tertentu.

Untuk mengonfigurasi pemfilteran URL dengan menggunakan UI

  1. Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
  2. Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
  3. Pilih tab URL .
  4. Di panel Tindakan, pilih Izinkan URL atau Tolak Urutan.
  5. Ketik URL atau urutan URL dalam kotak, dan klik OK.

Untuk mengonfigurasi pemfilteran URL dengan menggunakan baris perintah

Untuk menolak urutan URL, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='tali']

String variabel sequence=menentukan urutan karakter dalam URL yang tidak pernah diizinkan untuk diurai IIS.

Misalnya, untuk menentukan bahwa IIS tidak pernah mengurai URL yang berisi dua periode, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /+denyurlsequences.[sequence='..']

Kata Kerja HTTP

Anda dapat menentukan daftar kata kerja yang diterima IIS 8 sebagai bagian dari permintaan. Ketika IIS menolak permintaan berdasarkan fitur ini, kode kesalahan yang dicatat adalah 404.6.

Untuk mengonfigurasi kata kerja HTTP yang tidak terdata dengan menggunakan UI

  1. Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
  2. Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
  3. Pilih tab Kata Kerja HTTP.
  4. Di panel Tindakan, klik Izinkan Kata Kerja atau Tolak Kata Kerja.
  5. Masukkan kata kerja dalam kotak, lalu klik OK.

Untuk mengonfigurasi kata kerja HTTP yang tidak terdata dengan menggunakan baris perintah

Mengonfigurasi kata kerja HTTP yang tidak terdata

Untuk mengonfigurasi bagaimana IIS menangani kata kerja yang tidak terdata, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /verbs.allowunlisted:benar | salah

Misalnya, untuk menolak kata kerja yang tidak terdata, ketik yang berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /verbs.allowunlisted:false

Mengonfigurasi untuk permintaan WebDAV

Untuk mengonfigurasi apakah pemfilteran kata kerja berlaku untuk permintaan WebDAV, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /verbs.applyToWebDAV:benar | salah

Misalnya, untuk mengonfigurasi IIS sehingga pemfilteran kata kerja tidak berlaku untuk permintaan WebDAV, ketik yang berikut ini di prompt perintah lalu tekan ENTER:

appcmd set config /section:requestfiltering /verbs.applyToWebDAV:false

Menambahkan kata kerja HTTP

Untuk mengonfigurasi kata kerja untuk memfilter, gunakan sintaks berikut:

appcmd set config /section:requestfiltering /+verbs.[verb='string',allowed='true | false']

String variabel verb=menentukan kata kerja yang berlaku untuk pembatasan ini.

Misalnya, untuk menentukan GET diizinkan, ketik berikut ini di prompt perintah, lalu tekan ENTER:

appcmd set config /section:requestfiltering /+verbs.[verb='GET',allowed='true']

Batas Ukuran Header

Anda dapat membatasi ukuran header permintaan HTTP untuk meningkatkan performa dan keamanan. Header adalah pasangan nama/nilai yang menentukan parameter operasi transaksi HTTP.

Untuk mengonfigurasi batas ukuran header dengan menggunakan UI

  1. Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
  2. Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
  3. Pilih tab Header , dan klik Tambahkan Header.
  4. Dalam kotak Header , ketik nama bidang header.
  5. Dalam kotak Batas Ukuran, ketik bilangan bulat positif yang mewakili batas ukuran header dalam byte.
  6. Klik OK.

String Kueri

Anda dapat mengonfigurasi IIS 8 untuk mengizinkan atau menolak string kueri tertentu yang terkandung dalam URL yang diminta. Misalnya, jika string kueri yang ditolak ditemukan di URL permintaan, permintaan ditolak.

Untuk mengonfigurasi string kueri dengan menggunakan UI

  1. Buka Manajer IIS dan pilih tingkat tempat Anda ingin mengonfigurasi pemfilteran permintaan.
  2. Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
  3. Pilih tab String Kueri, dan klik Izinkan String Kueri atau Tolak String Kueri.
  4. Dalam kotak String kueri , ketik string kueri.
  5. Klik OK.

Meminta Pengelogan Filter

Anda dapat menggunakan pengelogan IIS untuk mengevaluasi dan mengoptimalkan konfigurasi filter permintaan Anda.

Tabel berikut ini memperlihatkan kode kesalahan filter permintaan yang Anda lihat di log:

Deskripsi_kesalahan Kode status
Pemfilteran Permintaan: Urutan URL ditolak 404.5
Pemfilteran Permintaan: Kata kerja ditolak 404.6
Pemfilteran Permintaan: Ekstensi nama file ditolak 404.7
Pemfilteran Permintaan: Ditolak oleh segmen tersembunyi 404.8
Pemfilteran Permintaan: Ditolak karena URL menggandakan pelepasan 404.11
Pemfilteran Permintaan: Ditolak karena karakter bit tinggi 404.12
Pemfilteran Permintaan: Ditolak karena URL terlalu panjang 404.14
Pemfilteran Permintaan: Ditolak karena string kueri terlalu panjang 404.15
Pemfilteran Permintaan: Ditolak karena panjang konten terlalu besar 413.1
Pemfilteran Permintaan: Ditolak karena header permintaan terlalu panjang. 431

Lihat Juga