Jestliže notebook, jehož antivirové podpisy se přestaly aktualizovat před týdny, stále otevře vaši interní aplikaci, zřídka je na vině dokument s politikou. Než je přístup odmítnut, musí se shodnout tři oddělené systémy: jeden měří koncový bod, druhý převádí toto měření na verdikt povolit nebo odmítnout a třetí provoz skutečně zahodí. Když se nevyhovující zařízení přesto dostane dovnitř, chybí právě jeden z těchto článků nebo věří důkazům, kterým by neměl. Následující kontroly jdou v tomto pořadí a každá má svůj bod zastavení.

Blok je poslední krok, ne první

Autentizace a stav zařízení odpovídají na různé otázky. Úspěšné přihlášení dokazuje, že byly předloženy přihlašovací údaje; neříká nic o softwaru běžícím na stroji, který je předložil. Právě touto mezerou může zkopírovaný klientský profil přenést zdravě vypadající relaci na nezdravý hostitel.

Práce na shodě koncových bodů už pro tento řetěz má slovník. Referenční model NEA v RFC 5209 dělí úlohu na sběrač, krok vyhodnocení a místo prosazení a říká otevřeně, že klient, který lže o svém vlastním stavu, stojí mimo model. Tato výhrada je důležitější než diagram: důvěryhodný platformní modul nepromění samostatně hlášené měření ve fakt.

Udržujte sběrač poctivý ohledně rozsahu. Má hlásit atributy, které vaše politika pojmenovává, na zařízení, které žádá o přístup, a málo jiného. Inventurní agent, který vypisuje každý nainstalovaný balíček, je jiný nástroj než sběrač stavu zařízení a rozdíl je zároveň problém retence i přesnosti. Pokud report nelze svázat s jednou identitou zařízení, hodnotitel hádá, který stroj právě pustil.

Panel s červeným stavem není kontrola. Ptejte se, kam se odmítnutý uživatel ještě dostane: na wiki, do sdílené složky, na port databáze? Náprava potřebuje jednu úzkou plochu a všechno ostatní patří za blok.

Přečtěte report dřív, než přečtete pravidlo

Začněte u zdroje, ne u zelené fajfky klienta. Ve Windows lokální měření pochází z Defendera nebo z produktu, který se zaregistroval v Security Center, a obojí lze číst bez konzole dodavatele:

Get-MpComputerStatus | Select-Object AMServiceEnabled, RealTimeProtectionEnabled, AntivirusSignatureLastUpdated
Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct | Select-Object displayName, productState

Druhý příkaz vrací celé číslo jménem productState. Jeho bity jsou popsány volně a dodavatelé balí příznaky zapnutí a aktuálnosti různě, takže ho ověřujte, místo abyste ho rozebírali. Balíky třetích stran také po odinstalaci nechávají záznam v Security Center a ten hlásí software, který už na disku není.

Stáří je pole, které lidé přeskakují. Časové razítko podpisu znamená něco jen vůči hodinám stroje, který hodnocení provádí, takže ho převeďte na interval, místo abyste ho odhadovali okem:

$sig = (Get-MpComputerStatus).AntivirusSignatureLastUpdated
[int](New-TimeSpan -Start $sig -End (Get-Date)).TotalHours

Teď má politika jedno číslo ke čtení. Pokud vaše pravidlo říká 72 hodin, je to číslo, které používá, a notebook spící týden selže, aniž by někdo vykládal štítek. Zapište práh vedle příkazu, protože obojí se rozchází, když se nástroj koncového bodu vymění.

Převraťte každý stav zařízení v psaný verdikt

Většina sporů o stav zařízení jsou ve skutečnosti spory o neznámý řádek. Rozhodněte ho před prvním incidentem, v tabulce, která pojmenuje důkaz, verdikt a vlastníka, aby nikdo neimprovizoval u konzole brány.

