Компания
532,88
рейтинг
17 октября 2012 в 18:33

Разработка → Внедрение Enhanced Write Filter (EWF) tutorial

Расширенный фильтр записи (Enhanced Write Filter, EWF) — это дополнительный компонент, использующийся в Windows Embedded. EWF делает дисковый том доступным только для чтения. При этом операции записи, которые выполняются с данными, хранящимися на этом дисковом томе, перенаправляются в его наложение, которое может находиться на другом диске или в памяти компьютера. Windows рассматривает наложение EWF и его дисковый том как единое устройство. При этом фактически на дисковом томе не происходит изменений. Все изменения сохраняются только в наложении EWF. Изменения можно сохранить на дисковый том в любой момент времени.

Enhanced Write Filter может применяться в различных целях.

  • Enhanced Write Filter позволяет создать загрузочную Flash-карту системы Windows и уменьшить количество циклов записи на карту, тем самым увеличив срок ее службы.
  • При использовании SSD защита от записи с помощью EWF также позволяет увеличить срок службы диска.
  • Также можно использовать EWF для защиты ПК от последствий воздействия вирусов, троянов и прочих опасностей при работе неопытного пользователя в Интернете.

Я использовал EWF в Windows XP, чтобы обеспечить устойчивую работу компьютера.

Основной идеей было получить безопасную ОС для серфинга в Интернете. EWF позволяет уберечь ПК от последствий посещения развлекательно-информационных ресурсов. Не секрет, что в последнее время участились случаи недобросовестной рекламы. Зайдя на ресурс, где размещена реклама, можно подвергнуться различным атакам. Однако, при использовании EWF все изменения, произошедшие на системном диске, после перезагрузки не сохраняются, и система, подвергнувшаяся атаке, снова готова к работе. Вторым приятным моментом является то, что при работе через EWF в ОС не накапливаются изменения, замедляющие ее работу, и через полгода Windows XP работает также шустро, как в день установки ОС.

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

Установка EWF на Windows XP


1. Для установки EWF на Windows XP необходимо скачать архив EWF.zip.
В нем содержатся следующие файлы:
ewf.sys
EWFMGR.EXE
ewfntldr
ewf.reg

Файл ewf.sys копируем в %systemroot%\system32\drivers
EWFMGR.EXE в %systemroot%\system32.

2. Файл ewfntldr необходим для замены ntldr, находящегося в корневом каталоге системного диска. Не забудьте сделать копию оригинального файла, на случай если вы захотите отменить изменения.

3. Нам необходимо добавить информацию в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF.

Для этого надо дать пользователю, от имени которого вы работаете, доступ на запись в раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root.

По умолчанию к этому разделу только System имеет доступ на запись.

4. В реестр добавляется следующая информация:

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF]
"NextInstance"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF\0000]
"Service"="EWF"
"Legacy"=dword:00000001
"ConfigFlags"=dword:00000020
"Class"="LegacyDriver"
"ClassGUID"="{8ECC055D-047F-11D1-A537-0000F8753ED1}"
"DeviceDesc"="EWF"
"Capabilities"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_EWF\0000\Control]
"ActiveService"="EWF"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf]
"ErrorControl"=dword:00000001
"Group"="System Bus Extender"
"Start"=dword:00000000
"Type"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F}]
"UpperFilters"="Ewf"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf\Parameters\Protected\Volume0]
"Type"=dword:00000001

"ArcName"="multi(0)disk(0)rdisk(0)partition(1)"


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

6. Также можно перенести профиль пользователя на другой диск. В Windows XP для этого необходимо от имени учетной записи администратора перенести все профили, кроме администраторского, и исправить информацию о расположении в HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\SID\ProfileImagePath\.

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

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

Минусом является то, что подгружаемая информация и кэш браузера будут быстро накапливаться в профилях.

8. Остается только запустить EWF. Для этого используется команда ewfmgr c: -enable.

