Visual Studio lent només amb VPN? Comproveu CRL i OCSP
Quan s’aplica una política WDAC, un inici lent pot ser una consulta de revocació i no el túnel. Demostreu quin pas bloqueja abans de relaxar la política.
Visual Studio s’inicia normalment a casa, i després el mateix portàtil s’uneix al túnel corporatiu i cada inici es queda mig minut a la pantalla de càrrega. Traieu la política i el retard desapareix amb ella; traieu el túnel i passa el mateix. Totes dues observacions són exactes, i per això els dos components es culpen mútuament. La pregunta decisiva és si una consulta de revocació de certificat espera un camí que només ofereix el túnel, o si no en troba cap.
Mesureu l’obtenció, no l’inici
Una política WDAC, desplegada com a fitxer SiPolicy.p7b signat, decideix quines imatges es poden executar a la màquina. La integritat del codi valida la cadena de signatures d’una imatge abans de l’execució, i aquesta validació pot incloure una pregunta de revocació. La resposta depèn del punt de distribució de CRL o del respondedor OCSP que el certificat anomena al seu interior.
Són peticions de xarxa ordinàries, així que el seu cost depèn d’on viu el respondedor. Quan només és accessible pel túnel, o el seu nom només es resol mitjançant un servidor DNS darrere del túnel, la validació espera que el túnel estigui a punt. Visual Studio carrega en iniciar un gran nombre d’assemblatges i extensions signats, i un petit retard per imatge es converteix en una aturada visible. Res no està malmès i la política es comporta exactament com està configurada, i per això sembla que treure la política ho arregla.
Cada imatge signada pot desencadenar una crida de xarxa
Comenceu amb un binari signat que ja sigui al disc i demaneu a la plataforma que el verifiqui amb el mateix comportament d’obtenció que fa servir un inici. Executeu l’ordre una vegada al túnel i una altra fora, i després compareu les línies d’obtenció en lloc del veredicte final.
certutil -verify -urlfetch C:\Tools\Contoso.Editor.dll
nslookup ocsp.contoso.example
Test-NetConnection ocsp.contoso.example -Port 80
La sortida llista la cadena, les adreces CRL i OCSP i si cada obtenció ha tingut èxit. Un respondedor que es queda sense temps al túnel i respon fora és la prova que necessiteu, i pesa molt més que una impressió de lentitud. Si l’obtenció té èxit a poc a poc, anoteu l’adreça perquè el pas següent pugui provar aquell host directament.
Resoleu el nom de l’amfitrió del respondedor i proveu l’abast fora de l’aplicació, perquè un nom que no es resol mai no el repararà cap paràmetre del client. El registre operatiu de CodeIntegrity aporta l’altra meitat de la prova, lligant un esdeveniment de validació amb la marca de temps de l’inici lent.
Reduïu el retard sense treure el control
Desactivar la política o passar-la a mode d’auditoria fa desaparèixer el retard i treu el control que l’organització va desplegar, així que tracteu-ho com una reparació equivocada. Les opcions més estretes són un canvi d’encaminament perquè el respondedor sigui accessible pel túnel, una exclusió al túnel dividit per als amfitrions del respondedor, una correcció de DNS quan el nom es resol a una adreça inabastable, o un servidor intermediari de memòria cau admès per a les dades de revocació. Cadascuna té un propietari diferent: l’equip de PKI posseeix l’abast del respondedor, l’equip de xarxa posseeix la divisió del túnel i l’equip d’extrems posseeix la política.
Excloure cada amfitrió de revocació del túnel no és automàticament segur, ja que un respondedor intern pot ser intern a propòsit. Confirmeu l’exclusió amb l’equip que gestiona la PKI abans d’escriure una regla que envia silenciosament les comprovacions de certificats a la internet pública. Un canvi fet sense aquesta confirmació és del tipus que es reverteix a la següent actualització de la política.
Verifiqueu un inici en fred després del canvi
Mesureu un inici en fred en tots dos estats i guardeu els números, perquè un inici en calent no demostra gairebé res un cop els assemblatges són a la memòria cau. Repetiu l’inici des d’una sessió nova perquè el camí de càrrega de les extensions es torni a exercitar.
Get-WinEvent -LogName Microsoft-Windows-CodeIntegrity/Operational -MaxEvents 40 |
Where-Object { $_.TimeCreated -gt (Get-Date).AddMinutes(-10) }
Get-ChildItem C:\Windows\System32\CodeIntegrity\CiPolicies\Active
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
Una configuració reparada encara contacta el respondedor, o fa servir un camí de memòria cau que el vostre equip de PKI hagi aprovat, i el registre mostra que la validació es completa en lloc d’esgotar-se. Confirmeu que una aplicació signada recentment encara s’inicia, perquè una política que ho permet tot no és una reparació correcta. Comproveu també la carpeta de política activa i l’estat d’aplicació, perquè se sàpiga que la política que depureu és la que s’executa. Manteniu la cadena de certificats, l’adreça del respondedor i les marques de temps d’inici al mateix tiquet, perquè una renovació normalment mou el respondedor i deixa la regla d’exclusió o DNS obsoleta.