Для тех, кто не читал первую часть статьи, скажу, что в данной статье под OEMщиком подразумевается специалист, который занимается подготовкой Windows к тиражированию на множество устройств.
В этой части мы рассмотрим, как повысить безопасность и отказоустойчивость системы с помощью стандартных средств Windows: AppLocker, фильтр записи, блокировка устройств. Плюс к этому рассмотрим особенности запечатывания системы в режиме приветствия (OOBE) с некоторыми специфичными настройками системы.
Из первой части Вы узнали, как быстро создать и развернуть образ системы, в этой части этот навык пригодится больше всего, ведь мы будем экспериментировать с настройками повышения безопасности. При их неправильной настройке система может не загрузиться или при включении настройки в системе поменяется столько параметров, что проще будет развернуть ранее сохраненный образ системы, чем ее перенастраивать.
Во второй части статьи, мы рассмотрели базовые настройки устройства фиксированного назначения. В данной части мы будем рассматривать настройки безопасности в контексте ранее выполненных настроек. Поэтому, для успешного проведения экспериментов по описанию в статье, возьмите образ системы, который у Вас получился после второй части или настройте систему так, чтобы она соответствовала следующим требованиям:
- С помощью скрипта настройки питания «PowerSettings» включена схема питания «HORM»
- Система в режиме аудита
- В системе есть две созданные учетные записи, одна только в группе «Администраторы», вторая только в группе «Пользователи»
- С помощью «Shell Launcher V1» настроен запуск приложения для группы «Пользователи»
Напомню, что все настройки мы выполняем на Windows 10 IoT Enterprise версии 1809. Убедитесь, что у Вас именно эта версия системы, выполнив команду «winver».
![](https://habrastorage.org/webt/hc/a2/yw/hca2ywbcgpppd6fu-bvpwsg3bbw.png)
Если у Вас нет дистрибутива этой системы, то Вы можете скачать пробную версию.
И еще один нюанс, скрипты для настройки рассматриваемых возможностей в этой части находятся только в полном наборе скриптов. Полный набор скриптов Вам будет доступен при приобретении операционных систем линейки Windows 10 IoT в компании «Кварта Технологии». Или вы можете попробовать настроить систему вручную, как описано в нашей вики.
Чтобы узнать о выходе новых версий скриптов с исправлениями и дополнениями, Вы можете подписаться на нашу рассылку или присоединиться к нашим группам в соцсетях.
Блокировка запуска приложений
Блокировка запуска приложений будет выполняться с помощью AppLocker’а. Учтите, что правила AppLocker’а не работают в режиме мультикиоска, т.к. в режиме мультикиоска по умолчанию запрещен запуск всех приложений, которые не разрешены. Чтобы правила мультикиоска и AppLocker’а не конфликтовали, в режиме мультикиоска AppLocker не работает.
Блокировка запуска приложений не только усилит защиту от вредоносного ПО, а еще и не даст пользователю попасть куда не нужно, например, в настройки.
Появляется вопрос, как же так, во второй части статьи мы все пользователю блокировали, блокировали, да не заблокировали? На самом деле все дело в нюансах, запуск какого приложения мы настроили и при каких обстоятельствах оно будет работать.
Вот вполне реальный пример. Есть информационный киоск с сенсорным экраном. На киоске настроен режим киоска «Shell Launcher V1», который запускает IE. IE настроен на запуск в полноэкранном режиме, кнопки управления окном скрыты, отключен вызов контекстного меню. IE отображает интернет-страницу.
И казалось, ничего не предвещало беды… но судьба распорядилась по-другому.
Попробуйте отключить интернет на таком решении, IE Вам сообщит, что устройство не подключено к сети и предложит исправить проблемы с подключением. А из этой настройки пользователь сможет получить доступ к файловой системе и немного пошалить…
Из этой ситуации можно сделать вывод, что при нештатной работе устройства существует вероятность запуска приложений, непредназначенных для пользователя. И самый простой выход из этой ситуации – это настройка блокировки запуска приложений по белому списку, как в режиме мультикиоска.
Для проверки работоспособности блокировки приложений можно временно отключить фильтр клавиатуры, чтобы пользователь мог вызвать диспетчер задач по «Ctrl + Shift + Esc» и окно залипания клавиш по пятикратному нажатию «Shift».
Для начала рассмотрим особенности настройки AppLocker’а в целом – теоретическая часть. А потом рассмотрим, как настроить правила запуска приложений по белому списку – практическая часть.
Теоретическая часть
Перед включением AppLocker’а нужно создать минимально необходимый набор правил для нормальной работы системы. Правила AppLocker’а находятся в локальной групповой политике, по пути «Конфигурация компьютера\Конфигурация Windows\Параметры безопасности\Политики управления приложениями\AppLocker».
Для AppLocker’а необходимо создать правила по умолчанию для разделов «Исполняемые правила» и «Правила упакованных приложений». Создать правила можно в контекстном меню раздела.
![](https://habrastorage.org/webt/ju/-q/o0/ju-qo0wjnjmgsys5dwfodmrqy94.png)
После создания правил по умолчанию можно включить AppLocker, для включения AppLocker’а необходимо запустить службу «AppIDSvc» и перевести ее в автоматический режим запуска. Но AppLocker начнет работать не сразу, а после применения политики AppLocker’а к системе. О том, что правила AppLocker’а применены к системе, можно узнать из журнала AppLocker’а «Управление компьютером\Служебные программы\Просмотр событий\Журналы приложений и служб\Microsoft\Windows\AppLocker\EXE и DLL». После применения правил в журнале появится запись с кодом события 8001, в событии будет уведомление о том, что политика AppLocker’а применена к системе.
Ветка лога «Журналы приложений и служб» открывается не сразу, ее открытие может занять некоторое время. Если открыть журнал до появления записи в журнале, то для обновления отображения состояния журнала необходимо нажимать «F5».
Для создания новых правил исполняемых приложений можно выбрать пункт контекстного меню «Создать новое правило…», после чего откроется помощник создания правил.
Для правил AppLocker’а можно настроить политику применения правил.
![](https://habrastorage.org/webt/c6/zg/vu/c6zgvubfd3lzfmtldjwuiax0-gs.png)
Если флажки не установлены, то правила находятся в ненастроенном состоянии — «Not configured», это значит, что правила будут применяться, если нет конфликтующих правил более высокого уровня.
Если флажки установлены, то есть возможность выбрать один из вариантов настройки. «Принудительное применение правил» — к системе будут применены текущие правила. «Только аудит» — можно запускать запрещенные приложения, но при запуске запрещенного приложения в журнал AppLocker’а будет добавлена соответствующая запись, в которой будет указано, что данное приложение было бы запрещено.
На основании записей результатов аудита можно создать правила для AppLocker’а, причем это можно сделать автоматически с помощью консольных команд управления AppLocker’ом.
Настройка в редакторе локальной групповой политики больше подходит для настройки по черному списку, т.е. будет разрешен запуск всех приложений, кроме тех, которые явно незапрещены.
Практическая часть
Для настройки по белому списку будем использовать скрипт «AppLocker», который находится в наборе скриптов.
Включите AppLocker, выбрав соответствующий пункт меню. Скрипт проверит, есть ли минимально необходимые правила для AppLocker’а, если их нет, то он предложит их создать. При подтверждении скрипт создаст правила, где разрешен запуск всех программ только для группы «Администраторы», а для группы «Пользователи» правила не прописаны, т.е. запрещен запуск всех программ. После создания правил скрипт запустит службу «AppIDSvc» и настроит ее автоматический запуск.
Если Вы согласны с предложением скрипта создать правила, просто нажмите «Enter».
Чтобы узнать, что AppLocker начал работать, просто обновите информацию об AppLocker’е, выбрав соответствующий пункт меню.
![](https://habrastorage.org/webt/ng/g0/as/ngg0asn-ekzoux3l6nqkhs72f_c.png)
Когда AppLocker начнет работать, выберите пункт изменения политики правил и включите режим аудита.
Важно учесть, что при настройке правил для пользователя по белому списку необходимо делать все так же, как это будет делать пользователь. Если Вы планируете настроить автоматический вход в учетную запись пользователя при загрузке системы, то именно так и нужно войти в учетную запись в режиме аудита. Поэтому выполните команду «netplwiz» и отключите требование ввода учетных данных для пользователя. После включения автоматического входа перезагрузите систему.
Когда система загрузится, выполнит вход в учетную запись пользователя и запустит назначенное приложение вместо оболочки системы, перейдите в учетную запись администратора, запустите скрипт настройки AppLocker’а, выберите пункт выбора группы для создания правил AppLocker’а. В пункте выбора группы выберите группу «Пользователи» (Users).
После создания правил вернитесь в главное меню скрипта и выберите пункт отображения правил AppLocker’а. У меня для пользователя был настроен запуск «Tools\TestRunAs.bat», который находится в наборе скриптов, я получил вот такой набор правил.
![](https://habrastorage.org/webt/p0/pi/pk/p0pipkskxqxg-x_lsuyy4oj56wi.png)
Первые два правила для группы «Administrators» создал скрипт перед запуском AppLocker’а. Остальные правила, с приставкой «AuditBased», скрипт создал на основании результатов аудита. При желании Вы можете изменить приставку, которая добавляется к создаваемым правилам, для этого нужно просто поменять в скрипте «AppLocker.ps1» значение параметра «-RuleNamePrefix». Этот параметр легко найти с помощью поиска «Ctrl + F».
Теперь посмотрим, что у нас получилось. Измените политику применения правил на принудительное применение правил и перезагрузите систему. Когда система загрузится, и запустится назначенное приложение вместо оболочки системы, попробуйте вызвать диспетчер задач с помощью «Ctrl + Shift + Esc» или открыть окно настройки залипания клавиш с помощью пятикратного нажатия «Shift».
Учтите, что при создании правил на основании результатов аудита создаваемые правила добавляются к уже существующим правилам. Поэтому перед следующей настройкой очистите журнал AppLocker’а, иначе новые правила будут созданы с учетом старых данных журнала. Для очистки журнала AppLocker’а есть соответствующий пункт скрипта.
Правила AppLocker’а можно сохранить в отдельный файл и применить их к другой системе. Обратите внимание, что можно добавить правила к уже существующим правилам или заменить существующие правила новыми. При замене правил, помимо самих правил, будут установлены и политики применения правил, которые были указаны в сохраненном файле.
После настройки AppLocker’а отключите автоматический вход пользователя в систему.
Если захотите запечатать систему в режиме аудита с включенным AppLocker’ом, когда правила настроены по белому списку, то учтите, что после загрузки системы панель задач будет работать только во встроенной учетной записи «Administrator», в которую система загрузится автоматически. Для восстановления работы панели задач в других учетных записях, просто отключите, а затем снова включите AppLocker с помощью скрипта.
Запечатываем систему в режиме приветствия — OOBE
Если Вы хотите сохранить текущие настройки системы, то перед дальнейшими действиями сохраните образ системы в режиме аудита, как это было описано в первой части статьи.
В обычном режиме работы системы мы посмотрим на те настройки, которые не работают в режиме аудита. А именно:
- Блокировка устройств
- Отключение отображения процесса загрузки системы
- Фильтр записи
Небольшое уточнение, фильтр записи будет работать в режиме аудита, но в режиме аудита не выполняются задачи, которые прописаны в планировщике заданий, а такая задача очень пригодится при работе фильтра записи. В режиме аудита можно добавить компонент фильтра записи и настроить его, но включать его не нужно.
Теперь запечатывать систему обязательно нужно с помощью скрипта для запечатывания. В первой части статьи я написал часть того, что делает скрипт при запечатывании в разделе «Для чего нужен скрипт для запечатывания», а сейчас немного дополню.
Сейчас система настроена для комфортного обслуживания. Для дополнительных настроек учетной записи пользователя достаточно учетную запись пользователя перевести из группы «Пользователи» в группу «Администраторы», и с учетной записи пользователя будут сняты все ограничения:
- Вместо назначенного приложения будет запущена оболочка системы
- Не будет ограничений фильтра клавиатуры
- AppLocker разрешит запускать любые приложения.
Для этого мы и настраивали все ограничения именно для группы. Но всякое решение плодит новые проблемы…
Мюллер шел по улице. Вдруг ему на голову упал кирпич.
"Вот тебе раз," — подумал Мюллер.
"Вот тебе два," — подумал Штирлиц, бросая второй кирпич.
При тиражировании системы ее обязательно нужно запечатать для сброса уникальных SID’ов системы и обязательно в режиме приветствия, не использовать же систему в режиме аудита. Но если настроен режим киоска «Shell Launcher V1» с указанием запуска приложения именно для группы «Пользователи», то система не сможет загрузиться в режиме приветствия.
Если правила AppLocker’а настроены по белому списку, и в правилах для пользователя нет разрешения на запуск приложений, которые запускаются при прохождении OOBE, то система не загрузится в режиме приветствия.
Перед запечатыванием системы в режиме «OOBE» скрипт проверяет настройки Shell Launcher’а и AppLocker’а. Если настройки будут препятствовать загрузке системы в режиме приветствия, то скрипт предложит временное отключение этих настроек. Настройки AppLocker’а и Shell Launcher’а будут проверены отдельно друг от друга, и для каждой настройки отдельно будет предложено временное отключение. При подтверждении отключения настроек скрипт отключит их и создаст задачу на их включение, задача будет выполнена после входа в учетную запись при первой загрузке после запечатывания, после включения настроек система будет перезагружена еще раз.
Чтобы не отвечать на вопросы системы при загрузке в режиме приветствия, используйте файл ответов для запечатывания «OOBEAuto.xml», который есть в наборе скриптов.
После запечатывания системы в режиме приветствия сохраните образ системы, у нас еще будут настройки, при которых что-то может пойти не так.
Ограничение установки драйверов
Если у устройства есть общедоступные USB порты, которые нельзя отключить в BIOS’е, то появляется потенциальная угроза безопасности, ведь кто угодно может подключить любое USB устройство и его использовать. Для минимизации подобных рисков можно воспользоваться возможностью ограничения установки драйверов. Данную возможность можно использовать и для запрета автоматического обновления драйвера, если новый драйвер приводит к некорректной работе системы.
Данная возможность не работает в режиме аудита.
Группа настроек, отвечающих за ограничение установки и использования драйверов, находится в локальной групповой политике в разделе «Ограничение на установку устройств». С помощью данной группы настроек можно запретить установку новых драйверов или запретить работу уже установленных драйверов, поэтому название «Ограничение установки драйверов» лучше отражает суть данной возможности.
Для лучшего понимания возможностей данных настроек сначала рассмотрим их в локальной групповой политике, а затем рассмотрим настройку с помощью скрипта «DriverRestrictions», который находится в наборе скриптов.
Настройка в локальной групповой политике
Настройка ограничения установки устройств находится в локальной групповой политике. «Конфигурация компьютера\Административные шаблоны\Система\Установка устройства\Ограничение на установку устройств»
![](https://habrastorage.org/webt/x-/ge/vb/x-gevbwawkdqw3acmtrxvl119mo.png)
Можно запретить установку устройства по ID устройства или по GUID’у класса оборудования. После запрета установки устройств нельзя будет установить драйвер, который соответствует указанному GUID’у класса или указанному ID оборудования. При этом ранее установленный драйвер будет работать.
![](https://habrastorage.org/webt/rf/hb/jj/rfhbjjysjkhcparrnfoc0wu_2ka.png)
ID устройства можно указывать не полностью, сопоставление ID в правилах с ID в системе будет производиться по частичному совпадению с начала строки. Правило запрещения устройства с ID «PCI\VEN_8086&DEV_9D23» будет запрещать все устройства по маске «PCI\VEN_8086&DEV_9D23*», т.е. устройство с ID «PCI\VEN_8086&DEV_9D23&SUBSYS_8079103C&REV_21\3&11583659&0&FC» будет запрещено.
Если в системе настроен запрет на установку новых драйверов, и будет подключено новое устройство, для которого уже есть драйвер в системе, то подключенное устройство будет работать.
При необходимости запретить работу уже установленного драйвера, нужно установить флажок «Также применить для соответствующих устройств, которые уже были установлены». Данная настройка будет распространяться на весь перечень указанных устройств. Эту возможность можно настроить отдельно для списка запрещенных ID и GUID’ов классов. Будьте внимательны при установке запретов на работу уже установленных драйверов по GUID’у класса. Например, GUID класса флэшки может совпадать с GUID’ом класса SSD, на котором установлена система, при установке запрета на работу уже установленного драйвера с таким GUID’ом система не сможет загрузиться.
Установленные запреты распространяются на всех пользователей, в том числе и на администраторов. Чтобы снять все ограничения для администратора, можно включить настройку «Разрешить администраторам заменять политики ограничения установки устройств». Если эта настройка нужна для обхода запрета использования установленного драйвера, то для возобновления работы устройства нужно просто выполнить автоматический поиск драйвера. Учтите, что после возобновления работы устройства оно будет доступно для всех пользователей, поэтому после обслуживания устройства нужно отключить разрешение для администраторов заменять политики ограничений.
Добавление ID и GUID’ов классов в перечень запрещенных – это настройка по черному списку, для настройки правил по белому списку нужно включить настройку «Запретить установку устройств, не описанных другими параметрами политики». После включения данной настройки будет запрещена установка новых драйверов, для которых не настроено явного разрешения. Работа установленных драйверов будет разрешена. При необходимости устанавливать драйверы на некоторые устройства, их можно добавить в разрешенные по ID и GUID’ов классов.
Настройка с помощью скрипта
![](https://habrastorage.org/webt/x6/r5/ko/x6r5kovus9ssr2a5y0vlpbo9ktm.png)
Если Вы хотите поэкспериментировать с отключением устройств, для наглядности откройте диспетчер устройств и расположите окна так, чтобы перечень устройств был виден, когда окно скрипта находится поверх диспетчера устройств.
При выборе пунктов разрешения или запрета установки драйверов по ID или по GUID’у класса, скрипт покажет таблицу с перечнем текущих устройств, которые еще не добавлены в правила выбранного параметра. При составлении таблицы с перечнем ID, после получения перечня всех устройств скрипт исключает ID, которые начинаются с: «PRINTENUM», «ROOT», «SW», «ACPIAPIC», «MONITOR». При необходимости, перечень исключаемых ID можно изменить в функции «Add-Devices». У оставшихся ID будут отброшены окончания: «&SUBSYS», «&REV», «&CC» вместе со всеми символами после этих окончаний.
![](https://habrastorage.org/webt/qk/6g/b6/qk6gb6dvotezkdy_pdsbirw4vzu.png)
С помощью фильтра можно найти устройство по частичному совпадению, поиск которого будет по всем столбцам таблицы. В таблице можно выбрать более одного устройства. Для добавления выбранных устройств в правило нужно нажать «OK».
При выборе пункта отображения и удаления текущих правил скрипт покажет таблицу с текущими правилами. В этой таблице будут отображены правила всех параметров. В столбце «Param» значение указывает на тип правила, разрешающее или запрещающее и на основании чего настроено правило по ID устройства или GUID’у класса. В столбце «Value» отображается ID устройства или GUID класса, по которому настроено правило. Для удаления правил нужно выбрать одно или множество правил, которые необходимо удалить и нажать «OK».
![](https://habrastorage.org/webt/gk/vb/6s/gkvb6silyzzpsckunre4t_ksbm8.png)
После удаления правил скрипт будет автоматически включать отключенные устройства. Но при включении разрешения замены правил для администраторов нужно будет вручную обновлять драйверы отключенных устройств.
Запретить работу уже установленных драйверов можно с помощью пунктов включения / отключения запрета к установленным драйверам.
С помощью пунктов отключения разрешения или запрещения по ID или GUID можно удалить все правила, которые относятся к конкретной настройке, а с помощью пункта сброса настроек можно сбросить все настроенные правила для устройств.
Фильтр записи
С помощью фильтра записи можно защитить данные от изменения на определенных томах несъемных дисков. На защищенных томах можно настроить места исключения, где данные не будут защищены.
Важно!!!
- Включать фильтр записи необходимо непосредственно на конечном устройстве после активации системы.
- При включении фильтра записи изменяются некоторые настройки системы, но при выключении фильтра записи измененные настройки не возвращаются в исходное состояние.
- Нельзя запечатывать систему с включенным фильтром записи.
По ряду причин Вам может потребоваться защита данных на жестком диске, например, пользователи сбивают настройки специализированного ПО и не могут их восстановить без посторонней помощи. Или из специализированного ПО можно получить доступ к файловой системе, где можно удалить данные. Фильтр записи позволяет вернуть данные в исходное состояние с помощью простой перезагрузки системы.
А вот непридуманная ситуация. Некоторые работники каждое утро тратят 30 – 40 минут на то, чтобы открыть все необходимые окна в специализированном ПО, сделать их определенного размера и расставить их в определенном порядке. Эту проблему можно решить с помощью функции HORM, которая есть в фильтре записи.
Данный раздел тоже разделим на теоретическую и практическую части. В теоретической части рассмотрим работу фильтра записи в целом, и какие у него есть настройки, а в практической части рассмотрим, как его настроить, естественно для настройки будем использовать скрипт.
Теоретическая часть
Фильтр записи необходим для сохранения данных в исходном состоянии. Можно выделить две основные функции:
- Защита данных от изменений на несъемных носителях
- Загрузка системы в определенное состояние из файла гибернации – режим HORM
Сначала рассмотрим работу фильтра записи с настройками по умолчанию, а затем рассмотрим, какие еще есть варианты настройки и для чего они нужны.
Если включить фильтр записи с защитой всех томов несъемных дисков, то получится следующая схема.
![](https://habrastorage.org/webt/_v/97/yd/_v97yd5wr4g9ycyiolqs5btsow0.png)
Все операции чтения / записи будут осуществляться между системой и оверлеем. Оверлей – буфер временного хранения данных, который будет очищен после перезагрузки. По мере записи данных в оверлей он будет заполняться, нельзя допускать полного заполнения оверлея, иначе система перестанет нормально работать. По умолчанию размер оверлея 1024 MB.
Если данные записать, а потом удалить, то оверлей будет очищен частично, для полной очистки оверлея требуется перезагрузка системы. При заполненном оверлее система не сможет выполнить программную перезагрузку, т.к. попадет в цикл «записать сведения о перезагрузке, если запись не удалась, вернуться на предыдущий шаг». Поэтому перезагружать систему нужно до заполнения оверлея.
На защищаемых томах можно настроить места исключения из защиты, в таких местах будут сохраняться изменения данных. При записи данных в места исключения операции чтения / записи все равно будут проходить через оверлей, поэтому оверлей будет заполняться.
У фильтра записи есть уведомления об уровнях заполненности оверлея, это порог предупреждения – по умолчанию 512 MB и критический порог – по умолчанию 1024 MB. При достижении определенного порога в журнал системы будут внесены определенные записи. «Журналы Windows > Система».
Overlay usage | Source | Level | Event ID |
---|---|---|---|
Warning threshold | uwfvol | Warning | 1 |
Critical threshold | uwfvol | Error | 2 |
Back to normal | uwfvol | Information | 3 |
Чтобы избежать заполнения оверлея, можно создать задачу на перезагрузку системы, которая будет выполнена при появлении записи в журнале о достижении определенного порога.
В настройках фильтра записи можно изменить размер оверлея и уровень порогов. При изменении размера оверлея учтите, что под оверлей сразу выделяется объем памяти равный объему оверлея, который будет недоступен системе. Не забывайте оставлять минимально необходимый объем памяти для работы самой системы.
Оверлей может быть в оперативной памяти или на жестком диске. Если оверлей на жестком диске, то помимо обычного режима работы оверлея, который мы рассмотрели, будет доступен режим сквозной записи, который будет включен по умолчанию при переключении оверлея на жесткий диск.
![](https://habrastorage.org/webt/yr/5c/9h/yr5c9hs5py0ukuiatcnuvjlbihw.png)
В режиме сквозной записи все данные будут записываться в свободное место на жестком диске, а в оверлей будет записываться служебная информация системы и сведения о данных, записанных в свободное место на жестком диске. Если данные записать, а потом удалить, то место на жестком диске будет освобождено, а место в оверлее почти не будет использоваться. Таким образом можно существенно сократить количество необходимых перезагрузок. При перезагрузке все изменения будут удалены, включая данные, записанные в свободное место на жестком диске.
И еще одна особенность оверлея на HDD – режим постоянного оверлея. Данный режим подразумевает сохранение данных в оверлее после перезагрузки системы. А для очистки оверлея перед перезагрузкой необходимо выполнить команду, которая сообщит фильтру записи о необходимости очистить оверлей.
Появляется вопрос, если вся система защищена, то как установить обновления, если они нужны? У фильтра записи для этого есть сервисный режим. Для перевода в сервисный режим необходимо выполнить команду «uwfmgr servicing enable» и перезагрузить систему. В сервисном режиме система сама загрузит и установит обновления, а затем перезагрузится в нормальном режиме работы.
Есть еще некоторые особенности обслуживания устройств с включенным фильтром записи.
HORM
HORM — Hibernate Once/Resume Many (HORM). Принцип работы HORM’а понять очень просто. Все наверно знают, как работает режим гибернации. При переводе системы в режим гибернации все данные из оперативной памяти записываются на жесткий диск в файл «hiberfil.sys», а при включении ПК все данные из файла «hiberfil.sys» записываются в оперативную память. HORM работает точно так же, только есть одно маленькое но, Вы вводите систему в режим гибернации один раз, а в дальнейшем при каждой загрузке система всегда записывает данные из «hiberfil.sys» в оперативную память. При этом не важно, как была завершена работа системы выключением или перезагрузкой. Только учтите, что фильтр записи не защищает файл гибернации, поэтому нужно отключить все способы перевода системы в режим гибернации кроме консольного.
С настройками по умолчанию после пробуждения системы необходимо вводить учетные данные пользователя. При необходимости можно отключить запрос учетных данных при выходе из режима гибернации. В плане питания «HORM», который можно установить с помощью скрипта «PowerSettings», запрос учетных данных при выходе из режима гибернации отключен.
Для работы режима HORM есть ряд требований:
- Все тома несъемных носителей должны быть защищены
- Не должно быть никаких исключений из защиты в реестре и файловой системе
- Оверлей должен быть в оперативной памяти.
Настраиваем фильтр записи
Перед настройкой фильтра записи необходимо добавить компонент фильтра записи. Вся настройка фильтра записи производится в командной строке с помощью утилиты «uwfmgr.exe». Базовые возможности фильтра записи можно настроить с помощью скрипта «UnifiedWriteFilter», который находится в наборе скриптов.
![](https://habrastorage.org/webt/mn/rz/5r/mnrz5rgb8baexivzrnkbwlklzsy.png)
Для отображения текущего состояния фильтра записи добавьте компонент фильтра записи и перезагрузите систему. Если Вам недостаточно параметров настроек, которые отображает скрипт, можно отобразить текущие настройки, выбрав соответствующий пункт меню скрипта, тогда будут показаны настройки, которые отображаются при выполнении команды «uwfmgr get-config».
С помощью пункта установки размера оверлея можно переключать размер оверлея между размером по умолчанию и максимально возможным размером. Это возможность скрипта, такой возможности нет в стандартных настройках. Максимально возможный размер вычисляется следующим образом. Скрипт получает объем оперативной памяти и вычитает минимально необходимый объем для данной системы. 1 ГБ для x32 и 2ГБ для x64. При изменении объема оверлея будут автоматически изменены пороги предупреждения.
С помощью пункта изменения уровня порогов можно изменять уровень порогов межу стандартным и рекомендуемым. Это возможность скрипта, такой возможности нет в стандартных настройках. Стандартные уровни порогов: 50% от объема оверлея – порог предупреждения, 100% от объема оверлея – критический порог. Рекомендуемые пороги предупреждения отличаются для реального и виртуального ПК. Для реального ПК: 80% от объема оверлея – порог предупреждения, 90% от текущего объема оверлея – критический порог. Для виртуального ПК: 10% от объема оверлея – порог предупреждения, 20% от текущего объема оверлея – критический порог. При необходимости Вы можете сами изменить в скрипте % уровня порогов от оверлея, за них отвечают переменные «WarningThresholdGlobal» и «CriticalThresholdGlobal».
В верхней части информации о настройках фильтра записи отображается наличие задачи на перезагрузку системы при достижении критического порога и наличие задачи на включение фильтра записи после активации системы. Наличие этих задач будет отображаться, если они установлены с помощью соответствующих пунктов скрипта. Это возможность скрипта, такой возможности нет в стандартных настройках.
Некоторые настройки фильтра записи вступают в силу только в следующей сессии. Под следующей сессией подразумевается следующая загрузка системы с включенным фильтром записи. В перечне защищенных томов все тома указываются в квадратных скобках, пустые квадратные скобки обозначают том без буквы.
Пункт планирования гибернации нужен для перевода системы в режим гибернации через заданное время, данная возможность нужна при настройке режима HORM. Как я и говорил ранее, чтобы файл гибернации не был перезаписан, необходимо оставить только одну возможность перевода системы в спящий режим, с помощью консольной команды. Но при выполнении команды перехода в режим гибернации система сразу перейдет в режим гибернации, даже не дав закрыть консольное окно. Чтобы было время на то, чтобы привести систему в желаемое состояние, можно запланировать выполнение команды на гибернацию в определенное время. Это возможность скрипта, такой возможности нет в стандартных настройках.
Периодически бывают вопросы, как посмотреть содержимое оверлея, для этого в скрипт добавлен пункт отображения оверлея системного диска. Он добавлен как пример и реализован с помощью Unified Write Filter WMI т.к. содержимое оверлея нельзя посмотреть с помощью утилиты «uwfmgr».
А теперь ближе к практике
После добавления компонента фильтра записи добавьте задачу на перезагрузку с помощью соответствующего пункта меню скрипта. Измените уровни порогов на оптимальный. И защитите все тома несъемных дисков. Перезагрузите систему, чтобы настройки вступили в силу.
Для наглядной демонстрации работы фильтра записи, в наборе скриптов, рядом со скриптом настройки фильтра записи находится утилита «VirusEmulator.exe». Утилита размещает на рабочем столе указанное количество своих ярлыков. Если фильтр записи включен и защищает системный диск, то после перезагрузки все ярлыки исчезнут.
![](https://habrastorage.org/webt/dh/iu/lm/dhiulmijxufwcmg3ld2xds6l-00.png)
Для проверки работы автоматической перезагрузки скопируйте на диск файл, который больше уровня критического порога и система перезагрузится автоматически. Можно попробовать скопировать файл объемом больше оверлея, но медленные системы не всегда успевают перезагрузить систему до заполнения оверлея, тогда система покажет экран с надписью «Перезагрузка» и не сможет перезагрузиться. Такой системе потребуется жесткая перезагрузка.
Чтобы посмотреть на поведение системы в режиме HORM, включите режим HORM, выбрав соответствующий пункт меню скрипта. После успешного включения режима HORM, выберите пункт планирования гибернации, а затем введите через сколько минут нужно перевести систему в режим гибернации. После того, как будет запланирован переход в режим гибернации, приведите систему в то состояние, в котором ее необходимо загружать каждый раз.
Если Вы захотите выключить фильтр записи, когда у вас включен режим HORM, то сначала необходимо выполнить команду на отключение режима HORM, а затем выполнить команду на отключение фильтра записи. Но если Вы будете отключать фильтр записи с помощью скрипта, то скрипт автоматически отключит HORM перед выключением фильтра записи.
Послесловие
При настройке устройств фиксированного назначения на Windows 10 IoT Enterprise необходимо знать о ее специальных возможностях. Не исключено, что использование специальных возможностей позволит сэкономить на дополнительном ПО, которое может являться аналогом возможностей, которые уже есть в системе. Не исключено, что у дополнительного ПО могут быть преимущества перед стандартными средствами Windows, но, когда Вы что-то покупаете, необходимо понимать, за что именно Вы платите деньги. С помощью набора скриптов можно довольно быстро настроить специальные возможности Windows и сравнить их со сторонним ПО, чтобы принять взвешенное решение.
Но в некоторых случаях встроенных возможностей системы явно недостаточно, например, когда требуется специальная защита с централизованным управлением этой защиты. Или требуется централизованно отслеживать состояние тысяч или десятков тысяч устройств. Но это уже совсем другая история…
Если у вас остались вопросы относительно настройки и лицензирования Windows 10 IoT Enterprise, обращайтесь по адресу mse@quarta.ru или на сайт quarta-embedded.ru.
Ответы на некоторые вопросы Вы можете найти в нашей вики или на нашем YouTube-канале
Автор статьи: Борисенков Владимир, технический эксперт компании Кварта Технологии.