Bagikan melalui


Layanan dan RPC/TCP

Dimulai dengan Windows Vista, manajer kontrol layanan (SCM) mendukung panggilan prosedur jarak jauh melalui Protokol Kontrol Transmisi (RPC/TCP) dan pipa bernama (RPC/NP). Fungsi SCM sisi klien menggunakan RPC/TCP secara default.

RPC/TCP sesuai untuk sebagian besar aplikasi yang menggunakan fungsi SCM dari jarak jauh, seperti administrasi jarak jauh atau alat pemantauan. Namun, untuk kompatibilitas dan performa, beberapa aplikasi mungkin perlu menonaktifkan RPC/TCP dengan mengatur nilai registri yang dijelaskan dalam topik ini.

Ketika layanan memanggil fungsi SCM jarak jauh, SCM sisi klien terlebih dahulu mencoba menggunakan RPC/TCP untuk berkomunikasi dengan SCM sisi server. Jika server menjalankan versi Windows yang mendukung RPC/TCP dan mengizinkan lalu lintas RPC/TCP, koneksi RPC/TCPP akan berhasil. Jika server menjalankan versi Windows yang tidak mendukung RPC/TCP, atau mendukung RPC/TCP tetapi beroperasi di belakang firewall yang hanya memungkinkan lalu lintas pipa bernama, waktu koneksi RPC/TCP habis dan SCM mencoba kembali koneksi dengan RPC/NP. Ini akan berhasil pada akhirnya tetapi dapat memakan waktu (biasanya lebih dari 20 detik), menyebabkan fungsi OpenSCManager tampak diblokir.

TCP tidak membawa kredensial pengguna yang ditentukan dengan perintah penggunaan bersih . Oleh karena itu, jika RPC/TCP diaktifkan dan sc.exe digunakan untuk mencoba mengakses layanan yang ditentukan, perintah dapat gagal dengan akses ditolak. Menonaktifkan RPC/TCP di sisi klien menyebabkan perintah sc.exe menggunakan pipa bernama yang memang membawa kredensial pengguna, sehingga perintah akan berhasil. Untuk informasi tentang sc.exe, lihat Mengontrol Layanan Menggunakan SC.

Catatan

Layanan tidak boleh memberikan kredensial eksplisit ke perintah penggunaan bersih , karena kredensial tersebut mungkin secara tidak sengaja dibagikan di luar batas layanan. Sebagai gantinya, layanan harus menggunakan peniruan klien untuk meniru pengguna.

 

Nilai Registri RPC/TCP

RPC/TCP dikontrol oleh nilai registri SCMApiConnectionParam, DisableRPCOverTCP, dan DisableRemoteScmEndpoints, yang semuanya berada di bawah kunciKontrolHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\. Semua nilai ini memiliki jenis data REG_DWORD. Prosedur berikut menunjukkan cara menggunakan nilai registri ini untuk mengontrol RPC/TCP.

Prosedur berikut menjelaskan cara menonaktifkan RPC/TCP di sisi klien.

Untuk menonaktifkan RPC/TCP di sisi klien

  1. Gabungkan nilai registri SCMApiConnectionParam dengan nilai masker 0x80000000.
  2. Mulai ulang aplikasi yang memanggil fungsi OpenSCManager .

Prosedur berikut menjelaskan cara menonaktifkan TCP di sisi server.

Untuk menonaktifkan TCP di sisi server

  1. Atur nilai registri DisableRPCOverTCP ke 1.
  2. Mulai ulang server.

Prosedur berikut menjelaskan cara menonaktifkan RPC/TCP dan RPC/NP di server (misalnya, untuk mengurangi permukaan serangan).

Untuk menonaktifkan RPC/TCP dan RPC/NP di server

  1. Atur nilai registri DisableRemoteScmEndpoints ke 1.
  2. Mulai ulang server.

Nilai registri SCMApiConnectionParam juga dapat digunakan untuk menentukan interval batas waktu RPC/TCP, dalam milidetik. Misalnya, nilai 30.000 menentukan interval waktu habis 30 detik. Defaultnya adalah 21.000 (21 detik).