Bagikan melalui


Mengategorikan penyedia dan aplikasi layanan berlapis

Catatan

Penyedia Layanan Berlapis tidak digunakan lagi. Dimulai dengan Windows 8 dan Windows Server 2012, gunakan Windows Filtering Platform.

 

Winsock 2 mengakomodasi protokol berlapis. Protokol berlapis adalah protokol yang hanya mengimplementasikan fungsi komunikasi tingkat yang lebih tinggi, sambil mengandalkan tumpukan transportasi yang mendasar untuk pertukaran data aktual dengan titik akhir jarak jauh. Contoh protokol berlapis atau penyedia layanan berlapis adalah lapisan keamanan yang menambahkan protokol ke proses pembentukan koneksi untuk melakukan autentikasi dan untuk menetapkan skema enkripsi yang disepakati bersama. Protokol keamanan seperti itu umumnya akan memerlukan layanan protokol transportasi yang andal seperti TCP atau SPX. Istilah protokol dasar yang diterapkan oleh penyedia dasar mengacu pada penyedia Winsock yang menerapkan protokol seperti TCP atau SPX yang mampu melakukan komunikasi data dengan titik akhir jarak jauh. Istilah protokol berlapis digunakan untuk menjelaskan protokol yang tidak dapat berdiri sendiri. Protokol berlapis ini dipasang sebagai Penyedia Layanan Berlapis Winsock (LSP).

Contoh LSP adalah Penyedia Layanan Klien Microsoft Firewall yang diinstal sebagai bagian dari Internet Security and Authentication Server (ISA) pada klien. Penyedia Layanan Klien Microsoft Firewall menginstal melalui penyedia dasar Winsock untuk TCP dan UDP. Pustaka tautan dinamis (DLL) dalam perangkat lunak Klien FIREWALL ISA menjadi penyedia layanan berlapis Winsock yang digunakan semua aplikasi Winsock secara transparan. Dengan cara ini, ISA Firewall Client LSP dapat mencegat panggilan fungsi Winsock dari aplikasi klien dan kemudian merutekan permintaan ke penyedia layanan dasar asli jika tujuannya lokal atau ke layanan Firewall di komputer ISA Server jika tujuannya jarak jauh. LSP serupa diinstal sebagai bagian dari Microsoft Forefront Firewall Service dan Klien Threat Management Gateway (TMG) pada klien.

Selama inisialisasi LSP, LSP harus menyediakan pointer ke sejumlah fungsi Winsock Service Provider Interface (SPI). Fungsi-fungsi ini akan dipanggil selama pemrosesan normal oleh lapisan tepat di atas LSP (baik LSP lain atau Ws2_32.DLL).

Dimungkinkan untuk menentukan kategori LSP berdasarkan subset fungsi SPI yang diterapkan LSP dan sifat pemrosesan tambahan yang dilakukan untuk masing-masing fungsi tersebut. Dengan mengklasifikasikan LSP, serta mengklasifikasikan aplikasi yang menggunakan soket Winsock, menjadi mungkin untuk secara selektif menentukan apakah LSP harus terlibat dalam proses tertentu pada runtime.

Pada Windows Vista dan yang lebih baru, metode baru disediakan untuk mengategorikan Penyedia Layanan Berlapis Winsock dan aplikasi sehingga hanya LSP tertentu yang akan dimuat. Ada beberapa alasan untuk menambahkan fitur-fitur ini.

Salah satu alasan utamanya adalah bahwa proses penting sistem tertentu seperti winlogon dan lsass membuat soket, tetapi proses ini tidak menggunakan soket ini untuk mengirim lalu lintas apa pun di jaringan. Jadi sebagian besar LSP tidak boleh dimuat ke dalam proses ini. Sejumlah kasus juga telah didokumentasikan di mana LSP buggy dapat menyebabkan lsass.exe crash. Jika lsass crash, sistem memaksa pematian. Efek samping dari proses sistem ini memuat LSP adalah bahwa proses ini tidak pernah keluar sehingga ketika LSP diinstal atau dihapus, reboot diperlukan.

Alasan sekunder adalah bahwa ada beberapa kasus di mana aplikasi mungkin tidak ingin memuat LSP tertentu. Misalnya, beberapa aplikasi mungkin tidak ingin memuat LSP kriptografi yang dapat mencegah aplikasi berkomunikasi dengan sistem lain yang tidak menginstal LSP cyptographic.

