Здравствуйте, AlexanderDz, Вы писали:
AD>Здравствуйте, Sinix, Вы писали:
S>>Здравствуйте, AlexanderDz, Вы писали:
AD>>>Вопрос: кто встречался с задачей запрета на удаление файлов и как ее решил.
S>>Стандартное решение: выносим часть, которая требует повышенных прав в сервис (службу windows), запускаем службу от имени специально заведённого пользователя, раздаём этому пользователю права, остальным обрезаем.
AD>...
AD>Категорически согласен. У меня (моей организации) стандартная проблема и у нее есть стандартное решение. Увы, в стандратных условиях. Но, можно ли назвать условия стандартными если такой реорганизации надо будет подвергнуть несколько проектов на VB6 и Delphi?
Однако! Ну если перенести операции записи файлов в сервис связано с большими затратами, то можно перехватить Win32 вызовы CreateFile, WriteFile, CloseFile, DeleteFile, MoveFile и т.д. и перенести их сервис работающий под правами специального пользователя.
Тогда и не надо будет "высшего пилотажа" с file system filter. А то пока все отладишь BSOD насмотришься до посинения
Какие тут могут быть засады? Что надо использовать для перехвата Win API — кажется mhook?
Здравствуйте, bazis1, Вы писали:
B>Здравствуйте, AlexanderDz, Вы писали:
AD>>Здравствуйте, bazis1, Вы писали:
B>>>Напишите/закажите простой kernel-mode FS filter, который будет блокировать попытки удаления файлов в заданных директориях, если только они не исходят от одной из программ в белом списке.
AD>>Замечательная идея! Спасибо за совет!
AD>>Правда есть проблема с записью файлов на сетевой диск. Это означает что на всех компьютерах с которых доступен сетевой диск/каталог, должен быть установлен этот драйвер. Если на компьютере нет этого драйвера, то можно все и драйвер от этого не защитит — его-же просто нет. Но, надеюсь, тогда сетевые администраторы согласятся предоставить доступ к сетевому каталогу только с компьютеров с драйверами.
AD>>Этого всего не надо будет если драйвер работающий на файл сервере получит информацию о программе которая будет выполнять файловую операцию. Это возможно? Что-то мне слабо верится.
B>А не проще тогда расшарить без прав на удаление + сделать некий сервис на сервере, который по отдельному протоколу будет принимать запросы на удаление файлов от вашей программы? Соответственно, DeleteFile() в программе заменяем удаленным вызовом, и готово. То же самое можно сделать локально — user-mode сервис, сидящий от LocalSystem, по какому-нибудь xmlrpc принимающий запросы от вашей программы на удаление файлов, которые средствами Api из-под этого аккаунта удалить нельзя.
Спасибо за идею! Вот тут я пришел к почти такому-же решению:
http://rsdn.ru/forum/design/5812279.1Автор: AlexanderDz
Дата: 09.10.14
.
...
AD>Однако! Ну если перенести операции записи файлов в сервис связано с большими затратами, то можно перехватить Win32 вызовы CreateFile, WriteFile, CloseFile, DeleteFile, MoveFile и т.д. и перенести их сервис работающий под правами специального пользователя.
AD>Тогда и не надо будет "высшего пилотажа" с file system filter. А то пока все отладишь BSOD насмотришься до посинения
AD>Какие тут могут быть засады? Что надо использовать для перехвата Win API — кажется mhook?
Увы, увы... Таки попал в засаду. Наши продукты защищены продуктом SafeNet, в который встроена защита от перехватывания Windows API.
Тогда получается только фильтр файловой системы. К счастью, самому его кажется писать не надо — есть куча компаний которая предлагает драйверы выполняющие требуемые функции. Проще купить.