Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il servizio RPC (Remote Procedure Call) rende sicure le interfacce RPC per impostazione predefinita per ridurre gli attacchi. La chiave del Registro di sistema RestrictRemoteClients
consente di modificare il comportamento di tutte le interfacce RPC nel sistema e può essere utilizzata per eliminare l'accesso anonimo remoto alle interfacce RPC nel sistema, con alcune eccezioni. È possibile applicare altri controlli dell'interfaccia usando la chiave del Registro di sistema EnableAuthEpResolution
illustrata in questo articolo. Sia gli sviluppatori di applicazioni RPC che gli amministratori di sistema possono configurare le restrizioni dell'interfaccia RPC.
Prerequisiti
Quando si usa RestrictRemoteClients
nel server:
I client RPC devono usare la sicurezza RPC quando si contattano le applicazioni server, che è il metodo migliore per attenuare le minacce alla sicurezza.
Esentare l'impostazione RPC dalla richiesta di autenticazione impostando il flag RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH durante la registrazione. In questo modo viene configurato RPC per consentire connessioni anonime alle applicazioni.
Mitigazione delle minacce RestrictRemoteClients
L'abilitazione RestrictRemoteClients
è utile per mitigare i worm che si basano su sovraccarichi del buffer sfruttabili che possono essere richiamati in remoto tramite connessioni anonime. Le applicazioni RPC che prevedono di ricevere chiamate da client RPC anonimi remoti potrebbero non essere eseguite correttamente quando si usa questa funzionalità. Di conseguenza, le applicazioni che usano DCOM (Distributed Component Object Model) potrebbero non funzionare correttamente se questo valore è impostato.
Le chiamate RPC che usano protocolli senza connessione hanno esito negativo se questa chiave è abilitata. Le chiamate RPC sicure su protocolli senza connessione, ad esempio UDP (User Datagram Protocol) e IPX (Internetwork Packet Exchange), usano un livello di sicurezza inferiore rispetto ai protocolli orientati alla connessione. In particolare, ncadg_ip_udp
e ncadg_ipx
sono considerati meno sicuri. Ai fini di questo criterio, queste chiamate sono sempre considerate non sicure.
Per consentire le chiamate client RPC tramite protocolli senza connessione, mantenere il valore RestrictRemoteClients
impostato su disabilitato.
Restrizioni per i client RPC
Quando un'interfaccia viene registrata tramite RpcServerRegisterIf
, RPC consente all'applicazione server di limitare l'accesso all'interfaccia tramite un callback di sicurezza. La chiave del Registro di sistema RestrictRemoteClients
impone a RPC di eseguire ulteriori controlli di sicurezza per tutte le interfacce, anche se queste non dispongono di un callback di sicurezza registrato.
I client RPC che usano la sequenza di protocollo named pipe (ncacn_np
) sono esenti da tutte le restrizioni descritte in questa sezione. La sequenza di protocollo named pipe non può essere limitata a causa di problemi significativi di compatibilità con le versioni precedenti.
RestrictRemoteClients
può essere controllata anche in modo programmatico nell'intestazione API (Application Programming Interface) rpcdce.h.
Configurazione di RestrictRemoteClients
Per modificare questi criteri usando l’editor dell’oggetto Criteri di gruppo:
Selezionare Start> digitare gpedit.msc> premere INVIO per aprire l'Editor Criteri di gruppo locali.
Per abilitare l'equivalente delle impostazioni
RestrictRemoteClients
, passare a Configurazione computer\Modelli amministrativi\Sistema\Chiamata di procedura remota\Restrizioni per client RPC non autenticati, quindi selezionare una delle opzioni seguenti:- Disabilitato: questa impostazione è il valore predefinito per gli SKU del server. Corrisponde al valore RPC_RESTRICT_REMOTE_CLIENT_NONE in rpcdce.h ed è responsabilità dell'applicazione server imporre restrizioni RPC appropriate.
- Autenticato : corrisponde al valore RPC_RESTRICT_REMOTE_CLIENT_DEFAULT in rpcdce.h. Consente solo ai client RPC autenticati di connettersi ai server RPC in esecuzione nel computer in cui viene applicata l'impostazione dei criteri. Il runtime RPC rifiuta le chiamate anonime. Se un'interfaccia registra un callback di sicurezza e fornisce il flag RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH, questa restrizione non si applica a tale interfaccia.
- Autenticato senza eccezioni1 : corrisponde al valore RPC_RESTRICT_REMOTE_CLIENT_HIGH in rpcdce.h. Consente solo ai client RPC autenticati di connettersi ai server RPC in esecuzione nel computer in cui viene applicata l'impostazione dei criteri. Non sono consentite eccezioni quando questo valore è impostato poiché il sistema non può ricevere chiamate anonime remote tramite RPC.
Per rendere effettive tutte le modifiche apportate a una di queste impostazioni, è necessario un riavvio del sistema.
Attenzione
¹Non usare questo valore senza test significativi. Per altre informazioni, vedere Restrizioni per i client RPC non autenticati.
AbilitaRisoluzioneAuthEp
La EnableAuthEpResolution
chiave consente al runtime del client RPC di usare NTLM (NT LAN Manager) per l'autenticazione al mapper dell'endpoint quando abilitato. Questa query autenticata viene eseguita solo se la chiamata al client RPC effettiva usa l'autenticazione RPC.
I client RPC effettuano chiamate a un server RPC che ha un endpoint dinamico registrato con l'autenticazione del client del mappatore di endpoint RPC abilitata. Queste chiamate vengono sottoposte a query per conto delle chiamate autenticate tramite l'autenticazione NTLM.
I client RPC che tentano di effettuare una chiamata usando un endpoint dinamico eseguono query sul mapper endpoint RPC nel server per determinare l'endpoint a cui deve connettersi. Questa query viene eseguita in modo anonimo, anche se la chiamata al client RPC viene effettuata usando la sicurezza RPC. L'interfaccia del mapper di endpoint RPC non è accessibile in modo anonimo se l'impostazione RestrictRemoteClients
è abilitata.
Configurazione di EnableAuthEpResolution
Per modificare questi criteri usando l’editor dell’oggetto Criteri di gruppo:
Selezionare Start> digitare gpedit.msc> premere INVIO per aprire l'Editor Criteri di gruppo locali.
Per abilitare l'equivalente delle impostazioni
EnableAuthEpResolution
, passare a Configurazione computer\Modelli amministrativi\Sistema\Chiamata procedura remota\Abilita autenticazione client di RPC Endpoint Mapper, quindi selezionare una delle due impostazioni disponibili:- Disabilitato: questa è l'impostazione predefinita. I client RPC non eseguono l'autenticazione al servizio Mapper endpoint, ma possono comunicare con il servizio Mapper endpoint in Windows NT4 Server.
- Abilitato: i client PC eseguono l'autenticazione tramite il Servizio Endpoint Mapper per le chiamate che contengono informazioni di autenticazione. I client che effettuano tali chiamate non sono in grado di comunicare con il servizio Mapper endpoint di Windows NT4 Server.
Per rendere effettive tutte le modifiche apportate a una di queste impostazioni, è necessario un riavvio del sistema.
Importante
Le impostazioni di Criteri di gruppo seguenti disponibili in Configurazione computer\Impostazioni di Windows\Impostazioni di sicurezza\Criteri locali\Opzioni di sicurezza non possono essere usate con EnableAuthEpResolution
:
- Sicurezza di rete: limitazione di NTLM; traffico NTML in ingresso – "Nega tutti gli account"
- Sicurezza di rete: limitazione di NTLM; traffico in uscita verso server remoti – "Nega tutto"
È consigliabile allontanarsi da NTLM per proteggere meglio l'ambiente. In caso di scelta tra la limitazione di NTLM e l'uso di EnableAuthEpResolution
, l'approccio consigliato consiste nel limitare NTLM nell'ambiente in uso.
Altri flag di registrazione dell'interfaccia RPC
Questi flag di registrazione dell'interfaccia vengono creati per semplificare la protezione di un'interfaccia RPC da parte di uno sviluppatore di applicazioni:
RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH
Quando questo flag viene registrato, il runtime RPC richiama il callback di sicurezza registrato per tutte le chiamate, indipendentemente dalle impostazioni di sicurezza delle chiamate. Senza questo flag, RPC rifiuta tutte le chiamate non autenticate prima che raggiungano il callback di sicurezza. Questo flag funziona solo quando viene registrato un callback di sicurezza.RPC_IF_SEC_NO_CACHE
Un callback di sicurezza è registrato su un'interfaccia per limitare l'accesso. In genere, il callback di sicurezza rappresenta il client per verificare se il client dispone di diritti sufficienti per effettuare una chiamata all'interfaccia. Una volta che un'identità client specifica supera il controllo di sicurezza, tende a superarlo anche nei tentativi successivi.Il runtime RPC sfrutta questo modello memorizzando quando una singola identità client passa un callback di sicurezza. Ignora quindi il callback di sicurezza per le chiamate successive da tale client alla stessa interfaccia. Questa funzionalità è denominata memorizzazione nella cache dei callback di sicurezza ed esiste dalla famiglia di sistemi operativi Microsoft Windows 2000. È possibile usare il flag RPC_IF_SEC_NO_CACHE per disabilitare la memorizzazione nella cache del callback di sicurezza per una determinata interfaccia. È utile se il controllo di sicurezza potrebbe cambiare, possibilmente rifiutando un'identità del client che in precedenza era consentita.
RPC_IF_LOCAL_ONLY
Quando un'interfaccia viene registrata con questo flag, RPC rifiuta le chiamate effettuate dai client RPC remoti. Inoltre, vengono rifiutate anche le chiamate locali su tutte lencadg_
* sequenze di protocollo e su tuttencacn_
* sequenze di protocollo (ad eccezione delle pipe denominate, usandoncacn_np
). Se viene effettuata una chiamata inncacn_np
, RPC consente la chiamata solo se non proviene da SRV (Service Location Protocol), che filtra tutte le chiamate remote. Le chiamateNcalrpc
sono sempre consentite.
L'uso di questi flag è a discrezione dello sviluppatore dell'applicazione. Gli sviluppatori di applicazioni RPC sono dotati di strumenti di sicurezza aggiuntivi per proteggere l'interfaccia RPC perché questi flag non modificano alcuna applicazione esistente o causano l'esecuzione non corretta.