Terakhir, kategori LSP dapat digunakan oleh LSP lain untuk menentukan di mana dalam rantai protokol Winsock mereka harus menginstal sendiri. Selama bertahun-tahun, berbagai pengembang LSP menginginkan cara untuk mengetahui bagaimana LSP akan berulah. Misalnya, LSP yang memeriksa aliran data ingin berada di atas LSP yang mengenkripsi data. Tentu saja, metode kategorisasi LSP ini bukan bukti bodoh karena mengandalkan LSP pihak ketiga untuk mengategorikan diri mereka dengan tepat.

Kategorisasi LSP dan peningkatan keamanan lainnya di Windows Vista dan yang lebih baru dirancang untuk membantu mencegah pengguna menginstal LSP berbahaya secara tidak sengaja.

Kategori LSP

Pada Windows Vista dan yang lebih baru, LSP dapat diklasifikasikan berdasarkan bagaimana ia berinteraksi dengan panggilan dan data Windows Sockets. Kategori LSP adalah grup perilaku yang dapat diidentifikasi pada subset fungsi Winsock SPI. Misalnya, filter konten HTTP akan dikategorikan sebagai pemeriksa data (kategori LSP_INSPECTOR). Kategori LSP_INSPECTOR akan memeriksa (tetapi tidak mengubah) parameter ke fungsi SPI transfer data. Aplikasi dapat meminta kategori LSP dan memilih untuk tidak memuat LSP berdasarkan kategori LSP dan serangkaian kategori LSP yang diizinkan aplikasi.

Tabel berikut mencantumkan kategori tempat LSP dapat diklasifikasikan.

Kategori LSP Deskripsi
LSP_CRYPTO_COMPRESS LSP adalah penyedia kriptografi atau kompresi data.
LSP_FIREWALL LSP adalah penyedia firewall.
LSP_LOCAL_CACHE LSP adalah penyedia cache lokal.
LSP_INBOUND_MODIFY LSP memodifikasi data masuk.
LSP_INSPECTOR LSP memeriksa atau memfilter data.
LSP_OUTBOUND_MODIFY LSP memodifikasi data keluar.
LSP_PROXY LSP bertindak sebagai proksi dan mengalihkan paket.
LSP_REDIRECTOR LSP adalah pengalih jaringan.
LSP_SYSTEM LSP dapat diterima untuk digunakan dalam layanan dan proses sistem.

 

LSP mungkin termasuk dalam lebih dari satu kategori. Misalnya, firewall/keamanan LSP dapat termasuk dalam kategori pemeriksa (LSP_INSPECTOR) dan firewall (LSP_FIREWALL).

Jika LSP tidak memiliki kumpulan kategori, LSP dianggap berada dalam kategori Semua Lainnya. Kategori LSP ini tidak akan dimuat dalam layanan atau proses sistem (misalnya, lsass, winlogon, dan banyak proses svchost).

Mengategorikan LSP

Beberapa fungsi baru tersedia di Windows Vista dan yang lebih baru untuk mengategorikan LSP:

Untuk mengategorikan LSP, fungsi WSCSetProviderInfo atau WSCSetProviderInfo32 dipanggil dengan GUID untuk mengidentifikasi entri tersembunyi LSP, kelas informasi yang akan diatur untuk entri protokol LSP ini, dan serangkaian bendera yang digunakan untuk memodifikasi perilaku fungsi.

Fungsi WSCGetProviderInfo atau WSCGetProviderInfo32 juga digunakan untuk mengambil data yang terkait dengan kelas informasi untuk LSP.

Mengategorikan Aplikasi

Beberapa fungsi baru tersedia di Windows Vista dan yang lebih baru untuk mengategorikan aplikasi:

Untuk mengategorikan aplikasi, fungsi WSCSetApplicationCategory dipanggil dengan jalur beban ke gambar yang dapat dieksekusi untuk mengidentifikasi aplikasi, argumen baris perintah yang digunakan saat memulai aplikasi, dan kategori LSP yang diizinkan untuk semua instans aplikasi ini.

Fungsi WSCGetApplicationCategory juga digunakan untuk mengambil kategori penyedia layanan berlapis (LSP) yang terkait dengan aplikasi.

Menentukan LSP mana yang dimuat

