Menggunakan Pelacakan Koneksi yang Diproksi
Pelacakan koneksi yang diproksi didukung di windows versi Windows 8 dan yang lebih baru.
Fitur WFP ini memfasilitasi pelacakan "rekaman" pengalihan dari pengalihan awal koneksi ke koneksi akhir ke tujuan. WFP juga memungkinkan driver callout untuk mengalihkan koneksi.
Pelacakan Koneksi yang Diproksikan
Dengan adanya beberapa proksi (misalnya, dikembangkan oleh ISV yang berbeda) koneksi yang digunakan oleh satu pihak untuk berkomunikasi dengan tujuan akhir pada gilirannya dapat dialihkan oleh pihak ke-2; dan koneksi baru itu dapat kembali dialihkan oleh pihak asli. Tanpa pelacakan koneksi, koneksi asli mungkin tidak pernah mencapai tujuan akhirnya karena terjebak dalam perulangan proksi tak terbatas.
Penambahan pengidentifikasi Bidang Data untuk mendukung pelacakan koneksi meliputi:
FWPS_FIELD_Xxx_ALE_ORIGINAL_APP_ID
Jalur lengkap aplikasi asli untuk koneksi proksi. Jika aplikasi belum diproksi, jalur ini identik dengan xxx_ALE_APP_ID.
FWPS_FIELD_Xxx_PACKAGE_ID
Pengidentifikasi paket adalah pengidentifikasi keamanan (SID) yang mengidentifikasi proses AppContainer terkait.
Mengalihkan Koneksi
Driver callout memanggil fungsi FwpsRedirectHandleCreate0 untuk membuat handel yang dapat digunakan untuk mengalihkan koneksi TCP.
Bagian ini mencakup topik-topik berikut:
Menggunakan Handel Pengalihan
Mengkueri Status Pengalihan
Menggunakan Handel Pengalihan
Sebelum callout pengalihan koneksi ALE dapat mengalihkan koneksi ke proses lokal, ia harus mendapatkan handel pengalihan dengan fungsi FwpsRedirectHandleCreate0 dan meletakkan handel dalam struktur FWPS_CONNECT_REQUEST0 . Callout memodifikasi struktur di classifyFn untuk lapisan pengalihan koneksi ALE.
Struktur FWPS_CONNECT_REQUEST0 berisi anggota berikut untuk pengalihan:
Istilah | Deskripsi |
---|---|
localRedirectHandle |
Handel pengalihan yang dibuat driver callout dengan memanggil fungsi FwpsRedirectHandleCreate0 . |
localRedirectContext |
Area konteks driver callout yang dialokasikan driver callout dengan memanggil fungsi ExAllocatePoolWithTag . |
localRedirectContextSize |
Ukuran, dalam byte, dari area konteks yang disediakan callout. |
Setelah driver callout selesai menggunakan handel pengalihan, driver tersebut harus memanggil fungsi FwpsRedirectHandleDestroy0 untuk menghancurkan handel.
Mengkueri Status Pengalihan
Driver callout memanggil fungsi FwpsQueryConnectionRedirectState0 untuk mendapatkan status pengalihan koneksi. Enumerasi FWPS_CONNECTION_REDIRECT_STATE adalah jenis pengembalian untuk panggilan ke fungsi FwpsQueryConnectionRedirectState0 .
Jika status pengalihan FWPS_CONNECTION_NOT_REDIRECTED, callout ALE_CONNECT_REDIRECT dapat melanjutkan untuk memproksi koneksi.
Jika status pengalihan FWPS_CONNECTION_REDIRECTED_BY_SELF, callout ALE_CONNECT_REDIRECT harus mengembalikan FWP_ACTION_PERMIT/FWP_ACTION_CONTINUE.
Jika status pengalihan FWPS_CONNECTION_REDIRECTED_BY_OTHER, callout ALE_CONNECT_REDIRECT dapat melanjutkan untuk memproksi koneksi jika tidak mempercayai hasil pemeriksa lainnya.
Jika status pengalihan FWPS_CONNECTION_PREVIOUSLY_REDIRECTED_BY_SELF, callout ALE_CONNECT_REDIRECT tidak boleh melakukan pengalihan meskipun hasil inspektur lain tidak dapat diterima. Dalam hal ini, koneksi harus mengizinkan atau memblokir koneksi (pada lapisan ALE_AUTH_CONNECT).