Evidence the assessor hasVerdictWhat it protects against
Timestamp inside the policy window, protective service runningAdmit to normal applicationsNothing yet; the other checks still apply
Timestamp older than the windowDeny, admit remediation page onlySignature rollback and dormant laptops
Service disabled or reporting offDeny, escalate to the endpoint ownerAn agent reporting stale success
No report at all for this sessionTreat as deny, never as healthyAgents that fail open under load

Spodní řádek je místo, kde se produkty liší. Některé brány spojení odmítnou a vysvětlí proč; jiné nechají tunel vstát a použijí omezenou politiku; několik se vrátí k poslednímu známému dobrému reportu. Jen první dva jsou obhajitelné a stojí za to vyzkoušet, který dělá ten váš.

Udržujte identitu a oprávnění ve vlastních kolejích. Notebook, který projde každým testem stavu, stále potřebuje správné lidské povolení pro aplikaci, a certifikát zařízení dokazuje držení klíče, ne stav souborového systému. Sbalení tří do jednoho booleanu je způsob, jakým si účet helpdesku zajistí trvalý přístup do produkce.

Ověřte cestu prosazení požadavkem, ne panelem

Prosazení je vlastnost požadavku, takže ho změřte jedním. Postavte nevyhovující stroj do tunelu a udělejte volání, jaké by udělal skutečný uživatel:

curl -sS -o /dev/null -w '%{http_code}
' --max-time 5 https://app.internal.example/health

Odpověď 200 od zařízení, které by mělo být zablokované, znamená, že rozhodnutí nikdy nedorazilo na cestu dat. Dvě obvyklé příčiny: politika je připojena ke skupině, do které se testovací účet nikdy nepřipojil, nebo je aplikace dostupná přes trasu, kterou VPN nevlastní.

Nejprve ověřte předpoklad směrování. Pokud se interní jméno přeloží na adresu, kam se klient už dostane přes místní LAN, je tunel nepodstatný a žádná politika se nepoužije. Porovnejte tuto adresu s trasou, kterou brána protlačuje. Na OpenVPN žije politika pro jednotlivé klienty v souborech klíčovaných podle obecného jména, takže je snadné ji prohlédnout:

ls /etc/openvpn/ccd/
cat /etc/openvpn/ccd/laptop-17

Soubor obsahující disable toho klienta úplně odpojí, zatímco řádek push "route ..." zužuje, kam se dostane. Obojí je prosazení a obojí je vidět pro každého, kdo report ladí.

Otestujte čtyři případy na jednom zkušebním účtu

Závěrečná kontrola je malá matice, ne šťastná cesta. Prožeňte jeden testovací účet čtyřmi stavy: aktuální, propadlý podpis, ochrana vypnutá, agent nenainstalován. U každého zapište verdikt do protokolu hodnocení, stav HTTP, který aplikace vrátí, a zda se načetla stránka nápravy.

foreach ($case in 'current', 'stale', 'disabled', 'absent') {
  Get-MpComputerStatus | Select-Object AMServiceEnabled, AntivirusSignatureLastUpdated
  curl.exe -sS -o NUL -w "%{http_code}
" --max-time 5 https://app.internal.example/health
}

Dva detaily se snadno přehlédnou. Nejprve přehrání: report zachycený, když byl stroj zdravý, se nesmí přijmout pro pozdější relaci na stejném zařízení, proto hledejte časové razítko vázané na aktuální spojení. Pak odebrání: odinstalace agenta má vyvolat stejné odmítnutí jako zastaralý report, ne čistý průchod, a to je případ, který se nejčastěji nikdy netestuje.

Když matice odpovídá tabulce, předejte tři věci tomu, kdo bude bránu spravovat po vás: příkazy, práh a čtyři očekávané výsledky. Právě toto předání je skutečný výstup, protože návrh stavu, který žije jen v dokumentu s politikou, se rozjede při první změně pole reportu v nástroji koncového bodu.

Související články