Visual Studio hidas vain VPN:ssä? Tarkista CRL ja OCSP
Kun WDAC-käytäntöä valvotaan, yksi hidas käynnistys voi olla mitätöintikysely eikä tunneli. Todista, mikä vaihe estää, ennen kuin löysäät käytäntöä.
Visual Studio käynnistyy kotona normaalisti, sitten sama kannettava liittyy yrityksen tunneliin ja jokainen käynnistys seisoo aloitusnäytössä puoli minuuttia. Poista käytäntö ja viive katoaa sen mukana; poista tunneli ja sama tapahtuu. Molemmat havainnot pitävät paikkansa, minkä vuoksi kaksi komponenttia syyttää jatkuvasti toisiaan. Ratkaiseva kysymys on, odottaako varmenteen mitätöintikysely polkua, jonka vain tunneli tarjoaa, vai eikö se löydä sellaista lainkaan.
Mittaa nouto, ei käynnistystä
Yksi WDAC-käytäntö, joka on otettu käyttöön allekirjoitettuna SiPolicy.p7b-tiedostona, päättää, mitkä kuvat saavat käynnistyä koneella. Koodin eheys validoi kuvan allekirjoitusketjun ennen suoritusta, ja validointi voi sisältää mitätöintikysymyksen. Vastaus riippuu CRL-jakelupisteestä tai OCSP-vastaajasta, jonka varmenne nimeää sisässään.
Ne ovat tavallisia verkkopyyntöjä, joten niiden hinta riippuu siitä, missä vastaaja sijaitsee. Kun se on tavoitettavissa vain tunnelin kautta, tai sen nimi ratkeaa vain tunnelin takana olevan DNS-palvelimen kautta, validointi odottaa, että tunneli on valmis. Visual Studio lataa käynnistyksessä suuren määrän allekirjoitettuja kokoonpanoja ja laajennuksia, ja pieni viive kuvaa kohden muuttuu näkyväksi pysähdykseksi. Mikään ei ole vialla ja käytäntö käyttäytyy täsmälleen niin kuin on määritetty, minkä vuoksi käytännön poistaminen näyttää korjaavan ongelman.
Jokainen allekirjoitettu kuva voi laukaista verkkokutsun
Aloita allekirjoitetusta binaaritiedostosta, joka on jo levyllä, ja pyydä alustaa tarkistamaan se samalla noutokäyttäytymisellä, jota käynnistys käyttää. Suorita komento kerran tunnelissa ja kerran sen ulkopuolella, vertaa sitten noutorivejä lopullisen tuomion sijaan.
certutil -verify -urlfetch C:\Tools\Contoso.Editor.dll
nslookup ocsp.contoso.example
Test-NetConnection ocsp.contoso.example -Port 80
Tuloste luettelee ketjun, CRL- ja OCSP-osoitteet sekä sen, onnistuiko jokainen nouto. Vastaaja, joka aikakatkaisee tunnelissa ja vastaa sen ulkopuolella, on tarvitsemasi todiste, ja se painaa paljon enemmän kuin vaikutelma hitaudesta. Jos nouto onnistuu hitaasti, kirjaa osoite, jotta seuraava vaihe voi testata kyseistä isäntää suoraan.
Ratkaise vastaajan isäntänimi ja testaa tavoitettavuus sovelluksen ulkopuolella, koska nimeä, joka ei ratkea, ei koskaan korjaa asiakasasetus. CodeIntegrityn toimintaloki antaa todisteen toisen puolen ja yhdistää validointitapahtuman hitaan käynnistyksen aikaleimaan.
Lyhennä viivettä poistamatta valvontaa
Käytännön poistaminen käytöstä tai vaihtaminen tarkastustilaan poistaa viiveen ja poistaa valvonnan, jonka organisaatio otti käyttöön, joten pidä sitä vääränä korjauksena. Kapeammat vaihtoehdot ovat reititysmuutos, jotta vastaaja on tavoitettavissa tunnelin kautta, jaetun tunnelin poikkeus vastaajan isännille, DNS-korjaus, kun nimi ratkeaa saavuttamattomaan osoitteeseen, tai tuettu välimuistipalvelin mitätöintitiedoille. Jokaisella on eri omistaja: PKI-tiimi omistaa vastaajan tavoitettavuuden, verkkotiimi tunnelin jaon ja päätepistetiimi käytännön.
Jokaisen mitätöintäisännän jättäminen tunnelin ulkopuolelle ei ole automaattisesti turvallista, koska sisäinen vastaaja voi olla sisäinen tarkoituksella. Vahvista poikkeus PKI:tä ylläpitävän tiimin kanssa ennen säännön kirjoittamista, joka lähettää varmenteiden tarkistukset hiljaa julkiseen internetiin. Ilman tätä vahvistusta tehty muutos on sellainen, joka perutaan seuraavassa käytännön päivityksessä.
Vahvista kylmäkäynnistys muutoksen jälkeen
Mittaa kylmäkäynnistys molemmissa tiloissa ja säilytä luvut, koska lämmin käynnistys ei todista juuri mitään, kun kokoonpanot ovat välimuistissa. Toista käynnistys uudesta istunnosta, jotta laajennusten latauspolku harjoitetaan uudelleen.
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
Korjattu kokoonpano ottaa edelleen yhteyttä vastaajaan tai käyttää välimuistipolkua, jonka PKI-tiimisi hyväksyi, ja loki näyttää validoinnin valmistuvan aikakatkaisun sijaan. Vahvista, että äskettäin allekirjoitettu sovellus käynnistyy edelleen, koska käytäntö, joka sallii kaiken, ei ole onnistunut korjaus. Tarkista myös aktiivisen käytännön kansio ja käyttöönottotila, jotta tiedetään, että virheenkorjaamasi käytäntö on se, joka on käynnissä. Pidä varmenneketju, vastaajan osoite ja käynnistysten aikaleimat samassa tiketissä, koska uusiminen yleensä siirtää vastaajaa ja jättää poikkeus- tai DNS-säännön vanhentuneeksi.