Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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:
- Apakah akan mengizinkan akses ke file dengan ekstensi yang tidak tercantum untuk filter permintaan.
- Apakah akan mengizinkan permintaan yang menggunakan kata kerja HTTP yang tidak tercantum.
- Apakah akan mengizinkan permintaan yang berisi karakter bit tinggi (non-ASCII).
- Apakah akan mengizinkan permintaan yang dikodekan ganda.
- Panjang maksimum konten yang diminta.
- Panjang maksimum URL.
- Ukuran maksimum string kueri.
Untuk mengonfigurasi opsi filter permintaan umum dengan menggunakan UI
- Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
- Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
- Di panel Tindakan , klik Edit Pengaturan Fitur.
- 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
- Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
- Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
- Pilih tab Ekstensi Nama File.
- Di panel Tindakan , klik Izinkan Ekstensi Nama File atau Tolak Ekstensi Nama File.
- 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:
- Pindai URL permintaan.
- Pindai string kueri yang terkandung dalam URL.
- Pindai bidang header tertentu.
- Tentukan ekstensi nama file apa yang diterapkan filter.
- Tentukan string yang ingin Anda tolak.
Untuk mengonfigurasi aturan pemfilteran dengan menggunakan UI
- Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
- Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
- Pilih tab Aturan .
- Di panel Tindakan , klik dua kali Tambahkan Aturan Pemfilteran.
- Dalam kotak Nama , ketik nama untuk aturan pemfilteran.
- Jika Anda ingin URL dipindai, pilih kotak centang Url Pemindaian.
- Jika Anda ingin string kueri dipindai, pilih kotak centang Pindai string kueri.
- Di bawah Pindai Header, ketik satu atau beberapa header untuk dipindai.
- Di bawah Berlaku Untuk, ketik satu atau beberapa ekstensi nama file yang diterapkan aturan.
- Di bawah Tolak String, ketik satu atau beberapa string yang ingin Anda tolak.
- Klik OK.
Segmen Tersembunyi
Fitur ini memungkinkan Anda menolak permintaan yang berisi segmen URL (misalnya, nama folder).
Untuk mengonfigurasi segmen tersembunyi dengan menggunakan UI
- Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
- Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
- Pilih tab Segmen Tersembunyi.
- Di panel Tindakan , klik Tambahkan Segmen Tersembunyi.
- 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
- Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
- Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
- Pilih tab URL .
- Di panel Tindakan, pilih Izinkan URL atau Tolak Urutan.
- 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
- Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
- Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
- Pilih tab Kata Kerja HTTP.
- Di panel Tindakan, klik Izinkan Kata Kerja atau Tolak Kata Kerja.
- 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
- Buka Manajer IIS dan pilih tingkat yang ingin Anda konfigurasikan filter permintaannya.
- Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
- Pilih tab Header , dan klik Tambahkan Header.
- Dalam kotak Header , ketik nama bidang header.
- Dalam kotak Batas Ukuran, ketik bilangan bulat positif yang mewakili batas ukuran header dalam byte.
- 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
- Buka Manajer IIS dan pilih tingkat tempat Anda ingin mengonfigurasi pemfilteran permintaan.
- Di Tampilan Fitur, klik dua kali Pemfilteran Permintaan.
- Pilih tab String Kueri, dan klik Izinkan String Kueri atau Tolak String Kueri.
- Dalam kotak String kueri , ketik string kueri.
- 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 |