Kontrol akses (Platform Pemfilteran Windows)
Di Windows Filtering Platform (WFP), layanan Base Filtering Engine (BFE) mengimplementasikan model kontrol akses Windows standar berdasarkan token akses dan deskriptor keamanan.
Model kontrol akses
Deskriptor keamanan dapat ditentukan saat menambahkan objek WFP baru, seperti filter dan sub-lapisan. Deskriptor keamanan dikelola menggunakan fungsi manajemen WFP Fwpm*GetSecurityInfo0 dan Fwpm*SetSecurityInfo0, yang merupakan * singkatan dari nama objek WFP. Fungsi-fungsi ini secara semantik identik dengan fungsi Windows GetSecurityInfo dan SetSecurityInfo.
Catatan
Fungsi Fwpm*SetSecurityInfo0 tidak dapat dipanggil dari dalam transaksi eksplisit.
Catatan
Fungsi Fwpm*SetSecurityInfo0 hanya dapat dipanggil dari dalam sesi dinamis jika digunakan untuk mengelola objek dinamis yang dibuat dalam sesi yang sama.
Deskriptor keamanan default untuk mesin filter (objek Mesin akar dalam diagram di bawah) adalah sebagai berikut.
- Memberikan hak akses GENERIC_ALL (GA) ke grup Administrator bawaan.
- Memberikan hak akses GENERIC_WRITE (GW) GENERIC_EXECUTE GENERIC_WRITE (GW) GENERIC_READ (GX) ke operator konfigurasi jaringan.
- Berikan hak akses GRGWGX kepada pengidentifikasi keamanan layanan (SSID) berikut: MpsSvc (Windows Firewall), NapAgent (Network Access Protection Agent), PolicyAgent (IPsec Policy Agent), RpcSs (Remote Procedure Call), dan WdiServiceHost (Diagnostic Service Host).
- Berikan FWPM_ACTRL_OPEN dan FWPM_ACTRL_CLASSIFY untuk semua orang. (Ini adalah hak akses khusus WFP, yang dijelaskan dalam tabel di bawah ini.)
Deskriptor keamanan default yang tersisa diturunkan melalui pewarisan.
Ada beberapa pemeriksaan akses, seperti untuk panggilan fungsi Fwpm*Add0, Fwpm*CreateEnumHandle0, Fwpm*SubscribeChanges0 , yang tidak dapat dilakukan pada tingkat objek individual. Untuk fungsi-fungsi ini, ada objek kontainer untuk setiap jenis objek. Untuk jenis objek standar (misalnya, penyedia, callout, filter), fungsi Fwpm*GetSecurityInfo0 dan Fwpm*SetSecurityInfo0 yang ada kelebihan beban, sehingga parameter GUID null mengidentifikasi kontainer terkait. Untuk jenis objek lainnya (misalnya, peristiwa jaringan dan asosiasi keamanan IPsec), ada fungsi eksplisit untuk mengelola informasi keamanan kontainer.
BFE mendukung pewarisan otomatis entri kontrol akses (DACL) Daftar Kontrol Akses Diskresi (DACL). BFE tidak mendukung ACE Daftar Kontrol Akses Sistem (SACL). Objek mewarisi ACE dari kontainernya. Kontainer mewarisi ACE dari mesin filter. Jalur penyebaran ditunjukkan pada diagram di bawah ini.
Untuk jenis objek standar, BFE memberlakukan semua hak akses generik dan standar. Selain itu, WFP mendefinisikan hak akses spesifik berikut.
Akses WFP kanan | Deskripsi |
---|---|
FWPM_ACTRL_ADD |
Diperlukan untuk menambahkan objek ke kontainer. |
FWPM_ACTRL_ADD_LINK |
Diperlukan untuk membuat asosiasi ke objek. Misalnya, untuk menambahkan filter yang mereferensikan callout, pemanggil harus memiliki akses ADD_LINK ke callout. |
FWPM_ACTRL_BEGIN_READ_TXN |
Diperlukan untuk memulai transaksi baca eksplisit. |
FWPM_ACTRL_BEGIN_WRITE_TXN |
Diperlukan untuk memulai transaksi tulis eksplisit. |
FWPM_ACTRL_CLASSIFY |
Diperlukan untuk mengklasifikasikan terhadap lapisan mode pengguna. |
FWPM_ACTRL_ENUM |
Diperlukan untuk menghitung objek dalam kontainer. Namun, enumerator hanya mengembalikan objek tempat pemanggil memiliki akses FWPM_ACTRL_READ. |
FWPM_ACTRL_OPEN |
Diperlukan untuk membuka sesi dengan BFE. |
FWPM_ACTRL_READ |
Diperlukan untuk membaca properti objek. |
FWPM_ACTRL_READ_STATS |
Diperlukan untuk membaca statistik. |
FWPM_ACTRL_SUBSCRIBE |
Diperlukan untuk berlangganan pemberitahuan. Pelanggan hanya akan menerima pemberitahuan untuk objek yang aksesnya FWPM_ACTRL_READ. |
FWPM_ACTRL_WRITE |
Diperlukan untuk mengatur opsi mesin. |
BFE melewati semua pemeriksaan akses untuk pemanggil mode kernel.
Untuk mencegah administrator mengunci diri dari BFE, anggota grup administrator bawaan selalu diberikan FWPM_ACTRL_OPEN ke objek mesin. Dengan demikian, administrator dapat mendapatkan kembali akses melalui langkah-langkah berikut.
- Aktifkan hak istimewa SE_TAKE_OWNERSHIP_NAME .
- Hubungi FwpmEngineOpen0. Panggilan berhasil karena penelepon adalah anggota Administrator Bawaan.
- Ambil kepemilikan objek mesin. Ini berhasil karena pemanggil memiliki hak istimewa SE_TAKE_OWNERSHIP_NAME .
- Perbarui DACL. Ini berhasil karena pemilik selalu memiliki akses WRITE_DAC
Karena BFE mendukung audit kustomnya sendiri, BFE tidak menghasilkan audit akses objek generik. Dengan demikian, SACL diabaikan.
Hak Akses yang Diperlukan WFP
Tabel di bawah ini menunjukkan hak akses yang diperlukan oleh fungsi WFP untuk mengakses berbagai objek platform pemfilteran. Fungsi FwpmFilter* tercantum sebagai contoh untuk mengakses objek standar. Semua fungsi lain yang mengakses objek standar mengikuti model akses fungsi FwpmFilter* .
Function | Objek dicentang | Akses diperlukan |
---|---|---|
FwpmEngineOpen0 | Mesin | FWPM_ACTRL_OPEN |
FwpmEngineGetOption0 | Mesin | FWPM_ACTRL_READ |
FwpmEngineSetOption0 | Mesin | FWPM_ACTRL_WRITE |
FwpmSessionCreateEnumHandle0 | Mesin | FWPM_ACTRL_ENUM |
FwpmTransactionBegin0 | Mesin | FWPM_ACTRL_BEGIN_READ_TXN &FWPM_ACTRL_BEGIN_WRITE_TXN |
FwpmFilterAdd0 | Penyedia Kontainer Lapisan Sub-Lapisan Boks keterangan Konteks Penyedia |
FWPM_ACTRL_ADDFWPM_ACTRL_ADD_LINK FWPM_ACTRL_ADD_LINK FWPM_ACTRL_ADD_LINK FWPM_ACTRL_ADD_LINK FWPM_ACTRL_ADD_LINK |
FwpmFilterDeleteById0 FwpmFilterDeleteByKey0 |
Filter | DELETE |
FwpmFilterGetById0 FwpmFilterGetByKey0 |
Filter | FWPM_ACTRL_READ |
FwpmFilterCreateEnumHandle0 | Filter Kontainer |
FWPM_ACTRL_ENUMFWPM_ACTRL_READ |
FwpmFilterSubscribeChanges0 | Kontainer | FWPM_ACTRL_SUBSCRIBE |
FwpmFilterSubscriptionsGet0 | Kontainer | FWPM_ACTRL_READ |
IPsecGetStatistics0 | IPsec SA DB | FWPM_ACTRL_READ_STATS |
IPsecSaContextCreate0 IPsecSaContextGetSpi0 IPsecSaContextAddInbound0 IPsecSaContextAddOutbound0 |
IPsec SA DB | FWPM_ACTRL_ADD |
IPsecSaContextDeleteById0 IPsecSaContextExpire0 |
IPsec SA DB | DELETE |
IPsecSaContextGetById0 | IPsec SA DB | FWPM_ACTRL_READ |
IPsecSaContextCreateEnumHandle0 IPsecSaCreateEnumHandle0 |
IPsec SA DB | FWPM_ACTRL_ENUM &FWPM_ACTRL_READ |
IkeextGetStatistics0 | IKE SA DB | FWPM_ACTRL_READ_STATS |
IkeextSaDeleteById0 | IKE SA DB | DELETE |
IkeextSaGetById0 | IKE SA DB | FWPM_ACTRL_READ |
IkeextSaCreateEnumHandle0 | IKE SA DB | FWPM_ACTRL_ENUM &FWPM_ACTRL_READ |
FwpmNetEventCreateEnumHandle0 | Kontainer | FWPM_ACTRL_ENUM |
FwpmIPsecTunnelAdd0 FwpmIPsecTunnelDeleteByKey0 |
Tidak ada pemeriksaan akses tambahan di luar yang ada untuk filter individual dan konteks penyedia |