Cписок команд, с помощью которых можно управлять EWF:
  • ewfmgr c: -enable — включение EWF;
  • ewfmgr c: -commitanddisable — отключение EWF при следующей перезагрузке и сохранение всех изменений на диск при выключении/перезагрузке системы;
  • ewfmgr c: -commitanddisable -live — отключение EWF без перезагрузки системы (при этом информация на диск сохраняется непосредственно после выполнения команды);
  • ewfmgr c: -commit — сохранить все изменения на диск при перезагрузке или выключении ПК.

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

Если вы используете EWF только для защиты Flash-карты или SSD-диска от большого количества циклов записи/чтения, эту команду лучше всего поместить в автозагрузку.

Установка EWF на Windows 7


Установка EWF на Windows 7 возможна только в том случае, если вы используете EWF для SSD-диска.

Установка состоит из нижеперечисленных этапов.

1. Добавляем в реестр следующую информацию:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{71A27CDD-812A-11D0-BEC7-08002BE2092F}]
"UpperFilters"="Ewf"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ewf]
"ErrorControl"=dword:00000001
"Start"=dword:00000000
"Type"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Ewf\Parameters\Protected\Volume0]
"Type"=dword:00000001
"Enabled"=dword:00000001
"CompareBeforeAlloc"=dword:00000000
"DiskSignature"=dword:00000000
"PartitionOffset"=hex(b):00,00,00,00,00,00,00,00

2. Раскладываем файлы.
ewf.sys копируем в %systemroot%\system32\drivers
EWFMGR.EXE в %systemroot%\system32.

3. Теперь запускаем cmd, а в нем — утилиту diskpart.

4. Набираем «select disk nn», где nn — это номер диска (считается с 0).
Затем «detail disk»:



Нас интересует «Disk ID» (в русифицированной версии «ИД Диска»), запоминаем это значение.

5. Теперь набираем «select partition nn», где nn — номер.

Выводим информацию «detail partition»:



Нас интересует число, идущее после «Offset in Bytes» (в русифицированной версии «Смещение в байтах»).

6. Открываем в regedit раздел HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\servic es\Ewf\Parameters\Protected\Volume0 и редактируем значения:

DiskSignature — сюда вписываем «Disk ID»;
PartitionOffset — «Offset in Bytes».

7. Остается только включить EWF командой «ewfmgr c: -enable» и перезагрузить компьютер.

Подробно с EWF можно ознакомиться на сайте MSDN.

Автор: Константин Иванищев, ведущий специалист по ИБ Positive Technologies.
Автор: @ptsecurity
Positive Technologies
рейтинг 532,88

