Заметки о Windows и других программных продуктах Microsoft...

Unified Write Filter в Windows 10

Unified Write Filter в Windows 10

Защита данных является крайне важной задачей и сегодня речь пойдет о унифицированном фильтре записи (Unified Write Filter, UWF), который позволит защитить ваши данные практически от любых нежелательных изменений.

Принцип работы UWF заключается в том, в том, что он перехватывает все операции записи на файловую систему и в системный реестр и перенаправляет их в изолированное виртуальное пространство (оверлей), в котором они сохраняются до ближайшей перезагрузки. После перезагрузки содержимое оверлея очищается, все произведенные изменения исчезают и система возвращается к исходному состоянию, в котором находилась на момент включения фильтра.

В операционных системах Windows фильтр UWF (или EWF) используется достаточно давно, однако раньше он был доступен только в редакциях Embedded, предназначенных для встроенных систем (банкоматы, POS-терминалы и т.п.). На данный момент фильтр входит в состав операционных систем Windows 10 редакций Enterprise (включая LTSB) и Education.

Установка фильтра

Фильтр UWF устанавливается как дополнительный компонент операционной системы. Установить его можно как из Панели управления, так и с помощью PowerShell.

Для установки из графической оснастки нажимаем Win+R и выполняем команду appwiz.cpl.

запуск оснастки Programs and features

 

В открывшемся окне выбираем «Turn Windows features on or off» и в разделе «Device Lockdown» отмечаем компонент «Unified Write Filter».

добавление компонента UWF из графической оснастки

 

Для установки с помощью PowerShell открываем консоль от имени администратора и выполняем команду:

Enable-WindowsOptionalFeature -Online -FeatureName ″Client-UnifiedWriteFilter″ -All

добавление компонента UWF с помощью PowerShell

 

Вне зависимости от выбранного способа после установки необходимо перезагрузить систему.

Включение и настройка фильтра

Для управления UWF предназначена специальная утилита командной строки uwfmgr.exe. Вывести справку по ней можно командой uwfmgr, запущенной без дополнительных параметров. Как видно из справки, все команды сгруппированы по разделам, каждый из которых отвечает за управление частью функционала. Например раздел filter отвечает за глобальные настройки UWF, раздел overlay — за настройки оверлея, и т.д. Впрочем обо всем по порядку.

справка по утилите uwfmgr

 

После установки компонента фильтр не активен, и первым делом его необходимо включить. Делается это следующей командой:

uwfmgr filter enable

Затем необходимо перезагрузить компьютер и фильтр готов к работе.

включение фильтра

 

Нужно знать, что при активации фильтра UWF в системе автоматически производятся определенные действия, направленные на оптимизацию его работы:

• Отключаются файлы подкачки;
• Отключается восстановление системы;
• Отключается служба SuperFetch;
• Отключается служба индексации файлов;
• Отключается режим быстрого запуска (Fast  start-up);
• Останавливается дефрагментация дисков;
• В BCD для настройки bootstatuspolicy устанавливается значение ignoreallfailures, что означает отключение режима автоматического восстановления при перезагрузке.

После включения некоторые настройки можно вернуть обратно, конечно с учетом особенностей UWF. Например можно включить файл подкачки, предварительно перенеся его на незащищенный раздел диска. А вот быстрый запуск UWF не поддерживает и включать его нельзя.

Следующее, что необходимо сделать после включения — это настроить виртуальный оверлей, в котором будет хранить данные фильтр. Вывести текущие настройки оверлея можно командой:

uwfmgr overlay get-config

Настройки следующие:

• Type — тип оверлея. Определяет, где будут храниться данные — в оперативной памяти (RAM) или на диске (DISK);
• Maximum size — максимальный размер оверлея;
• Warning Threshold — объем данных в оверлее, при достижении которого будет выдано предупреждение;
• Critical Threshold — объем данных в оверлее, при достижении которого будет выдано сообщение об ошибке;
• Freespace Passthrough — разрешает писать данные в любое свободное место на диске, не перенаправляя их в специально отведенный для этого файл. Этот параметр используется только при дисковом типе оверлея.

Что интересно, выводится два набора параметров, текущий и тот, который будет применен после перезагрузки.

просмотр настроек оверлея

 

Приступим к настройке. Тип оверлея по умолчанию RAM, его и оставим. Зададим максимальный размер оверлея в 4Гб:

uwfmgr overlay set-size 4096

Критический размер сделаем таким же:

uwfmgr overlay set-criticalthreshold 4096

а для предупреждения зададим размер в 3Гб:

uwfmgr overlay set-warningthreshold 3072

изменение настроек оверлея

 

Теперь можно включать защиту. В качестве объекта защиты нельзя указывать отдельные файлы\папки, только весь диск целиком. Включим защиту для диска С командой:

uwfmgr volume protect C:

включение фильтра для диска

 

После включения защиты перезагружаем компьютер. Затем открываем командную консоль и проверяем состояние защиты выбранного диска:

uwfmgr volume get-config C:

Как видите, состояние диска Protected, т.е. диск C находится под защитой фильтра.

просмотр настроек фильтра для диска

Проверка работы фильтра

Мы произвели базовую настройку UWF, теперь можно протестировать его работу. Для этого создадим самый обычный текстовый файл с именем TestUWF и сохраним его на диске С, в папке Documents.

создание тестового файла

 

Проверим, что файл успешно сохранен и перезагрузим компьютер.

проверка тестового файла до перезагрузки

 

После перезагрузки зайдем в папку Documents и убедимся, что файла там нет. Это и есть результат работы фильтра.

проверка тестового файла после перезагрузки

Сохранение изменений

Как видно из предыдущего примера, фильтр предотвращает любые изменения на защищаемом диске. Поэтому, если вам необходимо сохранить созданный файл, то изменения можно подтвердить (commit) командой, например:

uwfmgr file commit C:\Documents\TestUWF.txt

сохранение измененного файла

 

После этого систему можно смело перезагружать, файл никуда не денется. Более того, теперь его так просто не удалить, ведь после перезагрузки он опять появится на своем месте. Удаление файла возможно только через UWF, командой:

uwfmgr file commit-delete C:\Documents\TestUWF.txt

Эта команда окончательно удалит файл как с диска, так и из оверлея.

подтверждение удаления файла

 

Подобным образом можно сохранить изменения только для одного конкретного файла. Если указать директорию или раздел диска, то  будет выдана ошибка.

ошибка при сохранении

 

То же самое можно сделать и с изменениями в реестре. Например так мы сохраним созданный параметр TestUWF:

uwfmgr registry commit HKLM\SOFTWARE\TestUWF TestUWF

а так удалим его:

uwfmgr registry commit-delete HKLM\SOFTWARE\TestUWF TestUWF

подтверждение изменений в реестре

Исключения

Каждый раз подтверждать изменения довольно утомительно, кроме того можно забыть это сделать и потерять результаты своей работы. На этот случай фильтр предоставляет возможность вывести отдельные файлы и папки из под защиты, добавив их в исключения (exclusions). Однако здесь есть ограничения, так в исключения нельзя добавлять следующие системные объекты:

• \Windows;
• \Windows\System32;
• \Windows\System32\Drivers;
• \Windows\System32\config\DEFAULT;
• \Windows\System32\config\SAM;
• \Windows\System32\config\SECURITY;
• \Windows\System32\config\SOFTWARE;
• \Windows\System32\config\SYSTEM;
• \Users\<UserName>\NTUSER.DAT;
• Корень диска (напр. C: или D:);
• Файлы подкачки (pagefile.sys).

Все остальное можно добавить в исключения. Для примера добавим в исключения фильтра папку C:\UWF_Exclusion командой:

uwfmgr file add-exclusion C:\UWF_Exclusion

добавление папки в исключения фильтра

 

Проверить текущие исключения фильтра можно такой командой:

uwfmgr file get-exclusions

вывод списка исключений файлов

 

Удалить исключения можно такой командой:

uwfmgr file remove-exclusion C:\UWF_Exclusion

удаление исключений

 

Примечание. Обратите внимание, что для применения изменений в настройках фильтра практически всегда требуется рестарт.

В исключения можно добавлять и содержимое реестра, но не все, а только находящиеся в следующих разделах:

• HKEY_LOCAL_MACHINE\BCD
• HKEY_LOCAL_MACHINE\SYSTEM
• HKEY_LOCAL_MACHINE\SOFTWARE
• HKEY_LOCAL_MACHINE\SAM
• HKEY_LOCAL_MACHINE\SECURITY
• HKEY_LOCAL_MACHINE\COMPONENTS

Для примера попробуем добавить в исключения раздел реестра HKCU\System\CurrentControlSet\Policies:

uwfmgr registry add-exclusion HKCU\System\CurrentControlSet\Policies

И получим ошибку. А вот раздел HKLM\System\CurrentControlSet\Policies добавится без проблем, поскольку он находится в нужном месте.

управление исключениями реестра

 

Просмотр исключений реестра производится командой:

uwfmgr registry get-exclusions

Ну а для удаления исключений воспользуемся такой командой:

uwfmgr registry remove-exclusion HKLM\System\CurrentControlSet\Policies

вывод исключений в реестре

Стандартные исключения

Существуют стандартные, рекомендуемые Microsoft наборы исключений фильтра, необходимые для работы важных (или не очень) компонентов системы.

Windows Defender

• C:\Program Files\Windows Defender;
• C:\ProgramData\Microsoft\Windows Defender;
• C:\Windows\WindowsUpdate.log;
• C:\Windows\Temp\MpCmdRun.log;
• HKLM\SOFTWARE\Microsoft\Windows Defender;

Background Intelligent Transfer Service (BITS)

• % ALLUSERSPROFILE%\Microsoft\Network\Downloader;
• HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\BITS\StateIndex;

Сеть

Для возможности корректного добавления компьютера в проводные и беспроводные сети также необходимо добавить исключения.

Для беспроводных сетей:

• HKLM\SOFTWARE\Policies\Microsoft\Windows\Wireless\GPTWirelessPolicy;
• C:\Windows\wlansvc\Policies;
• HKLM\SOFTWARE\Microsoft\wlansvc;
• C:\ProgramData\Microsoft\wlansvc\Profiles\Interfaces\{<Interface GUID>}\{<Profile GUID>}.xml;
• HKLM\SYSTEM\CurrentControlSet\services\Wlansvc;
• HKLM\SYSTEM\CurrentControlSet\services\WwanSvc.

Для проводных сетей:

• HKLM\SOFTWARE\Policies\Microsoft\Windows\WiredL2\GP_Policy;
• C:\Windows\dot2svc\Policies;
• HKLM\SOFTWARE\Microsoft\dot3svc;
• C:\ProgramData\Microsoft\dot3svc\Profiles\Interfaces\{<Interface GUID>}\{<Profile GUID>}.xml;
• HKLM\SYSTEM\CurrentControlSet\services\dot3svc.

Daylight saving time (DST)

DST — механизм автоматического переключения на летнее\зимнее время. В России на данный момент неактуален, но на всякий случай.

• HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones;
• HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation.

Customer Experience Improvement Program (CEIP)

CEIP — программа улучшения качества обслуживания. Если вы вдруг случайно 🙂 согласились на участие в ней при установке системы, то потребуется внести следующие исключения:

• HKLM\SOFTWARE\Policies\Microsoft\SQMClient\Windows\CEIPEnable;
• HKLM\SOFTWARE\Microsoft\SQMClient\Windows\CEIPEnable;
• HKLM\SOFTWARE\Microsoft\SQMClient\UploadDisableFlag.

Кроме того, необходимо найти все папки, содержащие файлы с расширением .sqm, и также добавить их в исключения.

Примечание. Все настройки UWF также хранятся в реестре. Настройки автоматически добавляются в исключения фильтра и не отображаются в текущих исключениях.

Сервисный режим и обновление

Поскольку фильтр предотвращает внесение любых изменений, то установка обновлений становится весьма затруднительной. Поэтому для обновления операционной системы у UWF имеется специальный сервисный режим, для включения которого надо выполнить команду:

uwfmgr servicing enable

и перезагрузить систему.

включение сервисного режима

 

При загрузке в сервисном режиме запускаются специальные скрипты обслуживания и начинается установка обновлений. Никакого дополнительного вмешательства не требуется, надо только дождаться окончания установки.

загрузка сервисного режима

 

Что интересно, для загрузки в сервисном режиме создается специальный пользователь UWF-Servicing, под которым и производится установка обновлений. Пароль этого пользователя неизвестен и зайти под ним просто так нельзя,

вход в систему в сервисном режиме

 

но можно зайти под другим пользователем с административными правами и сбросить его пароль.

изменение пароля сервисного пользователя

 

Впрочем, делать это стоит разве что из любопытства, поскольку никаких действий в сервисном режиме производить нельзя. Единственное, что вы увидите, войдя под этим пользователем — это процесс выполнения сервисных скриптов.

сценарий обслуживания в сервисном режиме

 

По окончании установки обновлений система автоматически перезагрузится и выйдет из сервисного режима. Убедиться в этом можно командой:

uwfmgr servicing get-config

проверка настроек сервисного режима

 

Обновления можно установить и без перехода в сервисный режим. Для этого надо выполнить команду:

uwfmgr servicing update-windows

В таком варианте надо только дождаться завершения команды и вручную перезагрузить компьютер.

запуск обновления системы

 

Примечание. Честно говоря, большой разницы между сервисным режимом и установкой обновлений в текущей сессии я не нашел. Вроде как и там и там запускается один и тот же скрипт. Хотя в документации Microsoft рекомендуется для обновления по возможности использовать сервисный режим.

Отключение  фильтра

При необходимости фильтр можно отключить, частично или полностью. К примеру для остановки защиты диска C выполним команду:

uwfmgr volume unprotect C:

отключение защиты диска

 

А полностью отключить фильтр можно такой командой:

uwfmgr filter disable

отключение фильтра для файловой системы

 

Также отключить UWF можно через реестр. Для этого надо:

•  В разделе  HKLM\SYSTEM\ControlSet001\Services\uwfvol изменить значение параметра start на 4 ;
• В разделе HKLM\SYSTEM\ControlSet001\Control\Class\{71a27cdd-812a-11d0-bec7-08002be2092f}\Lower Filters удалить значение параметра uwfwol.

Такой способ может помочь в том случае, если система неработоспособна в результате работы фильтра.

Сброс настроек

Иногда может потребоваться вернуть настройки фильтра к первоначальным, которые были на момент включения. Произвести сброс настроек можно командой:

uwfmgr filter reset-settings

сброс настроек фильтра

Мониторинг

При использовании фильтра крайне важно помнить, что оверлей имеет ограниченный размер и при его превышении вас ждут неприятности. К примеру, если попытаться скопировать на защищенный диск файл, объемом превышающий размер оверлея, то по мере его заполнения процесс копирования остановится а система просто наглухо зависнет и перестанет отвечать на любые действия.

Для проверки оставшегося в оверлее места служит такая команда:

uwfmgr overlay get-availablespace

А вывести текущий объем данных в оверлее можно так:

uwfmgr overlay get-consumption

просмотр состояния оверлея

 

Также при настройке оверлея мы указываем параметры Warning Threshold и Critical Threshold, которые определяют уровень заполнения оверлея. Соответственно при достижении этих значений в системный журнал записывается соответствующее событие.

событие в системном журнале при переполнении оверлея

 

Обратите внимание, что кроме записи в журнал никаких сообщений или оповещений не выдается, поэтому о переполнении оверлея можно догадаться только по зависанию системы. Если вы хотите этого избежать, то придется придумывать какой либо механизм для проверки заполнения оверлея и выдачи предупреждений, поскольку штатных средств не предусмотрено.

Режим HORM

Расшифровывается HORM как Hibernate Once/Resume Many и является достаточно новой фичей, которая появилась в Windows 10 версии 1709. Суть HORM заключается в том, что с его помощью можно сохранить определенное состояние системы, включая запущенные программы, открытые файлы и т.п., и затем при перезагрузке каждый раз возвращаться к этому состоянию.

HORM имеет достаточно много ограничений:

• При использовании HORM все фиксированные диски должны быть защищены фильтром;
• Не допускается использование исключений для файлов, папок или разделов реестра;
• Оверлей должен работать только в режиме RAM, поскольку HORM не поддерживает работу с дисковым оверлеем.

Также необходимо отключить все функции, способные изменить файл гибернации, такие как гибридный спящий режим и режим быстрого запуска. Это необходимо для того, чтобы сохраненное в файле гибернации состояние оставалось неизменным.

Перед включением HORM необходимо убедится в том, что режим гибернации включен, после чего активировать режим командой:

uwfmgr filter enable-horm

После включения HORM надо создать привычную рабочую среду, после чего отправить компьютер в гибернацию, для создания исходного файла. Затем надо вывести компьютер из гибернации и перезагрузить его, и после перезагрузки вы получите свою рабочую среду, сохраненную фильтром.

активация режима horm

 

Еще одним важным моментом является то, что при включенном режиме HORM нельзя изменять настройки фильтра или отключать его. Если необходимо произвести какие либо действия с UWF, то сначала необходимо отключить HORM:

uwfmgr filter disable-horm

отключение режима horm

 

Примечание. Более подробно об использовании HORM можно узнать здесь.

Заключение

В заключение попробуем подвести итог, выделить плюсы и минусы использования UWF. К плюсам можно отнести:

+ Практически абсолютная защита системы от любого вида вредоносных воздействий. С системой можно производить любые эксперименты, ведь все изменения бесследно исчезнут после перезагрузки;
+ Ускорение работы системы при использовании RAM оверлея. Все дисковые операции производятся в оперативной памяти, что существенно ускорит работу.

Но есть и существенные минусы:

— Основной минус — это невозможность полноценной работы. Конечно, можно каждый раз подтверждать изменения или использовать исключения, но это достаточно неудобно. А установка какого либо ПО при работающем фильтре становится неразрешимой задачей;
— При использовании RAM оверлея необходимо иметь достаточное количество оперативной памяти. Также требуется самостоятельно отслеживать заполнение оверлея;
— Требуется тщательная настройка системы, отключение компонентов, использующих временные файлы.
— Функционал доступен только в старших редакциях Windows 10.

Вот как то так. Дополнительную информацию о UWF можно найти здесь: https://docs.microsoft.com/en-us/windows-hardware/customize/enterprise/unified-write-filte 

 
 
Комментарии

Пока нет комментариев.