Bagikan melalui


Pemfilteran Permintaan IIS 7.0 dan Penulisan Ulang URL

oleh Ruslan Yakushev

IIS 7.0 ke atas mencakup modul pemfilteran permintaan yang didasarkan pada URLScan ISAPI Filter untuk IIS 6.0. Modul ini membantu Anda memperketat keamanan server Web Anda.

Tim IIS juga telah merilis modul penulisan ulang URL add-on untuk IIS, yang menyediakan fungsionalitas untuk manipulasi URL berbasis aturan. Meskipun tujuan utama modul penulisan ulang URL adalah untuk menulis ulang jalur URL untuk permintaan, modul penulisan ulang juga dapat digunakan sebagai alat penegakan keamanan yang membantu mencegah akses ke konten situs Web.

Artikel ini menjelaskan perbedaan antara kedua modul ini dan memberikan panduan untuk memilih untuk memperketat keamanan server Web Anda.

Meminta Pemfilteran dan Penulisan Ulang URL di Alur Pemrosesan Permintaan IIS

Pertama-tama, penting untuk memahami bagaimana modul pemfilteran permintaan dan modul penulisan ulang dicolokkan ke alur IIS. Diagram berikut menunjukkan urutan relatif dari dua modul ini:

Diagram proses pekerja untuk mendapatkan dari Permintaan H T T P dan Respons H T T P.

Modul pemfilteran permintaan berjalan di awal alur pemrosesan permintaan dengan menangani peristiwa BeginRequest. Modul mengevaluasi metadata permintaan, seperti header, string kueri, panjang konten, dll, untuk menentukan apakah metadata permintaan cocok dengan filter yang ada. Jika ada kecocokan, modul menghasilkan respons 404 (File Tidak Ditemukan) lalu pintasan sisa alur IIS.

Jika modul pemfilteran permintaan belum memfilter permintaan, permintaan diteruskan ke modul berikutnya dalam alur IIS, yang mungkin merupakan modul penulisan ulang URL. Modul penulisan ulang URL mengevaluasi permintaan terhadap aturan penulisan ulang. Jika aturan menghasilkan pengalihan, atau mengirim respons kustom atau membatalkan permintaan, modul penulisan ulang menghasilkan respons yang sesuai lalu pintasan sisa alur IIS.

Perhatikan bahwa modul pemfilteran permintaan ditempatkan sebelum modul penulisan ulang URL. Ini karena dalam arsitektur IIS, modul pemfilteran permintaan dianggap sebagai komponen penjaga gerbang yang melindungi server Web dari permintaan berbahaya. Modul penulisan ulang URL dianggap sebagai komponen manipulasi URL berbasis server yang berfungsi pada URL yang telah difilter oleh modul pemfilteran permintaan. Anda dapat menganggap penulisan ulang URL sebagai logika aplikasi berbasis server, mirip dengan aplikasi ASP.NET yang juga dapat melakukan penulisan ulang atau pengalihan. Pemfilteran permintaan adalah garis pertahanan pertama, sementara penulis ulang URL dapat menjadi hambatan keamanan kedua yang lebih spesifik untuk aplikasi. Untuk detail selengkapnya, lihat posting blog "Interaksi antara Penulis Ulang URL dan Modul Pemfilteran Permintaan untuk IIS7" di situs Web IIS.

Perbedaan Antara Pemfilteran Permintaan dan Penulisan Ulang URL

Perbedaan konseptual antara pemfilteran permintaan dan penulisan ulang URL adalah sebagai berikut:

  • Pemfilteran permintaan dirancang dan dioptimalkan murni untuk skenario keamanan.
  • Penulisan ulang URL dapat diterapkan untuk serangkaian skenario yang luas; skenario keamanan hanyalah subset dari ini.

Dengan mengingat hal tersebut, Anda dapat membandingkan fitur dari setiap modul yang dapat digunakan untuk skenario keamanan. Anda harus mempertimbangkan kategori berikut:

  1. Kriteria pemfilteran. Jenis input apa yang dapat digunakan untuk membuat keputusan tentang memblokir permintaan? Selain itu, kondisi apa yang dapat digunakan untuk mengekspresikan logika pemblokiran permintaan?
  2. Tindakan pemblokiran permintaan. Tindakan apa yang dapat dilakukan saat permintaan memenuhi kriteria pemfilteran?
  3. Dampak performa. Bagaimana mungkin meminta pemfilteran dan penulisan ulang URL memengaruhi performa server Web Anda?