Комментарии (17)

  • –1
    А чем такой подход лучше/хуже загрузки с LiveCD?
    • 0
      Позволяет в любой момент замораживать/размораживать содержимое системного диска.
    • 0
      После загрузки с LiveCD невозможно сохранить измененное состояние ОС. Например – установленные обновления или дополнительно установленный софт.
  • +7
    Имел дело с этой штукой на моем первом нетбуке, eee701 4G который. Подтверждаю — система работает как озверевшая: SSD, один из первых, на 4 GB, обеспечивает высокие скорости random read, дисковый оверлей в памяти — космические скорости random и не только write.

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

    Одна из проблем была такая — при превышении определенного порога размера оверлея (т.е. при превышении определенного суммарного объема операций записи на защищенный том), система становилась нестабильной. И порог этот был порядка 350-400 Мб. Ради комфортной работы с нетбуком приходилось, конечно, пользоваться… Регулярно наводил мышь на значок в трее, смотрел не пора ли перезагружаться. Если не успел — система висла, не сохранив изменения на диск. Неоднократно терял таким образом какие-то скачанные файлы, например.

    Если топик-стартер скажет, что ewf живее всех живых, развивается и в нем правятся баги, то с удовольствием к нему вернусь — девушке на нетбук поставлю, например — он старенький у нее.
    • 0
      Спасибо, ваш комментарий очень удачно дополняет статью.

      К сожалению, по указанной ссылке на MSDN написано, что версия 2009 года, так что с обновлениями облом.
  • 0
    Если что — инсталлятор для 32x- битных систем вот тут
    2.ly/qsjh
    но с дополнительным функционалом — перемещение рабочего стола, appdata, документов и temp на другой диск
  • +1
    Я ставил версию для XP на CarPC года четыре назад. Эти файлы выдернуты из дистрибутива Windows XP/7 Embedded Edition.

    Поскольку все текущие операции кэшируются в RAM, нужно иметь хороший запас. По опыту, при 2 ГБ RAM система может повиснуть после операций с 1.5 ГБ файлами.

    Но скорость очень впечатляет — система грузилась за несколько секунд, нигде не подтормаживала.
  • 0
    Использую EFW на компьютере который стоит на кассе, и при помощи которого клиенты смотря фотографии на своих флешках, уже третий год никаких проблем, просто замечательная штука.
  • 0
    Много лет уже использую у себя монтирование корня в ro при необходимости всегда есть mount -o remount,rw /, аналог для unix, если кто вдруг не знает. По факту вещь замечательная.
    • 0
      Не совсем ясен посыл. Суть ewf — вместо физического тома запись происходит в RAM, при необходимости считать измененные данные — считывается сначала физический диск, потом к полученным данным применяются изменения, находящиеся в RAM, т.е. это оверлей.

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

      Заранее извиняюсь, что разжевываю все так подробно, но тут одно из двух — или вам и в самом деле нужна эта информация в именно таком, подробном, виде… или я серьезно ошибаюсь, как работает монтирование корня в Linux с опцией read only. В последнем случае, мне нужно пересмотреть свою жизнь)
      • 0
        О прошу прощения, выразился не совсем корректно, я конечно не имел в виду применение в лоб, скорее использование слоев в Union Filesystems, реализуется так www.logicsupply.com/blog/2009/01/27/how-to-build-a-read-only-linux-system/ Суть именно в том что корень находится в режиме ридонли, откуда он помещается в ramfs где с ним и работает система, при простой перезагрузке никакие изменения не сохраняются, но если нам нужны изменения — мы просто делаем «commit» в перемонтированную на чтение корневую систему.
        • 0
          А вот это уже отличная новость, то есть это в некотором роде аналог ewf? Можно ли добиться роста производительности благодаря сабжу?
          • 0
            Суть примерно та же что и ewf, о тонкостях и отличиях не скажу, windows не использую много лет и несколько теряюсь в нем. Использую такую связку на программных роутерах, где производительность файловой подсистемы мало на что влияет, по поводу прироста сказать сложно, теоретически должен быть. Тут скорее задача сохранить в здравии flash диски, на которых система и установлена. Но у меня специфика работы в основном с сетями и маршрутизацией. Дома стоят SSD диски, так что прирост в скорости врядли будет значительный, а удобство пострадает. Если вдруг у кого-то есть возможность проверить связку на десктопах — с удовольствием прочитаю отчет о приросте производительности.
  • 0
    Использую EWF в Windows Standard 7 Embedded. Сценарий похож на то, что у топикстартера. Работает вполне толково, лимит памяти, по ощущениям, побольше, чем в комментарии выше, но, когда в него упираешься, то получаешь от системы вежливое сообщение вместо зависания.
  • 0
    2ой .reg поправьте пожалуйста. да и еще ошибки есть.
    за пост спасибо
  • 0
    Есть еще очень неплохая фича — HORM — hibernate once, resume many — позволяет загружаться в состояние, сохраненное спящим режимом когда-то, при этом этот образ не меняется. В итоге загрузка системы в несколько раз быстрее.
  • 0
    На всякий случай.

    Сценарий использования EWF не в составе Embedded версий продукта является не поддерживаемым и нарушает лицензионное соглашение. Т.е. я не рекомендовал бы использовать его в производственном режиме, помимо исследований и экспериментов.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка