Калі ноўтбук, чыі подпісы антывіруса перасталі абнаўляцца тыдні таму, усё яшчэ можа адкрыць вашу ўнутраную праграму, то палітычны дакумент рэдка бывае тым, што не так. Тры асобныя сістэмы павінны дамовіцца, перш чым доступ будзе адхілены: адна вымярае канчатковую кропку, другая пераўтварае гэтае вымярэнне ў вердыкт «дазволіць» або «адмовіць», трэцяя фактычна скідае трафік. Калі неадпаведная прылада ўсё ж трапляе ўнутр, то менавіта адно з гэтых звёнаў адсутнічае або давярае доказам, якім не павінна. Праверачныя дзеянні ніжэй ідуць у гэтым парадку, і ў кожнага ёсць кропка спынення.

Блак — гэта апошні крок, а не першы

Аўтэнтыфікацыя і стан прылады адказваюць на розныя пытанні. Паспяховы ўваход даказвае, што ўліковыя даныя былі прад'яўлены; ён нічога не кажа пра праграмнае забеспячэнне на машыне, якая іх прад'явіла. Менавіта праз гэтую шчыліну скапіраваны профіль кліента можа перанесці здаровую на выгляд сесію на нездаровы хост.

Праца над адпаведнасцю канчатковых кропак ужо мае слоўнік для гэтага ланцуга. Эталонная мадэль NEA у RFC 5209 дзеліць задачу на зборшчык, этап ацэнкі і пункт прымянення і проста кажа, што кліент, які хлусіць пра сваё становішча, знаходзіцца па-за мадэллю. Гэтае заўвага важнейшая за схему: давераны модуль платформы не пераўтварае самастойна паведамленае вымярэнне ў факт.

Трымайце зборшчык сумленным адносна абсягу. Ён павінен паведамляць атрыбуты, якія называе вашая палітыка, на прыладзе, што просіць доступ, і мала што іншае. Агент інвентарызацыі, які пералічвае ўсе ўсталяваныя пакеты, — іншы інструмент, чым зборшчык стану прылады, і розніца — гэта адначасова праблема захавання і праблема дакладнасці. Калі справаздачу немагчыма прывязаць да адной ідэнтычнасці прылады, ацэншчык здагадваецца, якую машыну ён толькі што дапусціў.

Панэль, якая паказвае чырвоны стан, — не сродак кантролю. Спытайцеся, да чаго адхілены карыстальнік усё яшчэ дастае: вікі, файлавы агульны доступ, порт базы даных? Выпраўленне патрабуе адной вузкай паверхні, а ўсё астатняе належыць за блокам.

Прачытайце справаздачу, перш чым чытаць правіла

Пачніце з крыніцы, а не з зялёнай галачкі кліента. У Windows лакальнае вымярэнне паходзіць ад Defender або ад прадукту, які зарэгістраваў сябе ў Security Center, і абодва чытаюцца без кансолі пастаўшчыка:

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

Другая каманда вяртае цэлы лік з іменем productState. Ягоныя біты апісаныя няпоўна, і пастаўшчыкі па-рознаму пакуюць сцягі ўключэння і актуальнасці, таму пацвярджайце яго, а не разбірайце. Староннія пакеты таксама пакідаюць запіс Security Center пасля выдалення, і ён паведамляе пра праграмнае забеспячэнне, якога ўжо няма на дыску.

Узрост — гэта поле, якое людзі прапускаюць. Адбітак часу подпісу мае сэнс толькі адносна гадзінніка машыны, што праводзіць ацэнку, таму пераўтварыце яго ў інтэрвал, а не ацэньвайце на вока:

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

Цяпер у палітыкі ёсць адзін лік для чытання. Калі вашае правіла кажа 72 гадзіны, гэта той лік, які яно выкарыстоўвае, і ноўтбук, што спаў тыдзень, не праходзіць без чыёйсьці інтэрпрэтацыі этыкеткі. Запішыце парог побач з камандай, бо яны разыходзяцца, калі інструмент канчатковай кропкі замяняюць.

Пераўтварыце кожны стан прылады ў пісьмовы вердыкт

Большасць спрэчак пра стан прылады — насамрэч спрэчкі пра невядомы радок. Вырашыце гэта да першага інцыдэнту, у табліцы, якая называе доказ, вердыкт і ўладальніка, каб ніхто не імправізаваў каля кансолі шлюза.

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

Менавіта ніжні радок адрознівае прадукты. Адныя шлюзы адмаўляюць злучэнне і тлумачаць чаму; іншыя дазваляюць тунэлю ўзняцца і ўжываюць абмежаваную палітыку; некаторыя вяртаюцца да апошняй вядомай добрай справаздачы. Толькі першыя два абараняльныя, і варта праверыць, які з іх ваш.

Трымайце ідэнтычнасць і дазвол у сваіх паласах. Ноўтбук, які праходзіць кожны тэст стану, усё яшчэ патрабуе належнай чалавечай аўтарызацыі для праграмы, а сертыфікат прылады даказвае валоданне ключом, а не стан файлавай сістэмы. Зліццё трох у адзін boolean — гэта шлях, якім уліковы запіс службы падтрымкі атрымлівае пастаянны доступ да прадукцыі.

Праверце шлях прымянення запытам, а не панэллю

Прымяненне — уласцівасць запыту, таму вымярайце яго запытам. Пастаўце неадпаведную машыну на тунэль і зрабіце выклік, які зрабіў бы рэальны карыстальнік:

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

Адказ 200 ад прылады, якая павінна быць заблакаваная, азначае, што рашэнне ніколі не дасягнула шляху даных. Дзве звычайныя прычыны: палітыка прывязаная да групы, да якой тэставы ўліковы запіс не далучыўся, або праграма дасягальная праз маршрут, якім VPN не валодае.

Спачатку праверце здагадку пра маршрутызацыю. Калі ўнутранае імя пераўтвараецца ў адрас, да якога кліент ужо дастае праз лакальную LAN, тунэль не мае значэння і ніякая палітыка не будзе ўжытая. Параўнайце гэты адрас з маршрутам, які штурхае шлюз. На OpenVPN палітыка кожнага кліента жыве ў файлах, ключаваных па агульным імені, таму гэта лёгка праверыць:

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

Файл, які змяшчае disable, цалкам адключае гэтага кліента, а радок push "route ..." звужае тое, да чаго ён дастае. Абодва — прымяненне, і абодва бачныя кожнаму, хто адладжвае справаздачу.

Праверце чатыры выпадкі на адным тэставым уліковым запісе

Апошняя праверка — невялікая матрыца, а не шчаслівы шлях. Правядзіце адзін тэставы ўліковы запіс праз чатыры станы: актуальны, пратэрмінаваны подпіс, абарона адключана, агент не ўсталяваны. Для кожнага запішыце вердыкт у журнал ацэнкі, HTTP-статус, які вяртае праграма, і ці загрузілася старонка выпраўлення.

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
}

Дзве дэталі лёгка прапусціць. Спачатку паўтор: справаздачу, знятую пакуль машына была здаровая, нельга прымаць для наступнай сесіі на той самай прыладзе, таму шукайце адбітак часу, прывязаны да бягучага злучэння. Затым выдаленне: выдаленне агента павінна даць такую ж адмову, як састарэлая справаздача, а не чысты пропуск, і менавіта гэты выпадак найчасцей не тэстуюць.

Калі матрыца супадае з табліцай, перадайце тры рэчы таму, хто будзе кіраваць шлюзам далей: каманды, парог і чатыры чаканыя вынікі. Менавіта гэтая перадача — сапраўдны вынік, бо дызайн стану прылады, які жыве толькі ў палітычным дакуменце, з'язджае першы раз, калі інструмент канчатковай кропкі змяняе сваё поле справаздачы.

Падобныя артыкулы