Kriteria Pemfilteran

Tabel berikut ini mencantumkan kriteria pemfilteran yang mungkin dan menjelaskan bagaimana setiap modul mendukungnya.

Kriteria Didukung oleh modul pemfilteran permintaan? Didukung oleh modul penulisan ulang URL?
Pindai jalur URL yang diminta Ya, menggunakan pencarian substring Ya, menggunakan pola regex dan wildcard
Periksa panjang URL Ya Tidak
Memindai string kueri Tidak Ya, menggunakan pola regex dan wildcard
Periksa panjang string kueri Ya Tidak
Periksa kata kerja HTTP Ya Ya
Periksa panjang konten permintaan Ya Tidak
Memindai header HTTP Tidak Ya, menggunakan pola regex dan wildcard
Periksa panjang header HTTP Ya Tidak
Memindai variabel server Tidak Ya
Periksa alamat IP atau nama host pengirim Tidak* Ya

* Modul Pembatasan IP di IIS dapat digunakan untuk memblokir permintaan dari alamat IP dan nama host tertentu.

Tindakan Request-Blocking

Modul pemfilteran permintaan hanya memiliki satu tindakan, yang dilakukannya saat permintaan cocok dengan kriteria pemfilteran. Tindakannya adalah mengembalikan kode status 404 (File Tidak Ditemukan).

Modul penulisan ulang URL menyediakan serangkaian opsi yang jauh lebih luas jika permintaan harus diblokir, termasuk yang berikut ini:

  1. URL yang diminta dapat ditulis ulang ke beberapa URL lainnya. Misalnya, untuk mencegah hot-linking gambar, Anda dapat menulis ulang URL ke file gambar tempat penampung untuk setiap permintaan yang berasal dari domain pihak ketiga.
  2. Klien Web dapat dialihkan ke URL lain.
  3. Kode status HTTP pilihan Anda dapat dikirim ke klien Web. Misalnya, Anda dapat mengirim respons status 401 (Tidak sah) untuk permintaan yang cocok dengan kriteria pemfilteran tertentu.
  4. Permintaan HTTP dapat dibatalkan dengan menghilangkan koneksi soket. Dengan begitu, klien Web tidak mendapatkan informasi tentang server Web sama sekali.

Dampak Performa

Kedua modul telah diimplementasikan untuk memiliki dampak sesedikim mungkin pada performa server Web IIS. Namun, ada perbedaan performa penting berikut antara modul ini:

  • Modul penulisan ulang URL sangat bergantung pada pola ekspresi reguler. Mengevaluasi ekspresi reguler adalah operasi yang mahal, dan jika Anda menentukan banyak aturan penulisan ulang yang kompleks, Anda mungkin melihat dampak nyata pada throughput server Web Anda.
  • Modul pemfilteran permintaan tidak menggunakan ekspresi reguler atau pencocokan pola lainnya. Ini hanya melakukan pencarian substring, yang dapat memiliki dampak yang jauh lebih kecil pada throughput server Web.

Memilih Antara Pemfilteran Permintaan dan Penulisan Ulang URL

Jika Anda memilih antara pemfilteran permintaan dan penulisan ulang URL untuk memperketat keamanan server Web Anda, aturan umumnya adalah memulai dengan pemfilteran permintaan. Pemfilteran permintaan dioptimalkan untuk skenario keamanan dan set fiturnya kemungkinan besar akan cukup untuk menerapkan persyaratan keamanan Anda. Jika Anda memiliki persyaratan yang tidak dapat ditangani oleh modul pemfilteran permintaan, gunakan modul penulisan ulang URL untuk menerapkan persyaratan tersebut, dan biarkan sisa tugas keamanan ke modul pemfilteran permintaan. Dengan begitu Anda mengurangi dampak performa modul penulisan ulang URL dengan memiliki jumlah minimal aturan penulisan ulang agar server dapat diproses.