Operasi WFP
Windows Filtering Platform (WFP) melakukan tugas-tugasnya dengan mengintegrasikan entitas dasar berikut: Lapisan, Filter, Shim, dan Callout.
Lapisan
Lapisan adalah kontainer yang dikelola oleh mesin filter yang fungsinya adalah mengatur filter ke dalam set. Lapisan bukan modul dalam tumpukan jaringan. Setiap lapisan memiliki skema yang menentukan jenis filter yang dapat ditambahkan ke dalamnya. Lihat Kondisi Pemfilteran yang Tersedia di Setiap Lapisan Pemfilteran untuk informasi selengkapnya.
Lapisan mungkin berisi sub-lapisan untuk mengelola persyaratan filter yang bertentangan seperti "Blokir port TCP di atas 1024" dan "Buka port 1080". Aturan untuk mengelola konflik pemfilteran ditentukan oleh Arbitrase Filter.
WFP berisi sekumpulan sub-lapisan bawaan. Setiap lapisan mewarisi semua sub-lapisan bawaan. Pengguna juga dapat menambahkan sub-lapisan mereka sendiri.
Daftar lapisan mesin filter disediakan di bagian referensi topik Pemfilteran Pengidentifikasi Lapisan.
Filter
Filter adalah aturan yang cocok dengan paket masuk atau keluar. Aturan ini memberi tahu mesin pemfilteran apa yang harus dilakukan dengan paket, termasuk memanggil modul callout untuk pemeriksaan paket atau aliran yang mendalam. Misalnya, filter dapat menentukan "Blokir lalu lintas dengan port TCP yang lebih besar dari 1024" atau "Panggil ke IDS untuk semua lalu lintas yang tidak diamankan."
Filter waktu boot adalah filter yang diberlakukan pada waktu boot segera setelah driver tumpukan TCP/IP (tcpip.sys) dimulai. Filter waktu boot dinonaktifkan saat BFE dimulai. Filter ditandai sebagai waktu boot dengan mengatur bendera FWPM_FILTER_FLAG_BOOTTIME saat FwpmFilterAdd0 dipanggil.
Filter run-time adalah filter yang diberlakukan setelah BFE dimulai. Filter run-time dapat statis, dinamis, atau persisten tergantung pada cara pembuatannya. Lihat Manajemen Objek untuk informasi selengkapnya tentang berbagai jenis filter run-time dan masa pakainya.
Shims
Shim adalah komponen mode kernel yang membuat keputusan pemfilteran dengan mengklasifikasikan terhadap lapisan mesin filter. Setiap shim mengklasifikasikan terhadap satu atau beberapa lapisan. Misalnya, shim Modul Lapisan Transportasi mengklasifikasikan terhadap lapisan Transportasi Masuk, lapisan Transportasi Keluar, dan lapisan ALE Connect dan Receive-Accept untuk paket pertama alur.
Saat paket, aliran, dan peristiwa melintasi tumpukan jaringan, shim mengurainya untuk mengekstrak kondisi dan nilai yang dapat diklasifikasikan, lalu memanggil ke mesin filter untuk mengevaluasinya terhadap filter dalam lapisan tertentu. Mesin filter dapat memanggil satu atau beberapa callout sebagai bagian dari klasifikasi. Shim melakukan penghilangan paket, aliran, dan peristiwa aktual berdasarkan hasil klasifikasi yang dilakukan oleh mesin filter.
Callouts
Callout adalah sekumpulan fungsi yang diekspos oleh driver dan digunakan untuk pemfilteran khusus. Mereka digunakan untuk melakukan analisis dan manipulasi paket, seperti pemindaian virus, kontrol orang tua memindai konten yang tidak pantas, penguraian data paket untuk alat pemantauan. Beberapa callout, seperti driver Network Address Translation (NAT), dibangun ke dalam sistem operasi. Lainnya, seperti callout Http Parental Control atau callout Intrusion Detection System (IDS), dapat disediakan oleh vendor perangkat lunak independen (ISV). Fungsi callout dipanggil oleh mesin filter saat filter callout yang sesuai dicocokkan pada lapisan tertentu.
Callout dapat didaftarkan di salah satu lapisan WFP mode kernel. Callout dapat mengembalikan tindakan ("Blokir", "Izin", dan, saat melakukan inspeksi aliran, "Tangguhkan", "Perlu lebih banyak data", "Hilangkan koneksi") dan dapat memodifikasi serta mengamankan lalu lintas jaringan masuk dan keluar.
Setelah callout terdaftar di mesin filter, callout dapat menerima lalu lintas jaringan untuk diproses. Lalu lintas mungkin paket, aliran, atau peristiwa tergantung pada lapisannya. Aplikasi atau agen firewall menyebabkan lalu lintas diteruskan ke callout dengan menambahkan filter yang tindakannya adalah "Callout" dan yang ID callout-nya adalah pengidentifikasi callout tersebut. Callout dapat menginstruksikan mesin filter untuk mengembalikan "Blokir" atau "Izin" ke shim. Callout juga dapat mengembalikan "Lanjutkan" untuk memungkinkan filter lain memproses paket.
Beberapa callout dapat diekspos oleh satu driver callout.
Callout perlu ditambahkan (dengan FwpmCalloutAdd0) dan terdaftar (dengan FwpsCalloutRegister) sebelum dapat digunakan. Panggilan ke FwpmCalloutAdd0 diperlukan sebelum pembuatan filter yang mereferensikan callout. Panggilan ke FwpsCalloutRegister diperlukan sebelum WFP dapat memanggil callout saat filter callout dicocokkan. Secara default filter yang mereferensikan callout yang telah ditambahkan tetapi belum terdaftar di mesin filter diperlakukan sebagai filter "Blokir". Urutan panggilan FwpmCalloutAdd0 dan FwpsCalloutRegister tidak masalah. Callout persisten perlu ditambahkan hanya sekali dan perlu didaftarkan setiap kali driver yang mengimplementasikan callout dimulai (misalnya, setelah boot ulang).
Klasifikasi
Klasifikasi adalah proses penerapan filter ke lalu lintas jaringan (paket, streaming, atau peristiwa) untuk menentukan hasil "Izin" atau "Blokir" untuk lalu lintas tersebut. Untuk satu paket, streaming, atau peristiwa ada satu panggilan klasifikasi per lapisan.
Selama klasifikasi, properti (misalnya, alamat sumber) paket, streaming, atau peristiwa dibandingkan dengan kondisi filter yang diatur pada filter di lapisan tempat klasifikasi dipanggil. Ketika kecocokan ditemukan, algoritma Arbitrase Filter digunakan untuk menentukan hasil proses klasifikasi.
Permintaan klasifikasi dipicu oleh shim.
Tindakan klasifikasi dapat berupa:
- Izin
- Blokir
- Boks keterangan
- Izin
- Blokir
- Lanjutkan
- Menunda
- Perlu lebih banyak data
- Hilangkan koneksi
Operasi WFP
Pada waktu boot, segera setelah driver tumpukan TCP/IP (tcpip.sys) dimulai, mesin filter mode kernel memberlakukan kebijakan keamanan sistem melalui filter waktu boot.
Setelah Mesin Pemfilteran Dasar (BFE) dimulai dalam mode pengguna, filter persisten ditambahkan ke platform, filter waktu boot dinonaktifkan, dan pemberitahuan dikirim ke driver callout yang berlangganan menggunakan FwpmBfeStateSubscribeChanges0. Pemberitahuan dikirim segera setelah inisialisasi BFE selesai. Platform sekarang siap untuk callout didaftarkan dan untuk objek run-time ditambahkan.
Transisi dari waktu boot ke filter persisten bisa beberapa detik, atau bahkan lebih lama pada mesin yang lambat. Ini atomik, jadi jika penyedia memiliki waktu boot dan filter persisten, tidak akan pernah ada jendela ketika tidak ada yang berlaku.
Setelah BFE dimulai, filter run-time dapat ditambahkan oleh agen firewall, atau oleh solusi firewall kustom. BFE memproses filter ini dan mengirimkannya ke lapisan mesin filter yang sesuai untuk penegakan. BFE juga menerima pengaturan autentikasi dan mengirim pengaturan ini ke modul kunci IPsec (IKE/AuthIP). Lihat Konfigurasi IPsec untuk informasi selengkapnya.
Kapan saja, filter dan pengaturan autentikasi dapat ditambahkan, dihapus, atau diubah dalam sistem melalui antarmuka RPC yang diekspos oleh BFE. Sub-lapisan dan modul callout juga dapat ditambahkan atau dihapus.
Aliran data:
- Paket masuk ke tumpukan jaringan.
- Tumpukan jaringan menemukan dan memanggil shim.
- Shim memanggil proses klasifikasi pada lapisan tertentu.
- Selama klasifikasi, filter dicocokkan dan tindakan yang dihasilkan diambil. (Lihat Arbitrase Filter.)
- Jika ada filter callout yang cocok selama proses klasifikasi, callout yang sesuai akan dipanggil.
- Shim bertindak pada keputusan pemfilteran akhir (misalnya, menjatuhkan paket).
Aliran data keluar mengikuti pola yang sama.
Topik berikut menjelaskan lebih lanjut pengoperasian WFP.
Topik terkait