Bagian akhir dari kategorisasi LSP adalah menentukan LSP mana yang akan dimuat ke dalam proses mana. Ketika proses memuat Winsock, perbandingan berikut dibuat dari kategori aplikasi dan kategori LSP untuk semua LSP yang diinstal:

  • Jika aplikasi tidak dikategorikan, izinkan semua LSP dimuat ke dalam proses.
  • Jika aplikasi dan LSP telah menetapkan kategori, semua hal berikut harus benar:
    Setidaknya salah satu kategori LSP ada dalam kategori yang ditentukan aplikasi.
    Hanya kategori yang ditentukan dalam kategori yang ditentukan aplikasi yang ditentukan dalam kategori LSP. Misalnya, jika aplikasi menentukan kategori, aplikasi harus berada dalam kategori LSP.
    Jika kategori LSP_SYSTEM ada dalam kategori aplikasi, kategori tersebut harus ada dalam kategori LSP.

Catatan

Jika LSP tidak dikategorikan, kategorinya secara efektif nol. Agar kecocokan terjadi, semua kategori LSP yang ditentukan harus ada dalam kategori aplikasi (kategori aplikasi harus menjadi superset dari kategori LSP) dengan peringatan bahwa jika LSP_SYSTEM ada dalam kategori aplikasi, itu juga harus ada dalam kategori LSP.

 

Pertimbangkan contoh berikut:

Aplikasi Foo.exe dikategorikan sebagai LSP_SYSTEM + LSP_FIREWALL + LSP_CRYPTO_COMPRESS. Bar.exe aplikasi dikategorikan sebagai LSP_FIREWALL + LSP_CRYPTO_COMPRESS. Ada empat LSP yang diinstal pada sistem:

  • LSP1 telah menetapkan kategori LSP_SYSTEM.
  • LSP2 bukan kategori yang ditetapkan, jadi kategorinya nol.
  • LSP3 telah menetapkan kategori LSP_FIREWALL.
  • LSP4 telah menetapkan kategori LSP_SYSTEM + LSP_FIREWALL + LSP_CRYPTO_COMPRESS + LSP_INSPECTOR

Dalam contoh ini, aplikasi Foo.exe hanya akan memuat LSP1, sementara aplikasi Bar.exe akan memuat LSP3.

Menentukan Penyedia Winsock Terinstal

Kit Pengembangan Perangkat Lunak (SDK) Microsoft Windows menyertakan sampel program Winsock yang dapat digunakan untuk menentukan penyedia transportasi Winsock yang diinstal di komputer lokal. Secara default, kode sumber untuk sampel Winsock ini diinstal di direktori Windows SDK berikut untuk Windows 7:

C:\Program Files\Microsoft SDKs\Windows\v7.0\Samples\NetDs\winsock\LSP

Sampel ini adalah utilitas untuk menginstal dan menguji penyedia layanan berlapis. Tetapi juga dapat digunakan untuk mengumpulkan informasi terperinci secara terprogram dari katalog Winsock di komputer lokal. Untuk mencantumkan semua penyedia Winsock saat ini termasuk penyedia dasar dan penyedia layanan lapisan, buat sampel Winsock ini dan jalankan perintah konsol berikut:

instlsp -p

Output akan menjadi daftar penyedia Winsock yang diinstal pada komputer lokal termasuk penyedia layanan berlapis. Output mencantumkan ID katalog dan nama string untuk penyedia Winsock

Untuk mengumpulkan informasi lebih rinci tentang semua penyedia Winsock, jalankan perintah konsol berikut:

instlsp -p -v

Output akan menjadi daftar WSAPROTOCOL_INFO struktur yang didukung di komputer lokal.

Untuk daftar hanya penyedia layanan berlapis yang diinstal di komputer lokal, jalankan perintah konsol berikut:

instlsp -l

Untuk memetakan struktur LSP, jalankan perintah konsol berikut:

instlsp -m

Catatan

Fitur TDI tidak digunakan lagi dan akan dihapus di versi Microsoft Windows yang akan datang. Bergantung pada cara Anda menggunakan TDI, gunakan Winsock Kernel (WSK) atau Windows Filtering Platform (WFP). Untuk informasi selengkapnya tentang WFP dan WSK, lihat Platform Pemfilteran Windows dan Kernel Winsock. Untuk entri blog Windows Core Networking tentang WSK dan TDI, lihat Pengantar Winsock Kernel (WSK).